[PD] moog~ in pure pd?

Ed Kelly morph_2016 at yahoo.co.uk
Sat Oct 26 07:50:17 CEST 2013


Hmmm. I made a moog-style filter last year, but it's an external of course. Totally ripped from source code I found elsewhere, but it may help if you look at the algorithm for the filter's operation.

Note that this is an IIR not an FIR filter, so it can burst and screw up your DSP chain (but only if you feed it bad values). Everything is signal-based - i.e. cutoff frequency and resonance.

Cheers,
Ed

  while (n--) {
    i1=(*in++);
    fc1 = (*fc++);
    /* This failsafe line stops the filter bursting
     * ...but it is expensive! */
//    if(x->safety) {
//      fc1 = fc1 <= 1 ? fc1 >= 0 ? fc1 : 0 : 1;
//    }
    res1 = (*res++);
    q = 1.0f - fc1;
    p = fc1 + 0.8f * fc1 * q;
    fcoeff = p + p - 1.0f;
    q = res1 * (1.0f + 0.5f * q * (1.0f - q + 5.6f * q * q));
    i1 -= q * xb4;                          //feedback
    t1 = xb1;
    xb1 = (i1 + xb0) * p - xb1 * fcoeff;
    t2 = xb2;
    xb2 = (xb1 + t1) * p - xb2 * fcoeff;
    t1 = xb3;
    xb3 = (xb2 + t2) * p - xb3 * fcoeff;
    xb4 = (xb3 + t1) * p - xb4 * fcoeff;
    xb4 = saturate(xb4);
    xb4 = xb4 - xb4 * xb4 * xb4 * 0.01f;
    xb0 = i1;
    *out++ = xb4*1.414; // lowpass mode
    // *out++ = i1 - x->b4; // highpass mode
// Lowpass  output:  xb4
// Highpass output:  in - xb4;
// Bandpass output:  3.0f * (b3 - xb4);

  }



 
Ninja Jamm - a revolutionary new music remix app from Ninja Tune and Seeper, for iPhone and iPad
http://www.ninjajamm.com/


Gemnotes-0.2: Live music notation for Pure Data, now with dynamics!
http://sharktracks.co.uk/ 



On Tuesday, 15 October 2013, 13:16, Billy Stiltner <billy.stiltner at gmail.com> wrote:
 
martin, I have not tried the moog but did use one of your abstractions using the fexpr~ as a starting point to build the original dsp cookbook filters(frequency thats where its happenin man) , I had been wanting to hear them in realtime since 1998 or so. I'm not sure I have them in there correct as they are over resonant but make a nice oscillator for  drums if properly limited.
>
>
>
>
>
>On Fri, Oct 11, 2013 at 5:33 AM, martin brinkmann <mnb at martin-brinkmann.de> wrote:
>
>On 10/11/2013 08:32 AM, Dan Wilcox wrote:
>>
>>> [vcf~] sounds close, but of course, it's a band pass so it's not a real replacement.
>>
>>the undocumented 2nd output of vcf~ is a lowpass. and there are a few
>>methods to build the basic (cookbook) filters with pd-vanilla-objects:
>>you could use fexpr~ to make your own signal-rate biquad. it works very
>>well, but needs a lot more cpu than necessary. or you could use
>>cpole~/czero~. like in the beequad-abstractions. i have used the same
>>method in all my filters, with signal-rate. (in my "instruments
>>collection" on my homepage). of course this is still not exactly
>>moog~. it should be possible though to make a moog-abstraction
>>in the same way, but i have not tried (yet)...
>>maybe anyone else has already?
>>
>>bis denn!
>>        martin
>>
>>_______________________________________________
>>Pd-list at iem.at mailing list
>>UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>>
>
>
>_______________________________________________
>Pd-list at iem.at mailing list
>UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20131026/8e0e6a84/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mvcf~.c
Type: text/x-csrc
Size: 4180 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20131026/8e0e6a84/attachment-0001.c>


More information about the Pd-list mailing list