GUI mixer application for RME Fireface audio interfaces on Linux.
- RME Fireface 400
- Mixer view - canonical TotalMix-style 3-row layout (hardware inputs, software playback, hardware outputs). Selecting an output edits its submix.
- Matrix view - full crosspoint grid, kept in sync with the mixer view.
- Level meters - hardware metering with a -90 dBFS range, RMS bar plus peak-hold line, and overload indication.
- Per-channel Mute / Solo / stereo Link on outputs, and per-submix Mute on input/playback sources.
- OSC remote control - bidirectional Open Sound Control endpoint to drive and observe the mixer over the network (see Usage).
- Headless daemon -
totalmixer daemonexposes the same OSC endpoint with no GUI or display dependency, for running the mixer on a headless server (see Usage). - Web remote - optional browser-based control from phones and tablets, launched from the GUI when the separate
linux-totalmix-web-remotepackage is installed (see Usage).
- ALSA (
libasound) - X11 and extensions (
libx11,libxrandr,libxinerama,libxcursor,libxi) - OpenGL
- libsystemd
- liblo (OSC)
Required: snd-firewire-ctl-services
This project requires snd-fireface-ctl-service to manage ALSA controls for the Fireface hardware. The service must be running before launching the GUI.
yay -S linux-fireface-mixer-binyay -S linux-fireface-mixersudo pacman -S alsa-lib libx11 libxrandr libxinerama libxcursor libxi systemd liblosudo apt install libasound2-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libsystemd-dev liblo-devFollow the installation instructions at: https://github.com/alsa-project/snd-firewire-ctl-services
After installation, enable and start the service:
systemctl --user enable snd-fireface-ctl.service
systemctl --user start snd-fireface-ctl.serviceVerify the service is running:
systemctl --user status snd-fireface-ctl.servicemkdir build
cd build
cmake ..
make./build/totalmixer_gui # GUI mixer
./build/totalmixer info # dump card controls to stdout (add --card N to pick a card)
./build/totalmixer daemon # headless OSC daemon (see below)The GUI will display an error if snd-fireface-ctl.service is not running.
The headless totalmixer binary is a multicall executable: totalmixer <command>. Run totalmixer --help for the command list.
Upgrading from 0.3.x: the separate
totalmixer-daemonandtotalmixer_clibinaries are gone.totalmixer-daemonis nowtotalmixer daemon, and the old CLI's control dump is nowtotalmixer info. The shipped systemd unit is unchanged in name (totalmixer-daemon.service); only itsExecStartmoved tototalmixer daemon. Update any of your own scripts or drop-ins accordingly.
Enable the OSC server under Control tab -> [ OSC Remote ] (default: receive on UDP 7001, send feedback on 9001). Values are normalized floats in 0.0 .. 1.0; toggles use 0/1.
Address namespace (receive and send are symmetric):
| Address | Meaning |
|---|---|
/out/fader/N /out/mute/N /out/solo/N /out/link/N |
Output N fader / mute / solo / stereo link |
/in/fader/N /in/mute/N |
Input N source gain / mute in the current submix |
/pb/fader/N /pb/mute/N |
Playback N source gain / mute in the current submix |
/submix/select/N (recv) |
Switch the submix being edited |
/submix/current (send) |
Currently active submix number |
/query (recv) |
Request a full state dump |
The desktop sends feedback to the first host that contacts it, so a controller should send any message (e.g. /query) once to register. Quick test with the liblo CLI tools:
oscsend 127.0.0.1 7001 /out/fader/1 f 0.5 # set output 1 fader to mid
oscdump 9001 # observe feedback from the desktopNote: the endpoint binds all interfaces and is unauthenticated UDP. Use it only on a trusted LAN.
For a headless server (no X11/OpenGL), totalmixer daemon runs the same OSC endpoint without the GUI. It has no meters and no display dependency. OSC is always enabled in daemon mode (the preferences.json enabled flag is ignored).
./build/totalmixer daemon # ports from preferences.json
./build/totalmixer daemon --osc-in 7005 --osc-out 9005 --card 1
./build/totalmixer daemon --helpThe daemon exits non-zero if snd-fireface-ctl.service is not running or the card is unavailable, so a service manager can own the retry policy. A systemd user unit is installed (disabled by default):
systemctl --user enable --now totalmixer-daemon.service
systemctl --user status totalmixer-daemon.serviceTo override ports or select a card, use a drop-in rather than editing the shipped unit:
systemctl --user edit totalmixer-daemon.service
# [Service]
# ExecStart=
# ExecStart=/usr/bin/totalmixer daemon --osc-in 7005 --osc-out 9005 --card 1Do not run the daemon while a GUI instance also has its OSC server enabled: both would try to bind the same UDP ports. Use one or the other, or give them distinct ports.
The web remote lets you control the mixer from a phone or tablet browser over the LAN. It is a separate program, linux-totalmix-web-remote, packaged on its own (yay -S linux-totalmix-web-remote-bin). The linux-fireface-mixer package lists it as an optional dependency.
Once it is installed and on your PATH, open Control tab -> [ Web Remote ] in the GUI and press Start. The GUI launches the bridge as a child process, wiring it to the mixer's current OSC ports, and shows the LAN URL to open (default http://<your-ip>:8451). Stopping it (or closing the GUI) shuts the bridge down.
For a headless daemon, the GUI is not involved; run the bridge as its own systemd user unit instead:
linux-totalmix-web-remote systemd install --enable --nowThe web UI is unauthenticated and shares the OSC endpoint's trust model. Use it only on a trusted LAN.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.