Academic
OtoDecks — Dual-Deck DJ Application (OOP Finals)
2025 · 6 weeks
Grade · 84/100
About this project
OtoDecks is a dual-deck DJ desktop app built in C++ with the JUCE framework for the OOP Finals (University of London). Two independent players share a mixer, with waveforms, a playlist table, and a custom vinyl-jog UI. Features: 🎛️ Two independent decks sharing a `MixerAudioSource` ▶️ Per-deck controls: play/pause, loop, reset, volume, speed, low-pass and high-pass `IIRFilterAudioSource` 💿 Custom `VinylComponent` with rotation tied to playback position and drag-to-seek 🌊 `AudioThumbnail` waveform displays with click-and-drag seeking 📋 `TableListBox` playlist with multi-format import (WAV, MP3, FLAC), save/load, per-row load-to-deck, remove, and search filtering ⌨️ Spacebar toggles play/pause on both decks when main window is focused 🎨 `CustomLookAndFeel` subclassing `LookAndFeel_V4` for metallic vertical sliders and circular buttons Going beyond the spec: - Full pluggable audio graph: file decode → transport → resampling → low-pass → high-pass - Custom vinyl-jog control using `std::function` callbacks to keep UI decoupled from audio - Timer-based UI sync so waveform playheads and vinyl rotation track playback without tight coupling - Dual-build setup (Projucer + CMake) with background texture and bespoke styling
Tech stack
- C++
- JUCE
- CMake
- Object-Oriented Programming
- Audio Programming