class:: DetectSilence
summary:: When input falls below a threshold, evaluate doneAction.
categories::  UGens>Synth control, UGens>Analysis>Amplitude


Description::

When input falls below a threshold, evaluate doneAction.

code::
// this frees after the Decay has become quiet enough for a long enough time
{ var signal = Decay.ar(Impulse.ar(0), 2, PinkNoise.ar(0.2)); DetectSilence.ar(signal, doneAction:2); signal }.play;
::

note::
If the input signal starts with silence at the beginning of the synth's duration, then DetectSilence will wait indefinitely until the first sound before starting to monitor for silence. To avoid a hanging silent sound where the input may remain zero, you can add an envelope to its input
::


classmethods::

method::ar, kr

argument::in

The input signal.


argument::amp

When input falls below this for long enough, evaluate

code::doneAction:: .


argument::time

The minimum duration for which input must fall below

code::amp::  before this triggers.


argument::doneAction

An integer representing the doneAction. See

link::Reference/UGen-doneActions::  for more detail.

returns::
This UGen outputs 1 if silence is detected, otherwise 0.

Examples::

code::

(
SynthDef("detectSilence-help", { arg out;
	var z;
	z = SinOsc.ar(Rand(400, 700), 0, LFDNoise3.kr(8).max(0)).softclip * 0.3;
	DetectSilence.ar(z, doneAction:2);
	Out.ar(out, z);
}).add;
)

Synth("detectSilence-help");
Synth("detectSilence-help");
Synth("detectSilence-help");


(
Task({
	loop({
		Synth("detectSilence-help");
		[0.5, 1].choose.wait;
	})
}).play;
)

::
