Hello folks,
I’ve been experimenting with daisy seed the past couple of days and I really like it. I plan to create a delay and reverb module with it and it’s going well, but I cannot seem to escape completely one annoing issue. When you change the delay time it creates very annoing clicks. When I connected it to a potentiometer it would click all the time because of noise in the ADC. I made a function to stabilize it and now its greatly reduced, but still if I want to change it and rotate the pot, it would create these annoing clicks. Is there anyway that this can be avoided? I guess the problem is that when the length of the buffer is changed, there are new samples that have very different values than the previous sample and that creates the click. I would think its possible to smooth the samples somehow but i don’t know exactly how. Maybe there could be some check in the Audio Callback if the potentiometer has just changed it’s value to use the old sample and not try to read the new one?
The other problem I’m having is that the Reverb doesn’t work with 96Khz for some reason. Is this because the processor cannot cope and just crashes, or is there some bug somewhere? Thanks!
You probably need some interpolation.
This site is ripe with information on how to implement it.
Thanks, that looks like a great resource! I tried to implement it by saving the last sample to a variable, and then interpolating with the current one. In the link you gave they interpolate between the current and next, but I don’t see how I could do that since the daisy seed delay line tool only gives the current sample. Anyway it looks like it is doing the job atleast partially. It’s not quite perfect but it definitely reduces the clicking alot. I don’t know how this affects the dynamic range though. I didn’t notice a noticable worsening of the sound, but I got to experiment a bit more.
Ah you’re using the DelayLine class. By the looks of it, interpolation is already implemented in that class. Try using any of the other Read methods, and see if that makes it sound better. And yes, linear interpolation induces a low pass filter in the signal. You could try the more advanced interpolation techniques mentioned in at the link I posted previously.
I think that combined with filtering on the parameter should solve your issues. You could try to implement linear interpolation on the delay time as well, smoothing out the change in delay time a bit.
Hi, how do I access the „other Read methods“?
I cannot find documentation, it only said „interpolated if necessary“
thanks!
You can find the other methods in:
DaisyExamples/DaisySP/Source/Utility/delayline.h
I use the fonepole function in daisysp
Declare a variable outside of main: float delay_time_smoothed
Then use
fonepole(delay_time_smoothed, target_time, 0.0001f)
Fixed it for me
thanks, I will try this.
the delay did not crackle when changing time, it just starts crackling after the 3rd (or so) repeat.
then the whole sound is a bag of chips when you step on it, even when the potentiometer is not touched.
Did you try 48kHz?
Did you try with 0 feedback?
Without seeing your code, you will only get guesses.
I learned that I used the fonepole wrong, will get back at it.