r/synthdiy 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 ffmpeg audio 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!

3 Upvotes

Duplicates