An experimental DJ program with 4 decks that currently runs in the terminal (only kitty/wezterm)
Find a file
2024-10-09 02:50:50 +00:00
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

version badge gpl license badge


LibreCDJ

An experimental playground to develop a 4 Deck DJ Software for Linux.

Screenshot of the gui
Current 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

  • 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

Architecture