All Projects
M5StickRotary EncoderArduinoBLE MIDIOpenSCADSwiftXcode

DIY CDJ with DAW Integration

Completed PrototypeMulti-phase build

A custom DIY CDJ + DAW workflow using an M5Stick controller, BLE MIDI signaling, and a Swift macOS app for hands-on music control.

Project Snapshot

System Type

Hybrid hardware + desktop music interaction system

Controller Build

M5Stick + rotary encoder + custom 3D-printed DJ disk

Signal Layer

BLE MIDI transport for low-friction wireless control

Desktop App

Swift/Xcode macOS app for track loading, playback control, and effects routing

Key Contributions

  • Designed and assembled the physical CDJ controller hardware around an M5Stick and rotary input
  • Implemented Arduino firmware logic to translate controller movement into usable control signals
  • Used BLE MIDI to bridge hardware input into a software music workflow without wired dependency
  • Modeled and iterated the CDJ platter component in OpenSCAD for custom 3D printing
  • Built a Swift macOS app in Xcode to load preloaded and user-selected tracks for manipulation
  • Implemented effect-target toggling so the same controller could drive timeline movement or selected effects
  • Added a keyboard drum-pad layer to support rhythm performance alongside track manipulation

Research Focus

  • How far can low-cost custom hardware go in delivering expressive music control?
  • What interaction mappings feel intuitive when one control surface serves multiple musical parameters?
  • How can hardware and software be coordinated so control switching remains clear during performance?
  • What minimum feature set creates a genuinely usable custom production workflow?

Active Build Tracks

  • Physical controller design and assembly
  • Firmware development for input capture and BLE MIDI output
  • Desktop audio app logic for track loading and playback state
  • Control mapping layer for timeline/effect targeting
  • Performance augmentation via keyboard drum-pad interaction
DIY CDJ with DAW Integration

Overview

This project explored building a custom music production experience from both hardware and software. I designed and assembled a DIY CDJ controller using an M5Stick, a rotary encoder, and a 3D-printed DJ disk, then paired it with a custom macOS app built in Swift/Xcode. The app could load songs (preloaded or newly imported), and the controller could manipulate playback timing and an enabled audio effect in real time. I also built a keyboard-driven drum pad so performance could combine tactile hardware input with software-triggered percussion.

My Role

I owned the full stack end to end: hardware design and prototyping, firmware implementation, and desktop app development. On hardware, I used Arduino for the M5Stick logic and BLE MIDI signaling, and modeled the physical wheel component in OpenSCAD for 3D printing. On software, I built the macOS DAW-style app in Swift using Xcode, including song loading flow, control routing from the CDJ input, and drum pad interaction mapped to keyboard input.

Outcome

The final prototype delivered a stable custom performance workflow that felt expressive and responsive. I was able to switch tracks, control timeline movement, and apply selected effects from the DIY CDJ while layering drum pad input from the keyboard. Even without commercial hardware, the system proved that low-cost custom components can support a practical and creative music production setup. Although I no longer have the original hardware or project photos, the project remains a strong example of cross-domain building across embedded systems, interaction design, and audio software development.

Process Snapshots

M5Stick Controller

M5Stick Controller

Rotary Encoder

Rotary Encoder

Custom DJ Disk

Custom DJ Disk