Weeping Demon Digitization


I reverse engineered Ibanez's Weeping Demon wah pedals and made a digital model. The details are discussed in the presentation PDF below. It's a really cool circuit. Rather than using a potentiometer to control the pedal angle, there is a clever optical sensor that won't get dirty and noisy over time. In the digitization, the filter stage, which consists of several op-amps in feedback with each other (a state variable filter) is reduced to a block of multiply/add blocks and a state dependent transfer function is obtained via Mason's gain law. A freqency warped bilinear transform is used to digitize the model.
There is also some python code for reducing the amount of computation associated with the filter coefficients. It is quite common in virtual analog to have insanely long expressions for the filter coefficients. The scripts provided can take an arbitrarily complicated set of multivariable polynomial and reduce the amount of computation required to process audio.
I worked on this project with the legendary Kurt James Werner.


The filter stage, a state variable filter. If we model nothing else, let's model this.

The delayed auto-bypass feature. This is super easy to model with a timer. No need to do any math.

The input and output buffering stages. Mostly emitter followers and bypass filters with very low cutoff frequencies. No need to include these in the model, they are mostly to prevent loading.

Coefficient Reduction Scripts 9kB
SPICE files and schematics 193kB
Optoisolator Data 69kB
Potentiometer Taper Data 47kB
Documentation 44.7MB

Known Software Issues:
  • Code is lock free, if you run it with the graphics (that depict the spectrogram), it may crash occasionally. Turn the graphics off and everyone is happy.
  • Interface is terrible looking.
To run (OSX/Linux only, sorry):
make && ./WeepingDemon

Source Code for Realtime Effect (6/10/15) 131kB

Thank You!

Thanks to Jonathan Abel for advice and for being awesome.