How to Design a Phase Distortion (like this open source plug-in)

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

In the pursuit of more realistic digital emulations of analog distortions, I am realizing phase distortion is a massively important element to consider. I find the Allpass Brigade in Reaktor helpful in providing some of this (series of Allpass filters). However, I have found another plugin "Temper" which seems to work through a completely different mechanism and it's really helpful as well.

The plugin is free to download here:
https://creativeintent.co/products/temper

And the open source is available here:
https://github.com/creativeintent/temper

From what I can understand, it features a "phase distortion module" where the phase offset of the signal is modulated by an overdriven (waveshaped) version of the signal.

The summary of how its controls work is as follows:
Parameters
Cutoff: The signal chain contains a simple resonant lowpass filter before the distortion unit. This parameter sets the cutoff frequency of that filter.

Resonance: This parameter sets the corner resonance of the lowpass filter mentioned above.

Curve: The first of the three parameters that control the distortion unit, Curve sets the shape of the waveshaper curve used to saturate the input signal before the phase distortion module.

Drive: Like a traditional overdrive, Temper includes a gain step before the waveshaper. Drive determines the gain applied at that step.

Saturation: The Saturation parameter controls the Dry/Wet mix of the waveshaper output; at 0.0, the dry input signal goes into the phase distortion module with the shaped signal modulating the phase offset. At 1.0, the wet waveshaper signal goes into the phase distortion module which is shaped by the same wet signal.

Feedback: The signal chain includes a feedback loop, taking the output of the distortion unit and feeding it back right before the distoriton unit again (after the filter). Feedback here decides the gain multiplier on that feedback loop.

Level: This simply adjusts the output level.

On settings like the attached it certainly creates a bit of an "analoging" effect to my ears.

I would love to be able to implement this in Reaktor with variable controls in guitar amp simulation.

Does anyone know how to modulate the "phase offset" of a signal with that of an overdriven signal? I can't read any programming languages so although it's open source, it's still a black box to me.

Can anyone explain how this is working?

Thanks.
You do not have the required permissions to view the files attached to this post.

Post

I'd rather say it's something like this: https://scholar.google.com/scholar?clie ... oogle.com/. And I doubt it actually has too much to do with "more realistic digital emulations of analog distortions" (it's not a problem to make this kind of distortion in analog but I've never heard of "classic distortion/overdrive" stuff made this way - this is pretty "new" effect).

Post

Max M. wrote:I'd rather say it's something like this: https://scholar.google.com/scholar?clie ... oogle.com/. And I doubt it actually has too much to do with "more realistic digital emulations of analog distortions" (it's not a problem to make this kind of distortion in analog but I've never heard of "classic distortion/overdrive" stuff made this way - this is pretty "new" effect).
Thanks Max! Awesome.

What I meant in terms of better modeling of analog distortion/overdrive is that in my opinion, one of the greatest shortcomings of digital distortion modelling is that it usually doesn't produce sufficient phase distortion (of any type) to match the phase distortion that guitar gear will naturally create. People tend to just apply EQ, waveshaping (eg. tanh), and then maybe some dynamics controls and assume they have "got it". But this totally neglects the phase alterations that guitar gear induces.

So while I am not sure of the correct way to model those phase distortions (perhaps no one yet knows), I have found already even just running allpasses helps "smear" the phase a bit and create a more realistic sound. This is a very interesting new technique I would therefore like to harness as well.

Attached is what seems to be the main excerpt of the article you suggested.

I can easily put a first order all pass filter in with Reaktor. Such an all pass will have an input and a Pitch control, where the pitch value represents the point of -90 degrees phase rotation.

Is it correct then that equation (2) would be the one I would use to calculate/modulate the frequency of the all pass filter?

I am a bit unclear on interpreting this.

How can I produce an equation that will give the modulating pitch value I need for this all pass?

Or will it not be that simple, and I must instead reproduce the equation for the new "custom" filter on the right (#6)?

Thanks again.
You do not have the required permissions to view the files attached to this post.

Post

People tend to just apply EQ, waveshaping (eg. tanh), and then maybe some dynamics controls and assume they have "got it".

Mmm, no, this is how we made it 20 years ago. Today descent digital implementations model classic effects in much more accurate and detailed way (for example of one of the typical modern methods see viewtopic.php?f=33&t=498122).

As of this "distortion via audio-rate phase modulation" effect, do not let the term to trick you. This effect is about creating a distortion itself via constantly modulating the phase-shift of a filter (roughly it's somewhat similar to PM/FM synthesis). While "phase distortion" in classical pedals is just "static" (i.e. never modulated*) phases-shift(s) of various algorithm stages stacked over each other.

---
* - not counting of course that if we have a non-linear unit in a filter's feedback (and in many "classical" circuits we do) then the filter response (including phase-shift) becomes modulated by the input signal as well. So at some point of view the final result of either algorithm may be seen as sort of overlapping in theory. Still these are distinct effects (and while the PD algorithm can sound cool and "analog" - it does not really model anything but itself).

Post Reply

Return to “DSP and Plugin Development”