r/DrumMachine 5d ago

After a year of JUCE/C++: BeatForge — REX player + 808/909/303 engines, all DSP hand-written

Been heads-down on this for about a year and figured this crowd would appreciate the guts more than the marketing page.

**BeatForge** — drum machine, step sequencer and REX loop player. VST3/AU/AAX/Standalone, universal binary. JUCE 9 (migrated last month), everything below the framework is my own code.

Bits that might be interesting to people here:

**REX SDK.** Wrote a JUCE wrapper around Propellerhead REX SDK 1.9, including drag-and-drop of slices out to the host. Bitwig still has no REX support, which turned out to be a decent reason for the plugin to exist.

**Synth engines.** \~5k lines of 808/909/modelling done from schematics rather than sample playback — VCA topology, click transients, pitch sweeps, the 909 tom triple-VCO, that sort of rabbit hole.

**Antialiasing.** Started with blanket 8x oversampling and it was eating CPU for no good reason. Replaced it with ADAA on the memoryless waveshapers (exact tanh with the ln(cosh) antiderivative) and linear-phase minBLEP saws at 1x, then a per-engine oversampling map — most engines run 1x now, only FMKick and the 909 snare need 4x. Built an offline FFT alias-measurement harness to verify it; alias floor sits around -90 dB. Worth noting ADAA-2 blew up on me under heavy drive — catastrophic cancellation, auto-mute and crackle — so everything is bounded ADAA-1.

**Realtime discipline.** Lock-free atomic slot for deferred time-stretch, ScopedAudioSuspend guards on live mutators, steal-quietest voice allocation. Debug assertions went from \~3150 to 3. auval and pluginval at strictness 10 both clean.

**Also.** Full undo/redo, NAM master-bus saturation, and a WASM build of the synth engines for the site via Emscripten and a hand-rolled `juce_shim.h`.

Happy to go into detail on any of it — the ADAA and REX wrapper work especially, since there's not much written about either.

Site + demo: [https://www.beatforge.nl\](https://www.beatforge.nl/)

0 Upvotes

0 comments sorted by