I'm currently increasing the quality of my ADAU1452 audio effects. I have successfully removed any kind of clicks and pops from every effects but chorus and delay. In both effects, I encounter the same click source: when I change the delay amount, it creates clicks. Here is a simplified schematic of the delay. It is easier to understand than the chorus one :
Feedback is set to about 0.1, or we have too much feedback and it starts to oscillate.
Both dry(input) and wet(delayed) signals are mixed together with a HW slew mux.
To illustrate the problem, I chose 0*dry+1*wet, so I removed the mux.
Now I'm using a uC to safeload the delay values. From 10ms to 200ms by 10ms steps. With a ~1kHz sinus at the input. Here is the envelope:
The amplitude show no oscillation due to too much feedback.
As you can see, when you change the delay amount, there is a discontinuity in the phase, leading to a brutal amplitude change: a click!
I know that it's due to the buffer size change. If you remove/add some samples in the start/end of the buffer, and do the addition with the original sinus, then it's likely to have phase problems.
If you have an audio signal with more sinus than one, you will have more problems .
Note that I know when clicks will occur.
I tried to mute the delayed path for a certain amount of time using the following HW slew mux : didn't work. It delays the clicks, but do not remove them.
I tried to perform 10x1ms steps instead of a single 10ms step: didn't work, leads to 10x more clicks .
8th order low-pass filter, only active during clicks: worked, but it's a bad idea. There is click noise around 1kHz, so we can't filter it in an inaudible way.
Any other ideas?