An experimental DJ program with 4 decks that currently runs in the terminal (only kitty/wezterm)
assets | ||
crates | ||
learning-resources | ||
scripts | ||
.envrc | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
README.md | ||
rust-toolchain.toml | ||
shell.nix | ||
TODO.md |
LibreCDJ
An experimental playground to develop a 4 Deck DJ Software for Linux.
Current screen design for future gui version:
Goals
- 4 Decks
- Good beat jumping/looping
- Good performance
- Low latency
- As best as possible playback/resampling
- Minimal & clean user interface
- Good library management
- Completely usable with Keyboard
Non-Goals
- No mixing/eq/effects. Use an external mixer or something like equis
- Session management. Use qpwgraph for this
- Radio Broadcasting
- Stem seperation (I'm up to support stem files though)
- Rekordbox/Serato export/import
- If there's a good crate, maybe though
Supported Hardware
- Denon SC2000
How to run
Make sure you have pipewire/jack installed and a rust compiler. Also i recommend using kitty as a terminal (or any terminal supporting key release events).
- git clone the repo
- PIPEWIRE_QUANTUM=256 PLAYLISTS=/path/to/playlists LIBRARY=/path/to/your/music cargo run --release
Keybindings
- Arrow Keys => navigate library/file browser
- Enter => Load track to current Deck
- F1-F4 => Switch between Deck 1-4
- q => Cue
- w => Play
- a,s,d,f => Nuding
- y,x,c,v => Adjusting Pitch
- i,o,p,ü,+ => Set loop starting at current playhead
- I,O,P,Ü,* => Set loop endingt at current playhead
- n,m,,,.,- => Jump x beats forward
- N,M,;,:,_ => Jump x beats backwards
- Space => Switch waveform zoom
- F10 => Debug logs
- End => Exit program