1
0
Fork
You've already forked librecdj
0
forked from OpenDJLab/LibreDJ
An experimental DJ program with 4 decks that currently runs in the terminal (only kitty/wezterm)
  • Rust 99.2%
  • Nix 0.7%
  • Shell 0.1%
2025年05月29日 01:39:40 +02:00
assets gui: Implement edit metadata popup 2025年05月27日 22:27:42 +02:00
crates gui: add top/bottom margin to waveform 2025年05月29日 01:39:40 +02:00
learning-resources Here we go 2022年03月15日 23:58:54 -04:00
resources/keyboard_bindings keybindings: Fix in en_US that Shift + m and Shift + n were not working properly 2025年05月25日 23:00:30 +02:00
scripts Update bump-version script 2024年09月27日 22:34:06 +02:00
.envrc Upgrade lofty 2024年05月17日 03:31:28 +02:00
.gitignore Add nix package building 2024年09月27日 22:32:17 +02:00
Cargo.lock gui: Implement edit metadata popup 2025年05月27日 22:27:42 +02:00
Cargo.toml gui: add deck indicator 2025年05月24日 20:16:34 +02:00
CHANGELOG.md keybindings: Fix in en_US that Shift + m and Shift + n were not working properly 2025年05月25日 23:00:30 +02:00
default.nix Add rust fastcomp profile for faster incremental builds 2025年01月12日 02:59:43 +01:00
flake.lock - Load keyboard mapping from ~/.config/librecdj/keyboard_mapping.ron 2024年10月09日 04:11:47 +02:00
flake.nix - Load keyboard mapping from ~/.config/librecdj/keyboard_mapping.ron 2024年10月09日 04:11:47 +02:00
README.md Update README about keybindings 2024年10月17日 12:44:33 +00:00
rust-toolchain.toml Fix shell nix to use nighty 2025年01月12日 02:59:43 +01:00
shell.nix Nix: Add gdb to shell.nix for debugging 2025年01月12日 03:04:06 +01:00
TODO.md Remove bugs from todo.md 2024年07月23日 18:54:45 +00:00



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

  • Esc => Open Menu
  • Arrow Keys => navigate library/file browser/popup
  • Enter => Load track to current Deck
  • F1-F4 => Switch between Deck 1-4
  • q => Cue
  • w => Play
  • a s d f => Nudging
  • z 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

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.

Architecture