Devlog
Engineering notes. Specific, dry, usually too long.
-
The 2× button that did nothing
Niner 1.0 is out. The release was held up by one bug: the in-DAW UI scale control resized the plugin window but not the controls. The cause sat one layer down in egui-baseview, which ignored egui's zoom factor. Here is the fix.
-
Niner v0.7.6: in-plugin MIDI Learn for relative encoders
Right-click any knob, wiggle the encoder, the binding sticks. Three encoder encodings auto-detect, bindings persist across DAW reload, and MIDI events now apply at the sample they arrive on instead of at the next buffer boundary.
-
You wrote, I fixed it: Niner v0.7.1 (and v0.7.2 a few hours later)
Seven UI bullets a tester sent the morning v0.7.0 shipped. Seven UI bullets that landed in v0.7.1 a week later. Plus a status-flash fix and a factory-bank refactor that snuck out as v0.7.2 the same afternoon.
-
I renamed my plugin two weeks after launch
Shipped a kick synth called Slammer. Found out two weeks later that another company already shipped a plugin called Slammer. Renamed to Niner, kept the DSP, broke a few things on purpose, here's what migrated cleanly.
-
The knob I removed from my plugin
Niner shipped with a VEL knob that did nothing in every context a solo producer uses. I removed it instead of justifying it.
-
Why I stopped trusting `tanh` for kick-drum distortion
Symmetric tanh is great on steady-state signals and quietly wrong on a kick drum. Here's what tanh distortion does to a transient, and what Niner ships instead.
-
Three things I got wrong about diode ladder self-oscillation
I broke my diode ladder filter three ways getting self-oscillation right: symmetric diodes, lazy feedback, and a solver that exploded above 15 kHz.
-
Bouncing a plugin to disk without touching the audio thread
Niner's BOUNCE button renders a one-shot to WAV while live audio keeps flowing. Here's how I kept it deterministic, off the audio thread, and bit-identical.
-
Hello from a fresh repo
What this blog is for, what gets written here, and what doesn't.