explaingit

aftertonesignal/brume

24RustAudience · developerComplexity · 5/5LicenseSetup · hard

TLDR

Brume turns a Raspberry Pi Compute Module 5 into a standalone software synthesizer with a 10-inch touchscreen, four synthesis methods, and 24 simultaneous voices, connecting to any mixer over USB without special drivers.

Mindmap

mindmap
  root((Brume))
    What it does
      Software synthesizer
      24 voices
      Standalone instrument
    Synthesis Types
      FM synthesis
      Granular synthesis
      Harmonic synthesis
      Timbral synthesis
    Tech Stack
      Rust
      Lua scripting
      iced UI
    Hardware
      Raspberry Pi CM5
      USB audio MIDI
      10-inch touchscreen
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a standalone hardware synthesizer using a Raspberry Pi CM5 and a 10-inch touchscreen with no PC required during performance.

USE CASE 2

Create evolving, complex sounds using FM, Harmonic, Timbral, or Granular synthesis with per-voice filtering and shared effects.

USE CASE 3

Connect Brume to a DAW or mixer over USB as a class-compliant audio and MIDI device without installing any drivers.

USE CASE 4

Write Lua scripts to add custom modulation logic or effects beyond what the built-in step sequencers provide.

Tech stack

RusticedLuaMIDIRaspberry Pi CM5

Getting it running

Difficulty · hard Time to first run · 1day+

Requires a Raspberry Pi Compute Module 5 with USB device mode enabled, a compatible 10-inch touchscreen, and hardware assembly before any software install.

You can use, modify, and share this freely, but any distributed version must also be open-source under the same GPL-3.0 license.

In plain English

Brume is a software synthesizer that turns a Raspberry Pi Compute Module 5 into a standalone music instrument. It generates sounds entirely from math rather than recorded audio samples, meaning there are no audio files on the device. The whole system runs on a small single-board computer paired with a 10-inch touchscreen display, and it connects to a regular computer or mixer via a single USB cable, appearing as a standard audio and MIDI device without needing any special drivers. The synthesizer has four independent parts, each capable of playing up to six notes at once, for a total of 24 simultaneous voices. Each part can use one of four sound generation methods: FM synthesis (sounds built from mathematically interacting waves), Harmonic synthesis, Timbral synthesis, and Granular synthesis (which generates texture by rapidly layering tiny sound fragments). Each voice also has its own filter, which shapes the tone, and the output runs through a shared effects chain that includes saturation, chorus, delay, and reverb. Modulation, which lets sounds change and evolve over time, is handled per part through two low-frequency oscillators and two step sequencers. There is also a scripting layer that accepts small programs written in Lua, a lightweight scripting language, so more technically inclined users can write custom control logic or effects. MIDI, the standard protocol for connecting music hardware, works over USB or through a physical MIDI input. The project is written in Rust and is built around the Raspberry Pi CM5 specifically because that module supports USB device mode, which is required for the audio and MIDI bridge to work. The touchscreen interface uses a graphics framework called iced. Brume is pre-1.0 and maintained by one person as a hobby project. Hardware parts lists, installation guides, and deployment instructions are included in the repository. The license is GPL-3.0.

Copy-paste prompts

Prompt 1
I'm building Brume on a Raspberry Pi CM5, walk me through the hardware parts list and the initial software installation steps.
Prompt 2
Show me how to write a Lua script for Brume that modulates filter cutoff frequency using the output of a step sequencer.
Prompt 3
How do I configure Brume's four synthesis parts so each uses a different synthesis method and responds on its own MIDI channel?
Prompt 4
Walk me through Brume's USB audio setup so my MacBook recognizes it as a class-compliant audio interface without installing drivers.
Prompt 5
I want to use Granular synthesis in Brume, explain how the granular mode works and how to shape its texture using the LFO modulation.
Open on GitHub → Explain another repo

← aftertonesignal on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.