BLUNT was written from scratch. Three months from an empty directory to something that holds up in a session, and the order things happened in says more about building one of these than any feature list would.
Layout first
The first month is almost entirely panel work. The editor gets a contract, the window settles at the 780×620 it is laid out for, and the controls stop moving around every time something changes underneath them.
That sounds like procrastination. It is the opposite. You cannot judge what a filter sounds like while the thing you are turning jumps to a different place each build. Fix the surface, then you can trust your ears about everything behind it.
The second row
A comb bank tuned to a chord hands you the chord. What I wanted was to filter those chords again, and that is the whole reason the second row exists. One row gives you a resonator with a tone control on the end. Two rows give you a comb chord going into a four-pole low-pass, or into a SEM at the edge of its resonance, which is a far larger instrument than either half on its own.
It went in early in September, a few days after the formant. Within a day or two the rows became genuinely separate engines instead of two sets of controls sharing one, because sharing one is the thing that limits the scope you just opened up.
The models, and how close they are
Row 1 is the resonator: off, a bank of one to six tuned combs, or a formant model of four parallel bandpasses blended on the Bark scale with a nasal zero and a vocal tract you can stretch. The comb came first. The formant went in at the start of September, before the second row existed.
Row 2 is the filter, and it collected its models over the following week. A clean trapezoidal state-variable filter arrived with the row itself. The Oberheim came a few days later, when it stopped being a generic morphing filter and became an actual SEM section: a two-pole state variable whose integrators are CA3080 OTAs. An OTA is a differential pair, its transfer is a tanh, and the bandpass node is where the resonance is fed back from — so resonance rises into that limit and compresses instead of building a peak. That is why a SEM never self-oscillates and why its resonance sounds rounded instead of whistled. Below the knee it is the trapezoidal SVF exactly. Four poles is two sections in series, the OB-8's 24 dB position. It is meant to be close, and it is close.
The MS-20 is the exact one. It went in a few days after the Oberheim, as row 2's fourth model, and it is the later instrument's filter — the KLM-307 board with LM13600 OTAs — taken from the schematic as T. Stinchcombe redrew it in A Study of the Korg MS10 & MS20 Filters, and solved as that circuit. Nodal equations, discretised trapezoidally, with Newton solving the two capacitor voltages and the diode strings' drop together. Every OTA is the differential pair's tanh, every diode is Shockley's law, and the component values are the schematic's: 2.2 nF integrators, the 10k and 220 input dividers, 8.2k into the 10k PEAK pot, the 741 stage's 10k over 3.3k, two strings of three 1N4148s across its feedback.
The point of that work is what comes out of it for free. The scream is not an effect anyone added. The peak amplifier has a gain of 4 while its diode strings sit under their two volts and becomes a follower a drop away past that; once PEAK takes the loop gain past 2, at about 90 percent of the Res knob's travel, the section oscillates, and those diodes decide where it stops growing and what shape it takes. The OTAs run without their linearising diodes, the way the pin is left open on the board, so a hot input saturates the first pair: full scale is 5 V, a volt in is a few percent of distortion, five is a square. The section inverts, because the input sits on the inverting side, so it gets turned back round.
Its responses are the circuit's responses. Low-pass is the section as drawn. High-pass is Korg's own variant, the input resistor grounded and the second capacitor's foot fed instead, which turns out to be a 6 dB high-pass beside a resonant bandpass rather than the 12 dB the panel claims. Band-pass is high-pass into low-pass, the instrument's own way of getting one. Peak and allpass are not in the circuit, so the MS-20 does not offer them while the other two models do.
Row 2 also got a wavefolder in its loop at the same time, and started running at twice the host rate, because a fold in a feedback loop and a diode-limited peak both make harmonics past Nyquist and the host rate is not enough room for them.
The comb would not sit still
The difficult stretch, and it went on for about two weeks.
A comb bank sums several resonators. Its output level moves enormously with how many are sounding, how high they are tuned, and how much feedback each one has. Every approach to taming that is a trade. Normalise by the number of combs and it goes quiet exactly when you wanted weight. Normalise by what is actually sounding and it lurches as combs come in and out. Cap it and the top of the knob does nothing.
Several attempts went in and came back out again, including one that was re-implemented twice before it was clear the earlier version had been right. The answer in the end was the plain sum with a ceiling over it, which is where it started, with a great deal more understanding of why.
One thing from that stretch was a genuine fix rather than a trade. The DC in the comb's loop comes off as a zero-phase mean. A high-pass has phase, and phase inside a feedback loop is a new problem rather than a solution to the old one. The sub-bass thump went with it.
Everything that is not the sound
Once it sounded right the work changed shape. A wavefolder in every comb loop. Tilt, Stiff and Pick, all three doing nothing at zero, which is a rule worth keeping. Tooltips on every control.
Then RND, which rolls the whole patch — menus, switches and scale included — with a lock per knob and per source, so you can hold the part you like and roll the rest again. Randomisers that only move knobs are much less useful than they look.
Near the end, the filter stopped drawing its own widgets and let SND draw the buttons, menus, knobs and faders. That moved a few hundred lines of temporary display code into the backend, where it belongs.
The limiter, last
The comb bank can produce enormous level. Resonators with feedback near unity have a loop gain at the pitch of 1/(1 − fb), and stacking several of them means the output depends on the average feedback across however many are in play. Turn Res up with six combs running and you can gain tens of dB over what went in.
Two things deal with it, and they do different jobs.
AUTO GAIN is a prediction. It works out the rise the knobs imply — Res and Ring on the comb, Res and Ring on the vowel, Res 2 on the filter — and takes it off before anything is measured. For the comb that prediction is −20·log₁₀(1 − fb²), using the average feedback over the combs currently sounding. The loop gain at the resonant pitch is 1/(1 − fb), but a broad signal is not sitting on the pitch, and what it actually sees is the average across frequency. The figure is cached against what it was derived from, so a patch nobody is touching costs no logarithm at all. It eases over 10 ms, so it moves only when you move something.
The limiter handles what the knobs cannot predict: whether the incoming signal happens to land on the resonance. A prediction knows the filter. It has no idea what you are about to play through it.
It is feed-forward with 2 ms of lookahead, so the gain is computed on the signal 2 ms before it is applied and is already down when the peak arrives. Soft knee either side of the ceiling. The release runs in two stages: a fast one for the peak, and a slow one that holds the gain down while the excess is sustained, so the fast stage stops pumping on every cycle. The gain itself goes through three box filters, because a corner in a gain curve is an audible click.
One gain across both channels, so the stereo image stays put. The ceiling is the Threshold knob. The cost is that 2 ms, reported to the host as latency, dry path included, and it stays reported whether the limiter is switched on or off.
The gain reduction meter sits under the fader, so you can see how hard it is working. With six combs and Res up, it works hard.
BLUNT is coming. There is more on the audio page.