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.
chris@mccormick.cx http://mccormick.cx
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.
hi...
the common way people do it is to send a line message to send the audio level to zero at the start and end of each sound / loop / whatever. a line ramp taking only 5 or 10 milliseconds usually works.
i was doing this for a long time, but now i crossfade the end of the first loop / beat, with the start of the next loop / beat. this means you don't get an audio drop (even a tiny one) at the end of each loop.
On 5/23/05, matthew jones mj@isvr.soton.ac.uk wrote:
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.
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On Mon, May 23, 2005 at 07:49:04PM +0900, hard off wrote:
the common way people do it is to send a line message to send the audio level to zero at the start and end of each sound / loop / whatever. a line ramp taking only 5 or 10 milliseconds usually works.
Hi,
Thanks for the tip - I tried this one but for drum beats with long bass noises the tremolo was very noticeable, and quite annoying.
i was doing this for a long time, but now i crossfade the end of the first loop / beat, with the start of the next loop / beat. this means you don't get an audio drop (even a tiny one) at the end of each loop.
Sounds good, I'll try that one out. For the sake of search engines I am now going to write the words de-click and getting rid of clicks.
Best,
Chris.
On 5/23/05, matthew jones mj@isvr.soton.ac.uk wrote:
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.
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
chris@mccormick.cx http://mccormick.cx
Chris McCormick wrote:
On Mon, May 23, 2005 at 07:49:04PM +0900, hard off wrote:
the common way people do it is to send a line message to send the audio level to zero at the start and end of each sound / loop / whatever. a line ramp taking only 5 or 10 milliseconds usually works.
Hi,
Thanks for the tip - I tried this one but for drum beats with long bass noises the tremolo was very noticeable, and quite annoying.
if it's just for straight forward loops, thomas grill's "xsample" library is great for non-clicking loops. "xgroove" in its newest release provides a function for crossfading between the sample end and startpoint, where the region length remains the same
ciao
oliver
On Mon, May 23, 2005 at 09:35:02AM +0100, matthew jones wrote:
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.
Yeah no, thought of that one - no good.
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..
This sounds a bit more like what I want. I want to filter out large amplitude discontinuities in the signal without filtering all high frequencies, especially not those of 'normal' amplitude.
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.
Cool, thanks for the idea. I'll do that if I can't get a discontinuity detector working.
Best,
chris@mccormick.cx http://mccormick.cx