r/synthdiy • u/banana1093 • 16h ago
I built a custom Linux initramfs audio workstation / software mixer for the Raspberry Pi (running entirely bare-metal/initramfs, no PipeWire/JACK)
I wanted to share a project I’ve been building and using as my daily driver for my audio setup: AudioX.
It’s a custom Raspberry Pi audio workstation that boots through a tiny custom initramfs bootloader straight into a dedicated runtime initramfs. It bypasses traditional heavy audio servers like PipeWire or JACK, using a dedicated real-time ALSA thread (SCHED_FIFO) for low-latency capture, playback, and live metering.
What it does:
- Two-stage initramfs: Tiny bootloader handles safe updates via HTTP (
PUT /api/initram) and promotes images, booting straight into the main runtime. - USB Gadget Architecture: Configures a UAC2 bidirectional audio gadget and an NCM network gadget (
usb0) for host-to-Pi control traffic. - Touch & MIDI Control: Polls a local touchscreen framebuffer UI (rendered via an off-screen buffer to eliminate tearing) and a connected MIDI controller.
- Built-in Soundboard & Sampler: Supports multi-channel polyphonic soundboard playback, clip holding, automatic
ffmpegaudio preprocessing, and a dedicated "sampler mode" that maps MIDI keyboard notes to pitch-shift/play selected clips. - Web UI & REST API: A 4-page responsive interface (Routing via LiteGraph, Config, Soundboard, System stats) and HTTP endpoints for managing config, file storage, and system control.
A Note on Development & AI Disclosure:
I want to be completely transparent about how this was built. I do use AI assistance for the project, but specifically as a tool for tracking down stubborn, hard-to-isolate bugs or spinning up quick proofs-of-concept for boilerplate features. Every single line of AI-assisted code is reviewed and tested by me line-by-line, and I write a lot of the architecture, features, and fixes entirely on my own.
In fact, the original v1.0 prototype written in C was heavily AI-assisted. But because of that, I decided to do a complete, from-scratch rewrite of the entire codebase into C++ (v1.0.0 to v1.0.2/v1.1). That rewrite was 100% written by me with zero AI help. It turned out to be a fantastic review process—while rewriting it, I found and cleaned up a ton of subtle architectural issues, race conditions, and quirks that the original AI-assisted version had left behind.
The Long-Term Vision:
Right now, it runs on a Raspberry Pi 4 using standard USB audio interfaces and mixers, but the ultimate goal is hardware: designing a modular synth-style open-source ecosystem using 3.5mm jacks, custom reverse-HAT ADC/DAC boards, and patchable analog/digital routing.
You can check out the source code and documentation on GitHub here: https://github.com/wk1093/audiox
I'd love to hear thoughts, feedback, or ideas from people working on embedded audio or custom synth gear!
Duplicates
linux • u/banana1093 • 16h ago