filter which looks for discontinuities greater than a certain amplitude
Well at first that sounds just like a low-pass filter... Which would probably ruin the sound of the signal passing through it.
Two things: you could write an abstraction/external to do a fancy non-linear filtering, based on a threshold. I think I remember seeing stuff in Max related to this, like the 'temperature' of the signal which was simply the difference between this sample and the last (..?). So you could possibly control the cutoff of the low-pass filter based on the output of a 1-tap high-pass IIR filter that simply gave you the difference between consecutive samples.. But this would bring plenty of difficulties related to reaction speed and distortion. Oh, but you know when it is going to click..anyway..
Secondly, the nicest approach would be to use windows (or envelopes) where before you jump to a new place in the array, you begin fading in the new position output (and fading out the old position output). If you use half-sine waves around 50ms in length as your windows then I would be surprised if you ever heard any more clicks.
Matt
-=-=-=-=-=-=-=-=-=-=-=- http://www.loopit.org -=-=-=-=-=-=-=-=-=-=-=- ----- Original Message ----- From: "Chris McCormick" chris@mccormick.cx To: pd-list@iem.at Sent: Monday, May 23, 2005 8:01 AM Subject: [PD] removing clicks
Hi!
Though this seems to be discussed every second day on the music-dsp list, I couldn't find anything pd-specific in the archives. If anyone has a pd specific idea of implementation of this I'd be grateful, preferably using native pd elements (I'd rather build it as an abstraction than as an external).
There's a GOP abstraction which I constructed some time ago and have been using for months. It's pretty elementary - loops drum beats and jumps between different positions in the beat. My problem is a decades old one - discontinuities in the wave-form at the jump time result in an audible 'click' when the amplitude of the wave is loud enough to hear it.
Someone is painting the office downstairs so this might be a paint-fume infused dsp-n00b simplification, but I guess what I'm looking for is a filter which looks for discontinuities greater than a certain amplitude and only lets the wave jump by a smaller amount than that. Is there any way I can use expr~ to evaluate an expression which takes into account previous values which passed through it?
Best regards,
Chris.