[sdiy] Time-varying all-pass filters
rutgervlek at gmail.com
Thu Jan 6 11:04:01 CET 2022
In the last months I’ve been fantasising about a new mono synth (for personal use, nothing commercial), that could provide classic sounds, but also something slightly more original (at least for me). I’ve been reading a lot about FM/PM, about formant synthesis and pulse-forming, and about windowed-sync. I’ve done experiments with combinations of these on my Nord Modular G2 (digital) and found them musically really satisfying!
So now I’m making small steps towards a first prototype of these ideas in analog. Originally, I planned to do a thru-zero triangle core oscillator, after I read older threads about how David Dixon and Bernie Hutchins implemented it, but felt the circuit complexity and potential impact on tuning stability was not really outweighing my limited use of FM/PM sounds. So, I decided to start looking for simpler ways to obtain some of the sounds characteristic of PM/FM, as well as the possibility to obtain sine-to-saw and sine-to-square waveshaping by means of self-modulation. Rob Hordijk made a nice implementation of this type of waveshaping in his OscHRM.
Then it occurred to me that, assuming the input is a sine wave, a phase shifted version up to 180 degrees could be obtained from modulating an all-pass filter that is also tracking along with the pitch of the oscillator. The most important benefit of this approach is that the whole PM stuff becomes separated from the oscillator core, just like a wave shaper, and would guarantee stable tuning, even in cases of self-modulation (from the output of the all-pass filter back to it’s frequency input). So I prototyped it in my Nord Modular, and it works rather well! It’s not identical to true FM/PM, but provides sounds with very similar characteristics and allows for forms of self-modulation as well! When I searched the internet and archives of this list, I found the idea was not really new, and others have at least written about it.
Then I moved to Spice modelling of an analog equivalent, and discovered something unexpected. Without modulation, the circuit operates at unity gain, preserving a sine wave of the same amplitude (10Vpp) as the input. However, depending on the modulation signal, excursions of up to 3 times this amplitude occur at the output. Going back to my Nord Modular, I realised the exact same thing is happening there, but the Nord’s headroom is sufficient to deal with it. So then I discovered that classic all-pass filter implementations do not generalise to time-varying applications….
It turns out that there are special implementations for time-varying all-pass filters in the digital domain: https://www.researchgate.net/publication/3343262_Time-varying_generalizations_of_all-pass_filters. I have not been able to figure out if they exist (or can be designed along the same principles) in the analog domain. Does anyone have experience with this in analog? If not, I could consider designing for more headroom than I anticipated, or could try and soft-limit the output of the all-pass filter.
Any suggestions or insights are appreciated!
ps. Happy healthy new year!
More information about the Synth-diy