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