Howdy guys (are there girls on this list?),
I'm looking to try to implement some guitar dsp in pd, mainly a preamp, tonestack, and speaker cabinet. I want to see if it's possible to get a better frequency response with my guitar without taking too much cpu or buying extra gear.
Anyway, I've found some great examples in the CAPS LADSPA plugins and I'm looking at the C++ for the tonestack. I haven't used any of the filter primitives in PD before, so I don't know where to start. I haven't really done any lower level dsp aside from an intro to signal processing in undergrad (a while ago now).
Can anyone give me a pointer on how to implement this function using rpole~, rzero~, etc:? y = 2 * (a * (x - x[-2]) + c * y[-1] - b * y[-2]) It's the transposed Direct Form II digital filter from dsp/TDFII.h
Dan Wilcox danomatika.com robotcowboy.com
It's all Greek to me, but have you checked out this?
http://www.linuxjournal.com/content/introducing-guitarix
D.
On 3/9/10 4:15 AM, Dan Wilcox wrote:
Can anyone give me a pointer on how to implement this function using rpole~, rzero~, etc:? y = 2 * (a * (x - x[-2]) + c * y[-1] - b * y[-2]) It's the transposed Direct Form II digital filter from dsp/TDFII.h
... yes, I know I *could* run the plugin through [plugin~] but I prefer to keep things minimal. ANyway, this is an experiment.
Hallo, Dan Wilcox hat gesagt: // Dan Wilcox wrote:
Can anyone give me a pointer on how to implement this function using rpole~, rzero~, etc:? y = 2 * (a * (x - x[-2]) + c * y[-1] - b * y[-2]) It's the transposed Direct Form II digital filter from dsp/TDFII.h
This is a biquad filter, so you could use [biquad~] (or one of it's signal-inlet equivalents like the [e_beequad] in RjDj's "rj" library). Translating the formula to a biquad~-friendly format would be:
y = 2 * (a * (x - x[-2]) + c * y[-1] - b * y[-2])
==> 0.5*y = a * (x - x[-2]) + c * y[-1] - b * y[-2] = a*x + 0*x[-1] - a*x[-2] + c*y[-1] - b*y[-2]
The last version lets you directly read the required [biquad~] coefficents as:
[c -b a 0 -a( | [biquad~] | [*~ 2]
Replace c, b and a with real numbers. I hope, I got the signs right ...
Frank