Model Bending the Buchla 259 Wavefolder
(or how we made the Bent 259)
We’ve referenced Model Bending a couple times while talking about Generate. It’s a new technique we’ve been developing for creating new sounds, and I wanted to write this blog to dig in and explain why we’re excited about it. Specifically I wanted to guide you through the process we used to develop the new Bent 259 wavefolder in Generate 1.3.
Model Bending isn’t a DSP algorithm, it’s more like a framework for thinking about how to create DSP algorithms. It’s really just a mashup of two existing signal processing techniques called circuit modeling and circuit bending.
Circuit Modeling is the process of understanding the mathematics behind an analog circuit and re-implementing that math as software. The result is a model of an analog circuit that you can run in your DAW. If you’re successful, it sounds just like the real thing and your user just saved $$$ on an amp or synth.
Circuit Bending is the process of taking an existing analog circuit and modifying it to make different sounds, often with little or no understanding or intent - it’s a more experimental process which can create bends (modifications to the circuit) that will create new and unheard of sounds from the piece of hardware.
Model Bending is simply a combination of these two ideas - but the idea is not to model a bent circuit, but rather to bend a circuit model. This is an important distinction because the sounds a circuit can make are limited by the mathematics available in the electrical components. Once we create a mathematical model of a circuit we can change that model using any math - including tons of ideas that could never be implemented using an analog circuit.
This is why we’re excited about the idea. We can start from a place of a good sounding circuit and then find bends that allow us to make sounds that were never possible before. And that’s what Newfangled Audio is all about - making good sounds you’ve never heard before.
So; for a better explanation of this process let us walk through the development of Generate 1.3’s new Bent 259 Wavefolder. Warning: I’m going to include all the details, but that means I’m not going to shy away from the math. But don't worry, if the equations are too confusing you can skip to the next "words" part.
1. Buchla 259 Wavefolder Model
The starting place for our Buchla 259 model was a great paper by Fabián Esqueda et al which shows that the 259 wavefolder can be implemented as the mixture of a collection of 5 center clippers that look like this.
The equation to define one of these sections is given in the paper here.
But after doing a bit of algebra we can write it in C++ like this
So all this means that by creating 5 of these center clipping waveshapers with different slopes and offsets, and mixing them together with the right gains, we’ll end up with a wavefolder with the same shape, and which should sound the same, as the wavefolder in a Buchla 259.
However, one issue you’ll quickly run into when making models of nonlinear circuits is digital aliasing - harmonic overtones that are above half the sampling rate will "fold down" to a non-harmonic location in the frequency spectrum creating an atonal sound.
The original 259 paper addresses this by using a polyBLAMP residual function to reduce those aliasing artifacts. Instead of doing that we applied a different anti-aliasing method called anti-derivative anti aliasing (ADAA) developed by a number of people, but probably first applied to effects processors by Parker et al.
The technique requires you to calculate the anti-derivative of the nonlinearity and use that as part of the update equation (essentially doing an analog antiderivative and a digital derivative). So instead of writing code that implements the center clipper, we need to implement code that calculates a function of the anti-derivative of the center clipper. So our anti-aliased model now looks like this.
We took some further liberties with the controls and tuning, but this is the core of the 259 model that we used in Generate and Saturate.
2. Bent 259 Wavefolder Model
So how did we create the Bent 259 Model?
Well, I thought it’d be fun to change the nonlinearity and see how it sounded.
Remember that antiderivative of the nonlinearity that we had to calculate?
If you dig deep and remember your high school calculus you might recall that while every function has a derivative, not every function has an antiderivative. So in order to mess with the nonlinearity we played a clever trick: instead of messing with the center clipping function that makes up the core of the 259, we applied our bends to its antiderivative - this way we can always guarantee the existence of an anti-aliased version of our bend. Here are a bunch of the things we tried (most are commented out):
Some of them sounded bad, and some of them sounded great. But this is really all we did, started using different mathematical functions - things that we could never do in a real analog circuit - and seeing what sounded good.
You can see what we settled on, which is the code that is not commented out, and it creates this shape when differentiated.
The original 259 is very jagged and after the sections were all summed together, this change had the effect of softening it, essentially adding fewer high order harmonics and giving it a mellower tone.
I liked the idea that we were softening the very jagged 259, so we smoothed the curve a bit more by adding a SHAPE knob which morphs from the modified center clipper to the cubic of the modified center clipper. When you zoom in on the cubed center clipper you can see that the harsh center section is smoothed as well, which looks like this..
One final issue was that these sections have less overall gain than the 259, so we needed to drop the input level in the mixer by about 6 dB. The final mixer stage looks like this:
The end result is a version of the Buchla 259 wavefolder that is based on the same idea as the original, and sounds totally different (but still great). And the key part is: all the difficult DSP work was in generating the original model, once we had that working the way we liked it was just a bit of trial and error to create the Bent 259.
I’d love to see what other people can do with this Model Bending technique. I think there’s an almost infinite number of new sounds to be found here. If you do create some, please let us know. In the meantime we’re still cracking away at it as well.
Also, I should mention that Generate 1.3 (and everything else we make) is still 50% off until January 3rd. Check out the sale here...