forked from OpenDJLab/LibreDJ
An experimental DJ program with 4 decks that currently runs in the terminal (only kitty/wezterm)
- Rust 99.5%
- Nix 0.4%
- Shell 0.1%
LibreCDJ
An experimental playground to develop a 4 Deck DJ Software for Linux.
Screenshot of the guiCurrent screen design for future gui version:
Screenshot of the gui
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
Esc=> Open MenuArrow Keys=> navigate library/file browser/popupEnter=> Load track to current DeckF1-F4=> Switch between Deck 1-4q=> Cuew=> Playa s d f=> Nudgingz x c v=> Adjusting Pitchi o p [ ]=> Set loop starting at current playheadI O P { }=> Set loop endingt at current playheadn m , . /- => Jump x beats forwardN M < > ?=> Jump x beats backwardsSpace=> Switch waveform zoomF10=> Debug logs
To quit the program first press Esc, then q.
Customize Keybindings
The Keybindings are almost completely customizable.
To do so, copy resources/keybindings/en_US.ron to ~/.config/librecdj/keyboard.ron.
You can extend/alter the bindings map. Please have a look at the file and if you have
questions feel free to ask.