Skip to content

Repository files navigation

TotalMixer for Linux

GUI mixer application for RME Fireface audio interfaces on Linux.

Supported Hardware

  • RME Fireface 400

Features

  • 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 daemon exposes 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-remote package is installed (see Usage).

Dependencies

System Libraries

  • ALSA (libasound)
  • X11 and extensions (libx11, libxrandr, libxinerama, libxcursor, libxi)
  • OpenGL
  • libsystemd
  • liblo (OSC)

Runtime Dependency

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.

Installation

Arch Linux (AUR)

Binary Package (Recommended)

yay -S linux-fireface-mixer-bin

Source Package

yay -S linux-fireface-mixer

Manual Build

1. Install System Dependencies

Arch Linux

sudo pacman -S alsa-lib libx11 libxrandr libxinerama libxcursor libxi systemd liblo

Ubuntu/Debian

sudo apt install libasound2-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libsystemd-dev liblo-dev

2. Install snd-firewire-ctl-services

Follow 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.service

Verify the service is running:

systemctl --user status snd-fireface-ctl.service

3. Build TotalMixer

mkdir build
cd build
cmake ..
make

Usage

./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-daemon and totalmixer_cli binaries are gone. totalmixer-daemon is now totalmixer daemon, and the old CLI's control dump is now totalmixer info. The shipped systemd unit is unchanged in name (totalmixer-daemon.service); only its ExecStart moved to totalmixer daemon. Update any of your own scripts or drop-ins accordingly.

OSC Remote Control

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 desktop

Note: the endpoint binds all interfaces and is unauthenticated UDP. Use it only on a trusted LAN.

Headless Daemon

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 --help

The 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.service

To 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 1

Do 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.

Web Remote

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 --now

The web UI is unauthenticated and shares the OSC endpoint's trust model. Use it only on a trusted LAN.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

About

TotalMix-style GUI mixer for RME Fireface audio interfaces on Linux (ALSA), with OSC remote control

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages