[PD] Detect silence inArray and resize

Matteo Sisti Sette matteosistisette at gmail.com
Sun Apr 4 10:56:54 CEST 2010

 > anyone have any idea how to do this?

The first approach that comes to my mind and that I would try is:

- use [env~] (or anything similar) to measure the amplitude of the signal

- start a [timer] when you start recording

- set TWO thresholds: one high threshold to detect when the "note" has 
begun (attack) and a low threshold to detect that it has finished.

- Only after the signal amplitude has become greater than the HIGH 
threshold _and_ when it becomes again lower than the LOW threshold, then 
you fire the right inlet of the [timer] to measure the time passed since 
the beginning: you multiply by the sampling rate and you obtain the size.

That is, you have to emulate the behaviour of a [threshold~] object and 
use its "rest" bang (see threshold help patch).
Since you're probably gonna use [env~] you cannot actually use 
[threshold~] but it's very easy to emulate its behaviour (at least 
simplified as described here which is enough for this purpose).

- Be sure your patch produces the size only once within the recording 
time (which is predetermined if i understood correctly). If you want to 
allow two or more fff staccato notes to be recorded in one "sample", 
then take the _last_ occurrence of the abovedescribed condition (one 
transition up the high threshold + one transition below the lower 
threshold); if you want to allow only one fff staccato note to be played 
(and suppose so), then take the _first_ occurrence.

This is certainly a very simple and probably a bit naif approach, but I 
would give it at least a try before diving into something more complicated.

Hope it helped


Matteo Sisti Sette
matteosistisette at gmail.com

More information about the Pd-list mailing list