More clipping...
I'm having another issue with clipping. I'm looping an audio sample via groove~. Then that signal is being sent to delay~. Then I have a slider going into the delay~ to alter the delay time. But when I change the delay time while the audio sample is still playing, it of course clips. I tried using deltaclip~ which works, except it alters the overall sound to much.
Anyone have any ideas?
The clicks you hear while altering the delay time are most likely caused by discontinuities in the delay setting - i.e. you need to send some sort of "smoothed" change that avoids leaps. Not so easy to do using integers, as [delay~] requires. If you want to dynamically change delay times, I might suggest that you look into [tapin~] and [tapout~] and use a signal to change the delay time setting through something like [line~].
Let me know if you get stuck with that approach and I can probably dig up an example patch to show you.
Thanks smill! I'll have to try that out. Is it called a click? What's a clip then?
Clipping is distortion caused by exceeding the dynamic range of the system. In analog systems, the positive and/or negative peaks of the waveform are litterally clipped off if you look at it on a scope - hence the term 'clipping.'
A click, on the other hand, is just simply any type of sudden spike or discontinuity in the waveform that is audible as a, well, click...
with tap delays altered in such a way you are going to get a different artifact which is that strange tape delay pitch sweep (turntable style pitching up and down sort of sounds) there is also allpass~ which I think does a bit better job of not clicking.. but tap is great, I use it for most of my delays. You could also do really technical solution which is to do a sort of window/envelope that turns down the feedback delay audio for a very short time whne the delay time is altered, and that might take out the click.
One possibility, as alluded to before, would be to "duck" the amplitude of the delay line output very briefly to mask the clip. But there's another approach.
I think that we have Jedi Master Richard Dudas to thank for this particularly elegant way of handling matters. Whether or not it meets your specific needs will be a matter of your own personal tastes.
great work gregory! though the solution you posted seems to work until I turn up the feedback all the way.. what do you think needs to be adjusted to fix this? could it have to do with sample vector size?
I think this is because the feedback loop operates independently of the crossfading between delay times. You may get better results by feeding back the output of the last *~ object rather than the tapout~ object.