▶︎ •၊၊||၊|။||||။၊|၊၊၊၊||၊|။||||။၊|||၊|။||||။၊၊၊||၊|။||||။၊|၊၊||၊|။||||။၊||•
________ ___ _________ ___ ___ ________ ________ ________
|\ ___ \ |\ \ |\___ ___\ |\ \|\ \ |\ __ \ |\ __ \ |\ __ \
\ \ \_|\ \ \ \ \ \|___ \ \_| \ \ \\\ \ \ \ \|\ \ \ \ \|\ /_ \ \ \|\ \
\ \ \ \\ \ __ \ \ \ \ \ \ \ \ \\\ \ \ \ _ _\ \ \ __ \ \ \ \\\ \
\ \ \_\\ \ |\ \\_\ \ \ \ \ \ \ \\\ \ \ \ \\ \| \ \ \|\ \ \ \ \\\ \
\ \_______\\ \________\ \ \__\ \ \_______\ \ \__\\ _\ \ \_______\ \ \_______\
\|_______| \|________| \|__| \|_______| \|__|\|__| \|_______| \|_______|
Control music effects and volume live with just your hands — no controllers, no knobs.
- Python 3.10+
- Webcam
- Audio output device
- Any MP3 file (bring your own)
git clone https://github.com/belubeluga/dj-turbo.git
cd dj-turbo
python -m venv myVenv
source myVenv/bin/activate # Windows: myVenv\Scripts\activate
pip install -r requirements.txtpython main.py path/to/your/song.mp3DJ Turbo uses your webcam and MediaPipe to track both hands in real time. Each hand has a distinct role:
Make a gesture to apply an audio effect:
| Gesture | How to do it | Effect |
|---|---|---|
| ✊ Fist | Close all fingers tight | Silence |
| 🖐 Spread | All five fingers open | Volume boost (+6 dB) |
| 👌 OK | Thumb and index form a circle, other fingers down | Highpass filter — cuts bass |
| 👎 Bad | Thumb and index pointing ~90° apart | Lowpass filter — cuts treble |
| 🤏 Pinch | Thumb and index very close, other fingers down | Volume cut (-10 dB) |
| 🤌 Great | Thumb and index as close as possible (tighter than pinch) | Pitch shift up (+7 semitones) |
No gesture detected = no effect, clean audio.
Open your palm (spread), then rotate your wrist:
- Rotate clockwise → louder
- Rotate counter-clockwise → quieter
Keep any other gesture and the volume stays locked at the last level.
| Key | Action |
|---|---|
s |
Swap which hand controls effects vs volume |
q |
Quit |
The current hand assignment is always shown at the bottom of the window.
MIT — see LICENSE.
████████████████████████████████████████
████████████████████████████████████████
██████▀░░░░░░░░▀████████▀▀░░░░░░░▀██████
████▀░░░░░░░░░░░░▀████▀░░░░░░░░░░░░▀████
██▀░░░░░░░░░░░░░░░░▀▀░░░░░░░░░░░░░░░░▀██
██░░░░░░░░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░░██
██░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░██
██░░░░░░░░░░░░░░░░░▄▀░█░░░░░░░░░░░░░░░██
██░░░░░░░░░░████▄▄▄▀░░▀▀▀▀▄░░░░░░░░░░░██
██▄░░░░░░░░░████░░░░░░░░░░█░░░░░░░░░░▄██
████▄░░░░░░░████░░░░░░░░░░█░░░░░░░░▄████
██████▄░░░░░████▄▄▄░░░░░░░█░░░░░░▄██████
████████▄░░░▀▀▀▀░░░▀▀▀▀▀▀▀░░░░░▄████████
██████████▄░░░░░░░░░░░░░░░░░░▄██████████
████████████▄░░░░░░░░░░░░░░▄████████████
██████████████▄░░░░░░░░░░▄██████████████
████████████████▄░░░░░░▄████████████████
██████████████████▄▄▄▄██████████████████
████████████████████████████████████████
████████████████████████████████████████