PD bob~ ported for Max

Julien Bayle's icon

Hey,

I’ve just released a Max/MSP external port of bob~, the classic Moog ladder filter simulation originally implemented in Pure Data by Miller Puckette.

bob~ models the Moog transistor ladder using Runge–Kutta numerical integration of a nonlinear differential equation, following work by Stilson, Stinchcombe and Huovilainen. It’s a very interesting approach compared to more common digital ladder approximations, because the solver integrates the circuit dynamics directly and includes a nonlinear saturation stage.

The port happened a bit unexpectedly: during a recent training session, a student brought up the original bob~ implementation and we started discussing it. That conversation made me want to port it to Max and make it available as a simple external.


The object behaves like the original:

Inlets

  • signal input

  • cutoff frequency (Hz) — signal or float

  • resonance — signal or float

Attributes

  • @oversample / Oversampling factor for the Runge–Kutta solver.

  • @saturation / Controls the nonlinear saturation function.

The external has been compiled for:

  • macOS (Intel + Apple Silicon)

  • Windows

and the full source code is available.

Credit of course goes to Miller Puckette and contributors for the original bob~ implementation in Pure Data.

If anyone finds it useful, or wants to experiment further with nonlinear ladder models inside Max, feel free to use or modify it.

Reso-saturate it !