All posts

Introducing Bassline Junkie

I’ve been working on Bassline Junkie for a while now, and it’s time to properly introduce it to the world.

What is it?

Bassline Junkie is a hardware sound synthesizer — a real, physical instrument you can touch, twist, and play. It’s a classic subtractive synth architecture: oscillators, filters, envelopes, and LFOs — the building blocks of synthesis that have been around since the 1960s, but implemented with modern tools and an open-source mindset.

The architecture

The project is split into two main parts:

The Interface

The control surface is built around an STM32 Nucleo-F411RE running Zephyr RTOS. Four CD4067 analog multiplexers scan all the knobs and buttons, while a PCA9685 drives the LED feedback. The interface communicates via USB MIDI and a high-speed 1 Mbaud UART link.

Every control on the panel — three oscillators, a multi-mode filter, three ADSR envelopes with loop mode, three LFOs, and a modulation matrix — is mapped to MIDI CC messages across multiple channels. A 7-segment LED display lets you browse and recall 128 presets stored in flash.

The PCB was designed in Eagle, hand-soldered, debugged with a logic analyzer, and iterated through multiple revisions to get the layout right.

The Sound Engine

The synthesis engine is written in C++ and runs on Linux using ALSA for audio output. It’s built with CMake and supports both native x86 compilation and ARM cross-compilation via Buildroot, so it can run on embedded Linux boards.

The engine handles all the DSP: oscillator waveform generation, filter processing, envelope shaping, and LFO modulation. It receives MIDI CC messages from the interface board and turns them into sound.

Why build it?

Because I wanted to understand every layer — from the analog multiplexer scanning loop to the DSP algorithm shaping the waveform. Commercial synths are black boxes. This one isn’t.

Building your own synth means you can:

  • Learn how synthesis actually works at every level
  • Customize the signal chain however you want
  • Fix things when they break (and they will break)
  • Share what you’ve learned with others

What’s next?

The firmware and sound engine source code are available on GitHub. The hardware has gone through several prototype iterations and I’ll be sharing more about the design process in future posts.

If you’re into synthesizers, embedded systems, or just like building things — stay tuned.


Check out the source code: Sound Engine · Interface Firmware