
> 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.
A Modelsim simulation
© Eshaan Marocha 2025




