Maybe I missed something, have to look closer. But by better I mean given the same overdrive approach (overdriving the input and using transparent waveshapers) one sounds more interesting than the other, and vice versa.Z1202 wrote:It's a bit strange to me that the diode ladder model sounds much better than transistor in your experiments. In my experience it's rather the other way around, although this might be subjective.
Book: The Art of VA Filter Design 2.1.2
-
- KVRist
- 229 posts since 29 Apr, 2012
- KVRAF
- 12555 posts since 7 Dec, 2004
This is a general conclusion. You're assuming "this method isn't interesting with respect to X filter type" which is 100% untrue in reality. You're likely drawing your conclusion from an implementation which is incomplete.1eqinfinity wrote:Sure it's different. It may have seemed as if I was drawing a general conclusion, but I was referring to the transistor model actually
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
-
- KVRist
- 229 posts since 29 Apr, 2012
Ah, I see. You mean that this method can yield interesting results for this filter type if the nonlinearities are implemented differently. Ok, understood.
-
- KVRist
- 35 posts since 1 Mar, 2017 from Boston, MA
Thank you Vadim for the update!
I'd like to ask another quick question on the phaser detailed in Chapter 6. I have a working implementation of the phaser shown in figure 6.4 following from my earlier posts in this thread, and it sounds quite nice. I am noticing, though, that at high feedback values, the filter gain can be pretty intense (both near DC and at the resonant peaks).
Following from section 4.3 about the feedback path in a ladder filter, I expect that I should be able to attenuate the input signal by some factor such that at high feedback values, DC and the resonant peaks stay near a gain of 0dB, but I can't figure that value out. I tried working out the analog transfor function and evaluating it at s = 0, following from the same steps used in section 4.1. I've sort of arbitrarily tried multiplying the input signal by (1 / (1 + k)) as well as (1 - k * A) where A is (2g - 1)^4 from resolving the feedback loop for a series of allpasses, and neither seem appropriate.
For example, here's a quick analysis tapping my filter after the last allpass (cutoff at 440Hz, k = 0.44), before mixing with the dry signal:
Ideally I'd like to find the gain factor that translates that magnitude response down to where the peaks are at 0dB. But I'm not sure where to go from here. How can I derive the appropriate attenuation factor here? Or am I on the wrong approach in general?
Thank you!
I'd like to ask another quick question on the phaser detailed in Chapter 6. I have a working implementation of the phaser shown in figure 6.4 following from my earlier posts in this thread, and it sounds quite nice. I am noticing, though, that at high feedback values, the filter gain can be pretty intense (both near DC and at the resonant peaks).
Following from section 4.3 about the feedback path in a ladder filter, I expect that I should be able to attenuate the input signal by some factor such that at high feedback values, DC and the resonant peaks stay near a gain of 0dB, but I can't figure that value out. I tried working out the analog transfor function and evaluating it at s = 0, following from the same steps used in section 4.1. I've sort of arbitrarily tried multiplying the input signal by (1 / (1 + k)) as well as (1 - k * A) where A is (2g - 1)^4 from resolving the feedback loop for a series of allpasses, and neither seem appropriate.
For example, here's a quick analysis tapping my filter after the last allpass (cutoff at 440Hz, k = 0.44), before mixing with the dry signal:
Ideally I'd like to find the gain factor that translates that magnitude response down to where the peaks are at 0dB. But I'm not sure where to go from here. How can I derive the appropriate attenuation factor here? Or am I on the wrong approach in general?
Thank you!
-
- KVRAF
- Topic Starter
- 1607 posts since 12 Apr, 2002
A hint: look at formula 11.2a. Personally though, I don't like having the peaks at 0dB all the time, since at high resonance the peaks are also very narrow and that may sound like a huge drop in volume. It's a bit tricky, as depending on the input material the peaks may get too loud or the whole thing may get too quiet. So one option would be not to introduce any compensation and leave it to the user to adjust the level to the desired value, but that's really a design decision.ncthom wrote:Ideally I'd like to find the gain factor that translates that magnitude response down to where the peaks are at 0dB.
Edit: off the top of my head I'm not sure how the amplitude and phase response should look at the last allpass, but the amplitude response looks to me as if you're having an odd number of stages and the phase response as if you're having an even number of stages. As I said, I'm not 100% sure, but it looks suspicious.
-
- KVRist
- 35 posts since 1 Mar, 2017 from Boston, MA
Oh boy, I hadn't given the 2.0.0 update a good look yet, I was still working off of the previous version of the book. This expanded chapter is amazing, the answer's right there Thank you!!
Quick note: Found a typo in Section 11.5 at the end of page 487: "the amplitude response are lcoated at frequencies"
And yes, you're right, I found a silly off-by-one error in the feedback loop calculation that led to those graphs.
Quick note: Found a typo in Section 11.5 at the end of page 487: "the amplitude response are lcoated at frequencies"
And yes, you're right, I found a silly off-by-one error in the feedback loop calculation that led to those graphs.
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
A typical analog phaser has equal stages but the feedback is around an unequal number of stages. Of about 20 or so phaser schematics I skimmed over at one stage, 95% follow that pattern to some extent. Equal stage feedback seems to be more common in digital, not that that makes it wrong in any way, just different. I do agree that the peaks don't sound great when kept at 0dB all the time, the overall level is a bit of a fudge-factor in practice.Z1202 wrote: Edit: off the top of my head I'm not sure how the amplitude and phase response should look at the last allpass, but the amplitude response looks to me as if you're having an odd number of stages and the phase response as if you're having an even number of stages. As I said, I'm not 100% sure, but it looks suspicious.
Nice feedback example:
https://www.electrosmash.com/mxr-phase90
-
- KVRAF
- Topic Starter
- 1607 posts since 12 Apr, 2002
That's a good remark. Although I'm not sure if it's really that typical (IIRC e.g. for mxr these are mods rather than original versions, but I might be wrong), it does result in interesting sound. I wanted to mention this in the book, but somehow forgot toIchad.c wrote:A typical analog phaser has equal stages but the feedback is around an unequal number of stages. Of about 20 or so phaser schematics I skimmed over at one stage, 95% follow that pattern to some extent. Equal stage feedback seems to be more common in digital, not that that makes it wrong in any way, just different. I do agree that the peaks don't sound great when kept at 0dB all the time, the overall level is a bit of a fudge-factor in practice.Z1202 wrote: Edit: off the top of my head I'm not sure how the amplitude and phase response should look at the last allpass, but the amplitude response looks to me as if you're having an odd number of stages and the phase response as if you're having an even number of stages. As I said, I'm not 100% sure, but it looks suspicious.
Nice feedback example:
https://www.electrosmash.com/mxr-phase90
However, as for the graphs, it seemed suspicious to me that the phase response went over a multiple of 360 degrees, while the amplitude response at infinity was the "opposite" of the one at DC, which hinted at a possible inconsistency (although as I said I'm not sure if that's really impossible for certain values of the feedback amount). I don't think that depends on a mismatch between feedback and feedforward path orders.
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
Those are all original versions(revisions), not DIY mods. The Phase90 is one of the top 3 most famous phasers of all time, personally I would say it is the most famous pedal due to Pink Floyd and van Halen, the only other one that comes close to its pedigree is the Smallstone. It has been mostly in production for the past 44 years, modifications/revisions were made through the years, due to user requests, parts becoming obsolete and modern manufacturing techniques, the Smallstone has a similar amount of revisions. So I would say that feedback around unequal stages is a classic soundZ1202 wrote:That's a good remark. Although I'm not sure if it's really that typical (IIRC e.g. for mxr these are mods rather than original versions, but I might be wrong), it does result in interesting sound. I wanted to mention this in the book, but somehow forgot toIchad.c wrote:A typical analog phaser has equal stages but the feedback is around an unequal number of stages. Of about 20 or so phaser schematics I skimmed over at one stage, 95% follow that pattern to some extent. Equal stage feedback seems to be more common in digital, not that that makes it wrong in any way, just different. I do agree that the peaks don't sound great when kept at 0dB all the time, the overall level is a bit of a fudge-factor in practice.Z1202 wrote: Edit: off the top of my head I'm not sure how the amplitude and phase response should look at the last allpass, but the amplitude response looks to me as if you're having an odd number of stages and the phase response as if you're having an even number of stages. As I said, I'm not 100% sure, but it looks suspicious.
Nice feedback example:
https://www.electrosmash.com/mxr-phase90
P.S. I think the prevalence of unequal stage feedback is simply due to a lot of phasers being built with inverting opamp allpasses like the Phase90, transistor(Univibe) and OTA(Smallstone) are more rare. The Smallstone is equal stage feedback btw. Something like the Ross Flanger(1979), inverting opamp, has 5 stages with global feedback but the output is taken by the 4th stage. Phasers are fun!
-
- KVRist
- 239 posts since 22 Jan, 2007 from Germany
OT @Vadim I just stumbled upon your v2 ... will have to read it tonight or tomorrow. Oh, and if you want to credit me using my real name, it's 'René Jeschke'.
And an idea: a filter structure that I missed in your first version is a Linkwitz-Riley crossover SVF filter. It's basically #order integrators where each feeds back into the input. The cool thing is, you can just plug in any analogue 's'-domain coeffs into the feedback paths and realize any transfer function. They are basically my go-to filters for everything. See https://www.rane.com/pdf/linriley.pdf and http://jahonen.kapsi.fi/Audio/Papers/Statevariable.pdf for the analogue explanation. This can be transferred to digital using TPT just like the schematics show. Dunno if this is of any interest.
The feedback path looks like this (from my Java prototyping library, getS() returns the 'state', getF() returns, I think you called it 'G' in your book). It calculates the (parallel) feedback for n-integrators using the LR-SVF topology. I.e. having 4 units, setting `double[] r = {4, 6, 4, 1 + q}` realizes a simple ladder filter. Each integrator's output is then s^3 down to 1, with s^4 resulting from the feedback. Pretty neat thing IMHO.
And an idea: a filter structure that I missed in your first version is a Linkwitz-Riley crossover SVF filter. It's basically #order integrators where each feeds back into the input. The cool thing is, you can just plug in any analogue 's'-domain coeffs into the feedback paths and realize any transfer function. They are basically my go-to filters for everything. See https://www.rane.com/pdf/linriley.pdf and http://jahonen.kapsi.fi/Audio/Papers/Statevariable.pdf for the analogue explanation. This can be transferred to digital using TPT just like the schematics show. Dunno if this is of any interest.
The feedback path looks like this (from my Java prototyping library, getS() returns the 'state', getF() returns, I think you called it 'G' in your book). It calculates the (parallel) feedback for n-integrators using the LR-SVF topology. I.e. having 4 units, setting `double[] r = {4, 6, 4, 1 + q}` realizes a simple ladder filter. Each integrator's output is then s^3 down to 1, with s^4 resulting from the feedback. Pretty neat thing IMHO.
Code: Select all
public static double zdfFeedbackP(ZDFUnit[] units, double[] r, double input)
{
double s = 0, f = 0;
double st = 0, ft = 1;
for (int i = 0; i < units.length; i++)
{
double fi = units[i].getF();
double fs = units[i].getS();
st = st * fi + fs;
ft *= fi;
s += st * r[i];
f += ft * r[i];
}
return (s + f * input) / (1 + f);
// or, as usual (input - s) / (1 + f) for directly getting the high-pass output
}
... when time becomes a loop ...
---
Intel i7 3770k @3.5GHz, 16GB RAM, Windows 7 / Ubuntu 16.04, Cubase Artist, Reaktor 6, Superior Drummer 3, M-Audio Audiophile 2496, Akai MPK-249, Roland TD-11KV+
---
Intel i7 3770k @3.5GHz, 16GB RAM, Windows 7 / Ubuntu 16.04, Cubase Artist, Reaktor 6, Superior Drummer 3, M-Audio Audiophile 2496, Akai MPK-249, Roland TD-11KV+
-
- KVRAF
- Topic Starter
- 1607 posts since 12 Apr, 2002
I will in the next updateneotec wrote:OT @Vadim I just stumbled upon your v2 ... will have to read it tonight or tomorrow. Oh, and if you want to credit me using my real name, it's 'René Jeschke'.
They are covered in rev 2 (p.271). I'm not sure if they have a clear official name though. I guess the closest to the "official name" is "controllable canonical form".neotec wrote:And an idea: a filter structure that I missed in your first version is a Linkwitz-Riley crossover SVF filter. It's basically #order integrators where each feeds back into the input. The cool thing is, you can just plug in any analogue 's'-domain coeffs into the feedback paths and realize any transfer function.
-
- KVRAF
- Topic Starter
- 1607 posts since 12 Apr, 2002
The book has been updated to 2.1.0
http://www.native-instruments.com/filea ... _2.1.0.pdf
Just little additions:
- Generalized ladder filters
- Elliptic filters of order 2^N
- Steepness estimation of elliptic shelving filters
Edit: while we're on the subject, this talk is covering some of the book's materials on a qualitative level:
https://www.youtube.com/watch?v=0pAxQIUGT4w
http://www.native-instruments.com/filea ... _2.1.0.pdf
Just little additions:
- Generalized ladder filters
- Elliptic filters of order 2^N
- Steepness estimation of elliptic shelving filters
Done
Edit: while we're on the subject, this talk is covering some of the book's materials on a qualitative level:
https://www.youtube.com/watch?v=0pAxQIUGT4w
-
- KVRAF
- 5427 posts since 18 Jul, 2002
Amazing work! Mirror at https://www.discodsp.net/VAFilterDesign_2.1.0.pdf
-
- KVRAF
- Topic Starter
- 1607 posts since 12 Apr, 2002
Thanks for mirroring! The link updated.discoDSP wrote: ↑Tue Oct 30, 2018 3:59 pm Amazing work! Mirror at https://www.discodsp.net/VAFilterDesign_2.1.0.pdf