screamplay

A command-line player that streams audio files to any Scream receiver over the network — no virtual sound card needed.

Source on GitHub The Scream project pipewire-scream (virtual sink)
AI-generated code. Developed with the assistance of an AI agent (Gemini CLI) with minimal human intervention. Review the code before production use.

What it does

Build

# Debian/Ubuntu
sudo apt install build-essential pkg-config libsndfile1-dev libsamplerate0-dev
# Fedora/RHEL
sudo dnf install gcc make pkgconf-pkg-config libsndfile-devel libsamplerate-devel
# Arch
sudo pacman -S base-devel pkgconf libsndfile libsamplerate

git clone https://github.com/zirize/screamplay.git
cd screamplay
make
sudo install -m755 screamplay /usr/local/bin/   # optional

Usage

./screamplay [options] <audio_file>
FlagLong formDescription
-H <host>--hostTarget receiver IP (default 239.255.77.77)
-P <port>--portTarget UDP port (default 4010)
-v--verbosePrint file info and resampling details
-h--helpShow help and exit
# default Scream multicast broadcast
./screamplay music.flac

# a specific receiver
./screamplay -H 192.168.1.100 -P 4010 music.flac

# see what it decided about rate, channels and resampling
./screamplay -v music.ogg

Receivers

Any standard Scream receiver: the Unix receiver from the main Scream repository (./scream -o alsa or -o pulse) on Linux, ScreamReader on Windows. scripts/setup_scream_receiver.sh downloads and builds the Unix receiver into vendor/ for local testing.

ScriptDescription
install_libsndfile.shInstalls libsndfile on Debian/Ubuntu or Arch
install_samplerate.shInstalls libsamplerate on Debian/Ubuntu or Arch
setup_scream_receiver.shBuilds the official Scream Unix receiver locally
debug_capture.shRuns a receiver in raw mode and dumps PCM for analysis

Testing

pip install pytest
pytest tests/ -v

The suite generates a dummy WAV, starts a mock UDP receiver, runs screamplay, and validates that the Scream protocol header — sample rate, bit depth, channels — is formed correctly.

Troubleshooting

Licence

GNU Lesser General Public License v2.1.