Hi!
Im currently working with a project developing tactile feedback for stimulation of disabled children.
Im getting quite far in using a rough surface, a contact microphone and buttshaker. My signal path is something like mic->bandpass->filering->amplitude control of an oscillator->lowpass->speaker
i wish to get the sound a bit more interesting, so i would like to add an echoeffect something like: -Starts when there has been no sound (amplitude=0 after filtering) for 0,8 seconds. -Playbacks the last 1,6 seconds of sound (then there will be 0,8 seconds of noise and 0,8 seconds of silence) with 60% amplitude -Repeat the echo with decreasing amplitude (i.e 45, 30 and 0%)
I believe i should use delay lines but i have a hard time controlling them the way i want.
Some help would be really appreciated by me and the children
/Stefan
Hi Stefan,
I'm sorry i didn't get your first requirement "Starts when there has been no sound for 0,8 seconds". Could you be a little more specific?
If you need to have a strong control over the echo i think you should probably use tables instead of delay lines, because you can write and read to an from a table at any moment and at any point in the table.
Pierre
2011/3/28 Stefan Magnusson stefan.magnusson@gmail.com
Hi!
Im currently working with a project developing tactile feedback for stimulation of disabled children.
Im getting quite far in using a rough surface, a contact microphone and buttshaker. My signal path is something like mic->bandpass->filering->amplitude control of an oscillator->lowpass->speaker
i wish to get the sound a bit more interesting, so i would like to add an echoeffect something like: -Starts when there has been no sound (amplitude=0 after filtering) for 0,8 seconds. -Playbacks the last 1,6 seconds of sound (then there will be 0,8 seconds of noise and 0,8 seconds of silence) with 60% amplitude -Repeat the echo with decreasing amplitude (i.e 45, 30 and 0%)
I believe i should use delay lines but i have a hard time controlling them the way i want.
Some help would be really appreciated by me and the children
/Stefan
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hi!
I only want the effect to kick in after a certain amount of silence (where silence is defined as amplitude zero) so that does not interferer when there is continuous sound. Clear enough?
/Stefan
On Mon, Mar 28, 2011 at 10:02 AM, Pierre Massat pimassat@gmail.com wrote:
Hi Stefan,
I'm sorry i didn't get your first requirement "Starts when there has been no sound for 0,8 seconds". Could you be a little more specific?
If you need to have a strong control over the echo i think you should probably use tables instead of delay lines, because you can write and read to an from a table at any moment and at any point in the table.
Pierre
So you don't want the original sound and the echo to overlap? Then the question is : how do you define silence? Do you have a reliable means of knowing for sure when silence begins? In my experience you can never get an amplitude of 0 in a sound originating from a microphone. If you can manage to know exactly when silence starts, then i think you could achieve what you want by using a single delay line. I would feed the delay line (delwrite~) with the incoming sound continuously, and i would switch off the output of the line (delread~, use *~ 0 after it to switch it off). The length of the delay would be constant and equal to 1600 ms. The feedback level XX (use *~ XX between the output of delread and the input of delwrite) would be equal to 0 when the delay is off (so that you only get the last 1,6 seconds of sound when you switch it on). Then everytime you detect silence you wait for 0,8 seconds and you send messages to both the output switch (ramp up from 0 to 1) and the feedback (ramp from 0 to whatever suits your needs). Also, i would turn the delay off automatically after a fixed period of time (depending on the feedback level) to make sure that the echo will be off when a new sound occurs. Hope this helps...
Pierre
2011/3/28 Stefan Magnusson stefan.magnusson@gmail.com
Hi!
I only want the effect to kick in after a certain amount of silence (where silence is defined as amplitude zero) so that does not interferer when there is continuous sound. Clear enough?
/Stefan
On Mon, Mar 28, 2011 at 10:02 AM, Pierre Massat pimassat@gmail.comwrote:
Hi Stefan,
I'm sorry i didn't get your first requirement "Starts when there has been no sound for 0,8 seconds". Could you be a little more specific?
If you need to have a strong control over the echo i think you should probably use tables instead of delay lines, because you can write and read to an from a table at any moment and at any point in the table.
Pierre
The first requirement is tricky, it's very rare you'll get amplitude 0 (or, more accurately, minus infinity) from an active input, I'd suggest [env~] and [<] with a number to define tolerance, it's a tricky business, however.
Delay wise you could always use the classic delay-repeat model which is something like
(sound source) [r~ feedback] | / [delwrite~ delayname 1000]
[delread~ delayname 1000] | \ [dac~] [*~ 0.4] | [s~ feedback]
which will basically echo to silence
Or you could try a more controlled example which would be something like
(sound source) | [delwrite~ del1 1000]
[delread~ del1 1000]
|
[*~ .5] [dac~]
|
[delwrite~ del2 500]
[delread~ del2 500] | [dac~]
which would mean the echoes get quieter and closer together. You could carry on this chain as long as you want, modifying each echo in the chain to your own specification.
I'm not sure how helpful this is, but it might be what you're after.
Andrew
Date: Mon, 28 Mar 2011 10:26:09 +0200 From: pimassat@gmail.com To: stefan.magnusson@gmail.com CC: pd-list@iem.at Subject: Re: [PD] Echo-effect
So you don't want the original sound and the echo to overlap? Then the question is : how do you define silence? Do you have a reliable means of knowing for sure when silence begins? In my experience you can never get an amplitude of 0 in a sound originating from a microphone. If you can manage to know exactly when silence starts, then i think you could achieve what you want by using a single delay line. I would feed the delay line (delwrite~) with the incoming sound continuously, and i would switch off the output of the line (delread~, use *~ 0 after it to switch it off). The length of the delay would be constant and equal to 1600 ms. The feedback level XX (use *~ XX between the output of delread and the input of delwrite) would be equal to 0 when the delay is off (so that you only get the last 1,6 seconds of sound when you switch it on). Then everytime you detect silence you wait for 0,8 seconds and you send messages to both the output switch (ramp up from 0 to 1) and the feedback (ramp from 0 to whatever suits your needs). Also, i would turn the delay off automatically after a fixed period of time (depending on the feedback level) to make sure that the echo will be off when a new sound occurs.
Hope this helps...
Pierre
2011/3/28 Stefan Magnusson stefan.magnusson@gmail.com
Hi! I only want the effect to kick in after a certain amount of silence (where silence is defined as amplitude zero) so that does not interferer when there is continuous sound. Clear enough?
/Stefan
On Mon, Mar 28, 2011 at 10:02 AM, Pierre Massat pimassat@gmail.com wrote:
Hi Stefan,
I'm sorry i didn't get your first requirement "Starts when there has been no sound for 0,8 seconds". Could you be a little more specific?
If you need to have a strong control over the echo i think you should probably use tables instead of delay lines, because you can write and read to an from a table at any moment and at any point in the table.
Pierre
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list