1. Description

This project is a software mixer designed to route various inputs (local or remote applications and physical sources through line-inputs) to outputs (headphones, power amplifiers, home theater receivers, or other computers). Aimed to replace A/V receivers and preamps, the mixer supports muxing stereo, 5.1, and 7.1 sources to any speaker configuration. A filter suite including low/high-pass and roomEQ filters is built in. By default, 5.1/7.1 sources bypass band-pass filters such as the subwoofer low-pass.


The user interface is OpenGL accelerated (60 fps) and intended for touch screens. LIRC compatible remote controls are supported, as are LCDproc compatible HTPC case screens. To power on/off amplifiers and other equipment, the software is capable of sending trigger signals via Arduino either directly or on sleep timers.

Anyone with several computers or A/V receivers or headsets probably has, at some point, struggled with mixing the inputs to the outputs. A preamp or an A/V receiver is usually appointed to this task, but they're like so 90's. This program offers a software solution to the problem, with a focus on user interface and visuals. Although not meant for audio professionals, no compromises have been made with the features that are implemented. Internally, audio is handled as 96/192 kHz 32b float streams of 2 to 8 channels per source/destination.

As an example use case, my personal audio system consist of the following hardware orchestrated by this software:

thumbnail From top to down: a headphone amplifier, a 5-channel power amplifier, a computer with quality analog outputs, and a subwoofer. (See the full setup here)
thumbnail A touch screen connected to the computer, displaying the mixer. Inputs consist of local mplayer instances on the HTPC, remote audio (through netjack) from a Linux desktop, analog line-in from a Windows desktop, and digital line-in from a Mac desktop.

2. User interface

thumbnail This is the main control screen. The inputs are on the left and the outputs on the right. The light arrows represent connections.
thumbnail In order to add or remove a connection, tap the input to select, followed by a tap on the output. Double-tapping toggles the mute.
thumbnail The volume slider appears by tapping a volume bar. Just drag your finger along the slider.
After keeping your hands off the screen for some time (by default 30 seconds), the most active output is monitored in full screen and selected to be the target of remote control. A volume slider and visualizers appear. A muted output to the bottom.

3. Audio

The program connects to audio inputs and outputs via low latency JACK servers, which can also be used as ALSA backends. For outputs capable of hardware volume control (such as analog sound card outputs), volume is set using an ALSA interface to avoid loss of signal resolution.

For visualization, a frequency domain presentation, per-channel power bars (with signal clipping detection), and time domain signal state monitors are available. The signal state monitors scale dynamically according to signal amplitude.

Filters are currently imported from matlab, but a built-in filter wizard is on its way..

4. Download

Will be released under the GPL