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