diff --git a/testing/scream/APKBUILD b/testing/scream/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..fe2fbe61e9c8a21481114ddf62a0a1b5e54ade54
--- /dev/null
+++ b/testing/scream/APKBUILD
@@ -0,0 +1,56 @@
+# Contributor: Patrick Gaskin <patrick@pgaskin.net>
+# Maintainer: Patrick Gaskin <patrick@pgaskin.net>
+pkgname=scream
+pkgver=3.4
+pkgrel=0
+pkgdesc="client for scream virtual network sound card for Microsoft Windows"
+url="http://github.com/duncanthrax/scream"
+arch="all"
+license="MS-PL"
+options="!check" # no test suite provided
+makedepends="alsa-lib-dev pulseaudio-dev"
+subpackages="$pkgname-alsa $pkgname-alsa-openrc:alsa_openrc:noarch $pkgname-pulse"
+source="$pkgname-$pkgver.tar.gz::https://github.com/duncanthrax/scream/archive/3.4.tar.gz
+	scream-alsa.initd
+	scream-alsa.confd
+	"
+
+# Note: Init scripts are only provided for scream-alsa, because pulseaudio is
+#       meant to be run per-user, and scream-raw doesn't have any output
+#       methods built-in.
+
+build() {
+	make -C "$builddir"/Receivers/raw
+	make -C "$builddir"/Receivers/alsa
+	make -C "$builddir"/Receivers/pulseaudio
+}
+
+package() {
+	install -D -m755 "$builddir"/Receivers/raw/scream-raw "$pkgdir"/usr/bin/scream-raw
+	install -D -m755 "$builddir"/Receivers/alsa/scream-alsa "$pkgdir"/usr/bin/scream-alsa
+	install -D -m755 "$builddir"/Receivers/pulseaudio/scream-pulse "$pkgdir"/usr/bin/scream-pulse
+}
+
+alsa() {
+	pkgdesc="$pkgdesc (ALSA client)"
+	mkdir -p "$subpkgdir"/usr/bin
+	mv "$pkgdir"/usr/bin/scream-alsa "$subpkgdir"/usr/bin/scream-alsa
+}
+
+alsa_openrc() {
+	# based on default_openrc, but needs to be here because it's for a subpackage
+	pkgdesc="$pkgdesc (ALSA client) (OpenRC init scripts)"
+	install_if="openrc $pkgname-alsa=$pkgver-r$pkgrel"
+	install -D -m755 "$srcdir"/scream-alsa.initd "$subpkgdir"/etc/init.d/scream-alsa
+	install -D -m755 "$srcdir"/scream-alsa.confd "$subpkgdir"/etc/conf.d/scream-alsa
+}
+
+pulse() {
+	pkgdesc="$pkgdesc (PulseAudio client)"
+	mkdir -p "$subpkgdir"/usr/bin
+	mv "$pkgdir"/usr/bin/scream-pulse "$subpkgdir"/usr/bin/scream-pulse
+}
+
+sha512sums="89a466798526d37b9ecebeab232dc6ad85f9b526214053bee542dee4cfed462d380b1e302a705a9704b6a1ada2514cdb2288b3abccdd089c747ff0eb027dce31  scream-3.4.tar.gz
+781ea7e73c253c9f2b6022b448a5f10bd3fbd9650b111e0ae5e68c8610e6bef13dffc113d15f53cb17fd12771247ab4b35ed0f0cb519ed67efd2ffc0d9297914  scream-alsa.initd
+46572f29830962c1f3201d5f3716ddbb05f7387a1fd547138bb6bd945f336b35c1a84c68b6d0f9071b994c632ae37c8d271f67541ae99247463dcb88a5186bfa  scream-alsa.confd"
diff --git a/testing/scream/scream-alsa.confd b/testing/scream/scream-alsa.confd
new file mode 100644
index 0000000000000000000000000000000000000000..cbbae362669d92c9c2e76d56d6a3c95768e111ef
--- /dev/null
+++ b/testing/scream/scream-alsa.confd
@@ -0,0 +1,20 @@
+# The network interface to use. Specify either the IP or
+# interface name. When using multicast, this interface is
+# used for IGMP. When using unicast, only binds to this
+# interface.
+#SCREAM_INTERFACE=""
+
+# The port to connect to. Applies to unicast and multicast.
+SCREAM_PORT="4010"
+
+# Use multicast for streaming.
+SCREAM_MULTICAST="yes"
+
+# The multicast group address.
+SCREAM_MULTICAST_GROUP="239.255.77.77"
+
+# The target latency in ms.
+SCREAM_LATENCY="50"
+
+# The ALSA output device for playback.
+SCREAM_DEVICE="default"
diff --git a/testing/scream/scream-alsa.initd b/testing/scream/scream-alsa.initd
new file mode 100755
index 0000000000000000000000000000000000000000..8cc9b4fdc72a4611b483a4767ad10bba9fa3c0cc
--- /dev/null
+++ b/testing/scream/scream-alsa.initd
@@ -0,0 +1,21 @@
+#!/sbin/openrc-run
+
+command="/usr/bin/scream-alsa"
+command_background=true
+pidfile="/run/${RC_SVCNAME}.pid"
+
+command_args="-p ${SCREAM_PORT} -t ${SCREAM_LATENCY} -o ${SCREAM_DEVICE}"
+
+if [ "${SCREAM_MULTICAST}" = "yes" ]; then
+	command_args="${command_args} -g ${SCREAM_MULTICAST_GROUP}"
+else
+	command_args="${command_args} -u"
+fi
+
+if [ ! -z "${SCREAM_INTERFACE}" ]; then
+	command_args="${command_args} -i ${SCREAM_INTERFACE}"
+fi
+
+depend() {
+	need net alsa
+}