Multiband Distortion patch

Hi,

I’m still not up to speed on DSP programming so I’m easing myself in by porting a few of the open source mda VSTs to Owl. Here’s my first attempt and one I particularly like, it’s the mdaBandisto multiband distortion.

I’ve tuned the crossover frequencies so they work well for my violins so they might need tweaking for guitar/bass and I’ve left hard-coded a few things because I ran out of knobs. But it works well on the pedal and I’ll be taking it to our next band practice :slight_smile:

Chrissie

http://chrissie.fedorapeople.org/owl/MdaBandistoPatch.cpp

awesome, thanks for contributing Chrissie!
Will try your patch soon :slight_smile:

Giom

Sweet - looks like there’s some good stuff in the MDA collection.

This is what I suggested to blondinou for submitting patches using github pull-requests:

"fork the OwlPatches repository on github, create a branch, add and commit your file, then send a pull request to merge it with the master branch…

It’s a hassle if you’re not used to it, but it sets you up to submit more changes and patches in the future. If not, I’ll happily just add the file in, if you like."

Either way is fine with me!

(note to self: we should have a wiki page describing this process in more detail)

Good idea. I have a github account for work, I can use that!

pull request sent !

Sounds good here on a guitar!

Hi,

I own a owl pedal since long ago, but I never really got into patch programming until now.
This patch was one of my favourites (I play bass), and it also seemed relatively straightforward, so I am making my first steps into digital signal processing by studying how it is done.

I stumbled on a doubt about crossover frequencies.
In particular, the crossover between mid and high frequencies is defined by:

Filter parameters:
(line 13) fParam3 = (float)0.38; //xover2 (about 438 Hz)
(line 72) fi2 = (float)powf(10.0,fParam3 - 1.05); fo2=(float)(1.0 - fi2);

Filter itself:
(line 113) b2 = (f2i * a) + (f2o * b2); //crossovers
(where a is the current sample, b2 is the signal with high frequencies filtered out, so it is low+mid)

After an intense Wikipedia session, I managed to understand that this is an exponential smoothing filter.

The filter frequency should be related to the filter coefficient by the relation
f2o = exp(-Ts/tau)
Where Ts is the sampling time, and tau is the filter time constant.
In other words the cutoff frequency of the filter should be
fc = 1/(2pitau) = Fsln(1/f2o)/(2pi)
where Fs is the sampling frequency.

So, if I use Fs = 48 kHz, and ln(1/f2o) = 0.241 with the numbers defined in the code, I get a cutoff frequency
fc = 1.8 kHz
Instead of 438 Hz as written in the comment in line 13 of the patch code.

Is it just a typo in the code comment, or is there something else?

(This is a trivial matter for the patch itself, but it is really important for me to know if I missing something…)

Thanks!!