First time here? Check out the FAQ!

Is there some internal clipping on the delay in allpass mode?

+4 votes
When the delay in kyma is used in all pass mode, if you input a full scale click and set the scale to 1 and view the results on a scope, all looks good until you reach feedback of about 0.8 where the single (non delayed) spike stops growing negatively and goes less in level until you reach feedback of 1 where the output is silent. You would expect feedback of 1 to give the input at full scale inverted (but with the tail silenced which does happen). If you feed the input with a lower level signal the feedback can be set higher before the gain flips but it always dies away to nothing when feedback of 1 is reached only quicker. Is this a known issue?
asked Mar 29, 2021 in Using Kyma by pete-johnston (Practitioner) (670 points)
Here’s a related article by Sean Costello of Valhalla DSP for those curious to know more about context for Schroeder All Pass delay

1 Answer

0 votes

The DelayWithFeedback, when Allpass is selected, implements a Schroeder allpass delay (as shown below), but with an inverted output:

where b0 and aM are both equal to Feedback.

When an impulse is sent into the DelayWithFeedback, you will get an immediate impulse out, scaled by -Feedback. After M samples, the impulse will appear at the output of the internal delay line; the output will be the difference of that impulse and a scaled version of that same impulse. The end result is that the amplitude of the first delayed impulse output will be 1 - Feedback squared.

We tried to replicate your result, but did not see/hear the same behavior. Can you confirm that you are seeing this in the most recent version of Kyma (Kyma 7+)?

answered Apr 2, 2021 by ssc (Savant) (127,080 points)
Yes if feedback or b0 = 1 or -1 you expect no delayed signal but you do expect the input (not delayed) to feed straight through to the output at full level (or inverted if -1). in the attached sound, when !FB gets close to 1 or -1 there is no output at all (delayed or direct). Sorry qa will not allow me to attach a file here. (SSC attached the file here:
I've discovered what the problem is. If you set the gap to 0.005 the problem becomes more pronounced. What is happening is that although we cannot see it the output of the delay is storing a DC bias when the !feedback gets close to 1 and although this gets canceled out with the second path through -am then through b0 to the mixer it makes the input clip. it seems to be a problem with this config if not used with floating point. There is another configuration of all pass that doesn't suffer from this problem but gives the same results in all other cases, and I've made a working copy of it in file "OtherAllPass test.kym" (which I can't attach here nor can I upload the diagram so it probably shown up as a new question somewhere).

Working alternative to the all pass filter attachment (from pete-johnston, reposted by SSC):

the attachment

and this is the second .kym file with home made working Allpass
That’s interesting. What kind of applications would need such a setting of a Schroeder AllPass?
Here is that PJ Allpass delay as an encapsulation
Hi Cristian
if you can change the feedback amount (and inversely the feedforward amount) then if a string of all passes were placed in series then at one extreme it will act as a multi tap and at the mid point the multi tap would have lots of extra repeats making it a diffusion control. In the original, setting the feedback to the extreme will make the output clip to silence.