Allpass-filter bug?


#1

The Allpass filter seems to behave in a strange way:
when the knob is at (64) 1.000x I would expect that it would use the exact value of the 'delay' . However, it doesn't do anything . instead it gives a very loud 'click' when setting the value.

And I have a few questions about this module:
- what is the knob for? why is there a negative value possible for the delay?
- is the 'delay' in ms or samples?

Also a request smile
For a good reverb it is useful to modulate the allpass filters a little. Could we have an input on this module to change the delay-time ? (it reduces the metallic sound of short reverbs)


#2

If I recall correctly it was modeled after https://ccrma.stanford.edu/~jos/pasp/Allpass_Two_Combs.html
Delay time is in samples as this needs to be a whole number.
You can verify, when feeding it a sine wave, the output is also a sine wave of the same amplitude at all frequencies.


#3

Unfortunately I don't understand the math.
So the delay setting is for the feedforward, and the knob parameter is the feedback? so only at a setting of -1.000 it actually is an allpass? (and at other setting some kind of comb-fllter )

Should it not be something like

float state = 0;
float c = 0.1;
for(unsigned i = 0; i < nSamples; ++i)
{
   output[i] = state + c * input[i];
   state = input[i] - c * output[i];
}

(I have no idea how to implement this in a module though).


#4

The delay parameter is the delay time in samples. z^-M notates a delay line of M samples. Your code only has a single sample delay.
The feedback and feedforward are equal amounts, both controlled by the knob, to always obtain an allpass characteristic.


#5

Is it possible to add delay time modulation to allpass by editing it in object editor?