Thanks for the reply, it makes sense.andy-cytomic wrote:I just copy and pasted and didn't delete the A term, it's not needed for a peaking filter. A peaking filter is just a resonant filter much like a low, high or band pass filter, but it doesn't attenuate either high or low frequencies, it leaves them alone and just boosts the resonant peak.
C++ port of Andy Simper's implementation of State Variable Filters
-
- KVRian
- 573 posts since 1 Jan, 2013 from Denmark
- KVRer
- Topic Starter
- 23 posts since 4 Jan, 2016 from BE
For the beginners ( only ) I've added an example on how to use the class SvfLinearTrapOptimised2. Have a look on https://github.com/FredAntonCorvest/Common-DSP. Next I will update the various filter type missing.
- KVRian
- 1018 posts since 27 Mar, 2013
Ableton EQ8 proof that?!?andy-cytomic wrote:I added the "all pass" response to the document, which is LP + HP - k*BP = input - 2*k*BP. I should actually do a version where you solve for HP BP and LP directly, then you can do various sums using m0*HP + m1*BP + M2*LP since these are easier to conceptually work with. The reason I did it like I did was since I was aiming this at EQ and if you have input + gain*something, then when gain is zero you get exactly your input back again - a perfectly transparent EQ.
rabbit in a hole
- KVRAF
- 2637 posts since 3 Dec, 2008
Yes, with the Ableton EQ8 if you have all the gains at 0 dB you should get a bit for bit transparent output (being identical to the input). I copied this directly from the Urei 545 EQ.Autobot wrote:Ableton EQ8 proof that?!?andy-cytomic wrote:I added the "all pass" response to the document, which is LP + HP - k*BP = input - 2*k*BP. I should actually do a version where you solve for HP BP and LP directly, then you can do various sums using m0*HP + m1*BP + M2*LP since these are easier to conceptually work with. The reason I did it like I did was since I was aiming this at EQ and if you have input + gain*something, then when gain is zero you get exactly your input back again - a perfectly transparent EQ.
The Glue, The Drop - www.cytomic.com
- KVRer
- Topic Starter
- 23 posts since 4 Jan, 2016 from BE
I've added the missing filter types -> https://github.com/FredAntonCorvest/Common-DSP
- KVRian
- 878 posts since 2 Oct, 2013
Thanks for the effort, FredAnton. And of course Andy for the creation of such a filter.FredAnton wrote: ↑Thu Dec 01, 2016 8:59 pm I've added the missing filter types -> https://github.com/FredAntonCorvest/Common-DSP
I'd like to use a parameterized filter on my audio app, and Nigel suggest it to me, which sound good.
BTW, a question: I'd like to have a single value for each param; so if I change gain, fc or q, I don't need to recalculate ALL coefficients every timee, but a single variable/value for each.
What should be the concept about parameterized filter, right?
Here I see you change all on every cutoff change, not only the cutoff variable.
Is it possible? Or do I need to switch to another filter? Suggestions?
Thanks for the help!
-
- KVRian
- 1379 posts since 26 Apr, 2004 from UK
All these filters are also available inside Autio ToolKit.
- KVRian
- 878 posts since 2 Oct, 2013
I see, but its the same: https://github.com/mbrucher/AudioTK/blo ... er.cpp#L80
Once you change cutoff (or q or gain) you update all the coefficients. So on each cutoff variations depends N coefficients, not one single value (i.e. the param being changed). If I have a block of 256 values and cutoff is automated at audio rate (or every 1/8, so 32 values), I can't keep a simple list of 256 (or 32) cutoff's different values, but calculate for each value N coefficients.
In different words: I need a filter where variations of params depends by only them, not related data. Not sure if it exist But I think so for what I'm learning
Example here: https://web.archive.org/web/20170308095 ... .php?id=23
If I change cutoff or res, I simply need to update the f or q variable (1 to 1).
So on a list of 256 cutoff (normalized) variations (blockSize) I simply keep a list of 256 warp values...
- KVRAF
- 2637 posts since 3 Dec, 2008
You're welcome!Nowhk wrote: ↑Wed Oct 31, 2018 9:33 am Thanks for the effort, FredAnton. And of course Andy for the creation of such a filter.
I'd like to use a parameterized filter on my audio app, and Nigel suggest it to me, which sound good.
BTW, a question: I'd like to have a single value for each param; so if I change gain, fc or q, I don't need to recalculate ALL coefficients every timee, but a single variable/value for each.
What should be the concept about parameterized filter, right?
Here I see you change all on every cutoff change, not only the cutoff variable.
Is it possible? Or do I need to switch to another filter? Suggestions?
Thanks for the help!
If you want to have de-coupled coefficients you "just" need to oversample the filter a whole lot (say x64) so that all the coefficients are kept in their initial linear section, then you can use trivial forward euler type integration:
bandz = band
lowz = low
high = input - res * bandz - lowz
band = bandz + gain * high
low = lowz + gain * bandz
or the more traditional Chamberlin form:
bandz = band
lowz = low
high = input - res * bandz - lowz
band = bandz + gain * high
low = lowz + gain * band
My guess is that a few coefficient calculations will be much lower cpu than the amount you'll chew with oversampling forward euler filters like this with no corrections. You should give it a go and do some profiling and report back here what you find.
The Glue, The Drop - www.cytomic.com