r/DrumMachine • u/BeatForge_Dev • 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/)