A terminal-based DJ mixer for live performance with TidalCycles. Built in Rust with ratatui, it provides real-time EQ, filtering, crossfading, and sample pads for mixing audio from MPV and SuperCollider.

  • Dual-deck mixerwith per-channel fader, pan, 3-band EQ, LPF/HPF
  • DJ centerwith crossfader, cue mix, headphone/booth outputs
  • Sample pads— 4x4 grid with sequencer
  • Auto-discoveryof MPV sockets, SuperCollider, PulseAudio, PipeWire, JACK sources
  • SuperCollider integration— custom SynthDefs for mixer channel processing
  • Vim navigation— hjkl throughout, 3-level mode system

  • Rust

  • Nerd Fonts— required for icons (rewind, fast-forward, etc.)
  • MPV— media playback with IPC socket support
  • SuperCollider(optional) — for TidalCycles integration

git clone https://github.com/l00sed/termixer.git
cd termixer
cargo install --path .

cargo build # debug
cargo build --release # optimized with LTO

Auto-discover audio sources

cargo run

Specify MPV sources explicitly

cargo run -- -s "Deck A" /tmp/mpv-a.sock -s "Deck B" /tmp/mpv-b.sock

With music and samples directories

cargo run -- -m ~/Music -S ~/Samples

mpv --input-ipc-server=/tmp/mpv-music.sock music.mp3

| Flag | Description |
| -s, --source NAME SOCKET | Add an audio source (MPV IPC socket) |
| -m, --music-dir PATH | Directory for audio file browser |
| -S, --samples-dir PATH | Directory for sample pad files |
| -d, --discover | Auto-discover audio sources (default) |
| -h, --help | Show help |

| Key | Action |
| Tab/h/l | Switch between panes (Deck A, DJ, Deck B, Master) |
| Enter | Enter control select mode |
| Esc | Go back one level |
| ? | Toggle help overlay |
| q | Quit |

| Key | Action |
| j/k | Navigate controls up/down |
| h/l | Adjust value / toggle EQ kill switch |
| J/K | Coarse adjustment (0.2) |
| +/- | Fine adjustment (0.05) |
| m/s | Toggle mute / solo |
| c | Center pan or crossfader |
| 0 | Reset control to default |

| Key | Action |
| A | Open source picker for Deck A |
| B | Open source picker for Deck B |
| P | Toggle sample pads mode |

MIT