Brume is a 24-voice multi-timbral desktop synth for the CM5
Posted by oceanwaves 6 days ago
Comments
Comment by oceanwaves 6 days ago
Loosely inspired by Norns, Brume is a four-part multi-timbral synthesizer that runs on a Raspberry Pi Compute Module 5. It has four synth engines and six voices per part, a shared filter section feeding an effects chain, a sandboxed Lua scripting layer, and a 10.1-inch touchscreen UI. A single USB cable presents the device to a host computer as a class-compliant audio and MIDI interface ala Elektron Overbridge.
Quick BoM to get started: cm5+carrier, any of the endless 10-inch hdmi touchscreens for RPI, and a midi controller. Novation Launch Control XL 3 and Korg nanoKONTROL2 are supported out-of-the box.
* While you can run this on a Raspberry Pi 5, Pi 5s don't expose USB OTG. The carrier board is what makes the class-compliant Audio+MIDI over USB work.
I hope this can be fun for others!
https://brume.aftertone.co https://github.com/aftertonesignal/brume
Comment by swatcoder 6 days ago
You may already know this, but the voice engines implementations have a lot of room for performance improvement, and you could probably squeeze out even more voices, routing patterns, secondary features, etc if you tighten them up.
They're written clearly but kind of like textbook/reference implementations rather than the more aggressively fine-tuned versions you'd see in proprietary commercial synths.
You can probably coach Claude through improving them, but you generally need to do that explicitly.
Lowest hanging fruit for your design would be to have it organize control flow (and apply effective math tricks) to minimize branching and to organize data references with cpu cache more in mind.
On a more ambitious scale, working over blocks instead of samples, and using vector instructions where practical would go a long way. The latency impact of working on small blocks (i.e ~8/16/32 samples) instead of individual samples is irrelevant but the performance opportunities that open up for many algorithms is huge.
Comment by oceanwaves 6 days ago
Make no mistake, I'm not promoting this thing like a product, though. I'm aware there's a big gulf between this and a commercialized purpose-built product.
That said, there is a ton of headroom right now on the 8GB CM5 reference platform and I felt some of these optimizations were overkill in this pre-1.0 phase. The FX bus is already block-based, but the voice synthesis path remains pretty simple. Some of the block scaffolding for the better approach exists and I'll plan to evolve in that direction.
Thank you.
Comment by jagged-chisel 6 days ago
Comment by oceanwaves 6 days ago
Just wasn't part of the motivation. I wasn't looking for another standalone macOS app or VST. Wanted something tactile (controller I already have muscle memory with) and a touchscreen UI.
Comment by jagged-chisel 6 days ago
Comment by oceanwaves 6 days ago
Comment by rigonkulous 6 days ago
Comment by Fraterkes 6 days ago
Comment by oceanwaves 6 days ago
No hesitation to enthusiastically share that it was actually a parallel goal to see just how deeply I could go while keeping it stable, performant, and extensible for the long term.
I ended up building a lot of ancillary agent infrastructure to push the determinism in all the fanned out work slices, too.
Comment by rigonkulous 6 days ago
(Apologies if you already do, haven't looked for sources yet..)
Comment by oceanwaves 6 days ago
Comment by rigonkulous 5 days ago
Comment by oceanwaves 5 days ago
Comment by rigonkulous 4 days ago
Comment by oidar 6 days ago
Comment by oceanwaves 6 days ago
The Rust engine underneath isn't even Pi-locked. It'll run on macOS/Linux, but the touch UI and USB-audio bridge is device specific so it would be fairly useless.
You might be over-indexing on "build this". It's actually just slapping a few 1-click shopping parts together and running two commands in your shell to have a playable instrument.
I've got a vague idea to maybe pull the FM engine out some day since I love having a DX-style synth that actually has a filter, but my plugin work is generally focused on effects processing and not voicing, so I dunno...
Comment by jagged-chisel 6 days ago
Comment by oceanwaves 6 days ago
Less DSP headroom; swatcoder's optimization suggestions in this thread become more important. Simultaneous 4-part polyphony might push things. You'd probably want at least a 4GB board.
Also, the brumectl installer will not attempt to set up the USB audio/MIDI bridge (Meridian) on a CM4. That auto-configures only on a CM5 for now.
Would be a pretty light lift to get that working if you are interested.
Comment by Zetaphor 6 days ago
Comment by oceanwaves 6 days ago
Rest assured, if you click the "READ THE MANUAL" button on the landing page you will see screenshots of all synth engines and configuration screens.
The repo's README also starts with a screenshot.
Thanks.
Comment by embedding-shape 6 days ago
Looks really fleshed out and fun though, now I just need to get my hands on a proper carrier board it seems, as the audio out of the box for standard CM5 development I/O board is kind of horrible.
Comment by oceanwaves 6 days ago
Comment by Zetaphor 6 days ago
Comment by oceanwaves 6 days ago
https://brume.aftertone.co/lcxl3.png
Cheers.
Comment by oceanwaves 6 days ago
This was really designed to be surfaced in a DAW via USB.
Comment by embedding-shape 6 days ago
Comment by oceanwaves 6 days ago
Comment by Quiark 6 days ago
Comment by oceanwaves 6 days ago
I wanted to design, learn, build, and have fun with something physical on my desk that I could swipe, turn, twist, and make sounds with.
https://brume.aftertone.co/lcxl3.png
Just a hobby project I'm sharing.
Comment by Quiark 5 days ago
Comment by 8bitsrule 6 days ago
Comment by reality_inspctr 6 days ago
Comment by ConanRus 6 days ago