Control a DJ interface using hand gestures through your webcam.
| Control | Function | Behavior |
|---|---|---|
| 🎯 CUE | Jump to cue point | Seeks to beginning for preview |
| Start playback | Continues from current position | |
| ⏸️ PAUSE | Pause playback | Maintains position for resume |
| 🎤 VOCAL | Toggle vocals | Real-time on/off at current position |
| 🎶 INSTRUMENTAL | Toggle instrumental | Real-time on/off at current position |
- Track Progress Bars: Real-time position with time display (mm:ss)
- Jog Wheel Indicators: Moving position markers
- Stem Status Display: Visual confirmation of vocal/instrumental state
- Independent Visualization: Each deck shows separate progress
- Python 3.9 - 3.12 (MediaPipe compatibility requirement)
- 64-bit Operating System (Windows/macOS/Linux)
- Webcam (built-in or external)
- Audio files with stems (see "Add Your Music" section below)
-
Clone the repository:
git clone https://github.com/pattssun/air-dj.git cd air-dj -
Create virtual environment:
python -m venv venv source venv/bin/activate -
Install dependencies:
pip install -r requirements.txt
-
Clone the repository:
git clone https://github.com/pattssun/air-dj.git cd air-dj -
Create virtual environment:
python -m venv venv venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
source venv/bin/activate
python air_dj.pyvenv\Scripts\activate
python air_dj.pyAir DJ works with stem-separated audio files (vocals + instrumental tracks).
Quick Start:
- Try it immediately: Run
python air_dj.py- includes 2 copyright-free example songs! - Add your music: Get stem-separated songs from fadr.com (free AI separation)
- Create folders in
songs/directory:Artist - Song Name/ - Add required files:
Vocals - Song.mp3andInstrumental - Song.mp3
python air_dj.pyChoose your songs from a numbered menu. BPM sync enabled by default.
python air_dj.py --default # Skip song selection, use preset songs
python air_dj.py --unsync # Disable BPM synchronization between decksAir DJ is available under MIT License