Variable/settable Phase control

Hi all,

Anyone have some ideas on how to get a variable (settable) phase change based on frequencies using Nyquist?

Intended use:

To introduce a settable phase change (0 - 180 degrees) but based on frequency ranges.
The first part is easy, creating the filters in Nyquist.
Was thinking of three or four high order BPF’s to create the bands, each followed with a phase control, the output will then be “summed”.
The filters will introduce phase differences/delays, but that can be offset with the second part, the variable phase control.

The actual degrees in phase change does not have to be known exactly, as long as there is a settable change.
The settings can then be stored in presets as per usual.


If you use IIR filters then the filter itself will introduce frequency dependent phase shift that you will need to take into account.
Using an FFT filter will give you linear phase delay, which in the case of Audacity’s “Filter Curve EQ” is compensated for by the effect to give zero phase shift.

Phase shift could be introduced either with a delay, or an all-pass filter, but in both cases the amount of phase shift is frequency dependent.

Thanks Steve.
Yes, the delay will be dependent on frequency, hence my idea to limit the band of frequencies that each filter deals with.

I’m leaning towards the following:

(apply-banded-delay s lowp highp num-bands lowd highd fb wet)

lowp and highp, are in steps and not Hz, which is fine, however since I don’t know what the slope
of the function is, not sure what to enter for them.
It would be no good to enter steps that are meaningless if the filters overlap too much.

lowd and highd, are then the amount of delay introduced.
If the delay is kept small, then it may just be the ticket, will experiment further with this.
Do you think this may work or, am I barking up the wrong tree here?

I don’t know. It depends what this is for.

The idea is to introduce delays based on frequency.
When I tried the above function, Nyquist complained that it’s “unbound”.
Turns out an old Nyquist lib called bandfx.lsp is required, which I installed
and included it in nyinit.lsp, all good now.
Some very nice functions in there, not sure why it’s not included with Audacity.

Works well with 3.1.3, not tried it as yet on 2.4.2