Skip to content
/ bousse Public

A lightweight DJ booth software with trackpad support for personal use

Notifications You must be signed in to change notification settings

leopnt/bousse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bousse

Lightweight DJ booth software with trackpad support for personal use (work in progress)

preview

Why 🤠

Because

  • I didn't find a DJ software that gives me a similar experience as having only two turntables and a simple mixer.
  • Album covers are very important to find tracks quickly. I want to navigate my music files the same way I look for records.
  • I don't have a DJ controller on me right now. I wanted to test if a trackpad was sufficient (spoiler: it is).
  • I wanted to gain experience building projects in Rust and I thought this was a very complete one (multi-threading, physics simulation, events, UI, audio, DSP, MIDI controller, ...). Fortunately I don't have to go low level as good quality libraries already exist such as winit, kira, midir, egui 🙏. Happens that everything was working as intended, so I just had to glue the parts together and simulate the turntable's behavior.

NB

This is specifically built for my needs. Some parts are hard-coded, such as the MIDI controller or the trackpad's behavior. Still, it should be easy to adapt anything thanks to the Controller interface that I tried to make as universal as possible. It can receive events from any source and dispatch it to the right object (e.g. turntable, mixer).

Features ⚙️

MVP Features

This is the features that I consider the bare-minimum to be able to mix tracks together.

  • Adjustable channel volumes
  • Per-channel, toggle-able cue
  • Adjust cue mix between master and cue
  • Adjust target pitch of playing sound
  • Quick load audio files to a deck via drag & drop
  • Display visual feedback such as track progression
  • Start and stop a track
  • Controllable "vinyl" speed via keyboard and touchpad
    • Playing backward
    • Fast pitch variation
    • Soft touch / temporary pitch shift
    • Hard touch / Cueing
    • Fast seek
  • Controllable via MIDI controller

Additional Features (but still important 🤓)

  • Have a debug panel
  • Some parts controllable via UI
  • Apply EQ filtering to channels
  • Dynamic display of album / track covers
  • VU / RMS real time volume meter visual feedback
  • File explorer
  • Recording of the master track to a file

Additional Features (Not required right now)

  • Simple and elegant visualization for current track / mixer state
  • Output to multiple devices

How to 👨‍💻

Only tested with Macbook air m1 (nice trackpad) and Akai MidiMix hardware.

  1. Clone this repo

    git clone [this repo]
  2. Build and execute

    cargo run --release

    This is important to run in --release mode as audio loading is orders of magnitude slower in debug mode.

  3. Have fun 🕺💃🪩

About

A lightweight DJ booth software with trackpad support for personal use

Resources

Stars

Watchers

Forks

Languages