// SIMPLE ENVELOPE FOLLOWER, by P. Cook
/*
Hi all. I keep meaning to post to this list about the under-exploited
feature that all unit generators have, in that you can cause their inputs
to multiply rather than add. As an example, here's a simple power
envelope follower that doesn't require sample-level chuck intervention. A
gain UG is used to square the incoming A/D signal (try it on your built-in
mic), then a OnePole UG is used as a "leaky integrator" to keep a running
estimate of the signal power. The main loop wakes up each 100 ms and
checks the power, and prints out a message if it's over a certain level.
You might need to change the threshold, but you get the idea.
*/
// patch
adc => Gain g => OnePole p => blackhole;
// square the input
adc => g;
// multiply
3 => g.op;
// set pole position
0.99 => p.pole;
// loop on
while( true )
{
if( p.last() > 0.01 )
{
<<< "BANG!!" >>>;
80::ms => now;
}
20::ms => now;
}