MUXBOX: A FPGA based drum pad

MUXBOX: A FPGA based drum pad

> Featured on University of Toronto
Course Page

> Featured on University of Toronto Course Page

> What it does

MUXBOX is a standalone FPGA drum pad and loop recorder: twelve sound pads trigger ROM-backed drum samples that are mixed in real time and sent to the on-board Audio CODEC. A 120 BPM metronome keeps time, a rotary encoder controls master volume (with the level shown on the 7-segment/HEX display), and you can record up to 16 seconds of a pattern, save it, and play it back on loop.

Internal wiring of the board

> Hardware

We designed and built the entire physical system ourselves. I modeled the enclosure and the twelve soft pads in Fusion 360, 3D-printed the shell in PLA and the button caps in TPU, and hand-wired the sound pads and control buttons to the DE1-SoC via the GPIO header. The breadboard section routes pad/button signals, and the FPGA handles debouncing/edge-detection and audio generation/mixing before driving speakers through the board’s Audio CODEC.

3D model of the enclosure

> FPGA design

My Verilog focused on the audio recording and playback engine. The logic for this section of the project is based around a finite-state machine. In the recording state, each pad press is logged as a timestamped event: a 30-bit clock cycle counter captures when the hit occurs, and a 12-bit button mask captures which of the 12 pads were hit. After 16 seconds, we enter a waiting state to let the user keep or discard the recording. When the user presses the play button, we enter the play state and a counter replays the sequence by matching the running time against the saved timestamps and re-triggering the same pad sounds, producing a loop of the recorded beat. We synthesized the design with Intel Quartus Prime and verified module behavior with ModelSim testbenches.

The video below shows a demo of the project

A Modelsim simulation

© Eshaan Marocha 2025