- What is ScreamRouter
- Key Features
- Sources
- Receivers
- Use Cases
- Documentation
- Accessibility
- Example Devices
ScreamRouter is a versatile audio routing and management system with a Python frontend/configuration layer and C++ backend, designed for network audio streaming. It supports Scream and RTP audio sources, along with Scream receivers and web-based MP3 streamers.
- Configure Sources by IP address.
- Set up Routes between Sources and Sinks.
- Customize Sinks with Bit Depth, Sample Rate, Channel Layout, IP, and Port.
- Group Sources and Sinks for simultaneous control and playback.
- Volume control at every level: Source, Route, Sink, and Group.
- Custom mixer/equalizer/channel layout processor for minimal latency, implemented in both Python and C++.
- Adjustable equalization for any sink, route, source, or group.
- MP3 stream exposure for browser-based listening of all sinks.
- URL playback capability for sinks or sink groups.
- Milkdrop Visualizations via Butterchurn project.
- Keeps a rolling buffer of streams that can be used for time shifting/rewinding streams.
- Home Assistant Custom Component for managing configuration and media playback.
- Embedded noVNC for remote computer control.
- Automatic YAML saving on setting changes.
- Flexible plugin system for easy addition of new sources and functionalities.
- API and web interface for media control commands to containers.
- Advanced configuration management and solving system.
- Comprehensive logging system.
- RTP/Linux Source
- Windows Source
- ESP32S3 USB Audio Card and Toslink Senders
- Raspberry Pi Zero W / Raspberry Pi Zero 2 USB Gadget Sound Card Sender
- Amazon Music Docker Container
- Firefox Docker Container
- Spotify Docker Container
- Plugin system, including the ability to play arbitrary URLs out.
- Windows Receivers
- Raspberry Pi/Linux Receiver
- ESP32/ESP32s3 spdif/USB UAC 1.0 audio receiver
- ESP32 A1S Audiokit Receiver
- Android Receiver
- Python Scream Receiver
Integrate multiple Scream Sources and Receivers for seamless audio distribution throughout your home.
Implement granular volume control at both group and individual sink levels, ensuring optimal audio balance across your setup.
Utilize the 'Listen to Sink' feature to enable browser-based audio playback, enhancing accessibility and flexibility.
PCM receivers are available for most popular platforms, and for ones that can't receive PCM they can use the MP3 stream.
Employ the FastAPI interface or Home Assistant integration for automated management of sink activation, deactivation, and volume adjustments.
Incorporate sound effects and Text-to-Speech functionality into Home Assistant automations and play them from any speaker in your house for an enhanced smart home experience.
Utilize built-in equalization tools to optimize audio output, particularly beneficial for improving the performance of budget-friendly speakers.
Maintains a rolling buffer of the most recent 5 minutes of audio for each stream allowing rewinding to and replaying audio within the buffered timeframe.
- Docker ScreamRouter Install Guide
- Guide to running ScreamRouter in a Docker container.
- Debian ScreamRouter Install Guide
- Guide to running ScreamRouter on Debian.
- Audio Processor
- Details on the custom mixer/equalizer/channel layout processor.
- Configuration
- Description of ScreamRouter's routing configuration and configuration management system.
- RTP/Linux Source
- Guide to using RTP from PulseAudio and Pipewire as an audio source.
- Windows Source
- Information on configuring a Windows audio source.
- Docker Sources
- Information on Docker containers for various streaming services.
- ESP32S3 USB Audio Card and Toslink Senders
- Information on using an ESP32S3 as a USB sound card to stream to Scream, or an ESP32 as a TOSLINK bridge for Scream.
- Raspberry Pi Zero W / Raspberry Pi Zero 2 USB Gadget Sound Card Sender
- Information on configuring a Raspberry Pi Zero W / Raspberry Pi Zero 2 as a USB Gadget Sound Card that forwards to ScreamRouter.
- Amazon Music Docker Container for ScreamRouter
- Repo for running Amazon Music as a Docker container that outputs over RTP to ScreamRouter.
- Firefox Docker Container for ScreamRouter
- Repo for running Firefox as a Docker container that outputs over RTP to ScreamRouter.
- Spotify Docker Container for ScreamRouter
- Repo for running Spotify in a Docker container that outputs over RTP to ScreamRouter.
- Windows Receivers
- Information on configuring a Windows audio receiver.
- Raspberry Pi/Linux Receiver
- Information on configuring a Raspberry Pi or other Linux system as a Scream audio receiver and have it start on boot.
- ESP32/ESP32s3 spdif/USB UAC 1.0 audio receiver
- Repo for an esp32s3 spdif/USB UAC 1.0 audio receiver.
- ESP32 A1S Audiokit Receiver
- Repo for an ESP32 A1S Audiokit receiver.
- Android Receiver
- Repo for an Android receiver.
- Python Scream Receiver
- Repo for a Python receiver.
- User Interface Guide
- Documentation on using the ScreamRouter web interface.
- Chrome App
- Guide to installing it as an app using Chrome.
- VNC Integration
- Guide to using the embedded noVNC for remote computer control.
- Swagger Documentation
- Swagger Docs for ScreamRouter API.
- API Structure
- Overview of the API structure and available endpoints.
- Plugins System
- Documentation on the flexible plugin system for adding new sources and functionalities.
- Source Command Receiver
- Information about the command receiver module for remote control.
- Home Assistant Integration
- Instructions for integrating ScreamRouter with Home Assistant.
ScreamRouter aims to be accessible to those with visual impairments. To this effect, the UI has been designed with tooltips and alt tags on every element and can be used from a keyboard.
If you encounter any issues affecting accessibility, please file an issue on GitHub.