Schmidt Schmidt trigger
Schmidt.ar(in, lo, hi)
Schmidt.kr(in, lo, hi)
When in crosses to greater than hi, output 1.0, then when signal crosses lower than lo output 0.0. Uses the formula if(out == 1, { if(in < lo, { out = 0.0 }) }, { if(in > hi, { out = 1.0 }) }). Output is initially zero.
in - signal to be tested
lo - low threshold
hi - high threshold
Server.internal.boot;
{ Schmidt.kr(SinOsc.kr(1, 0, 0.2), -0.15, 0.15)}.scope; // see the trigger
{ Schmidt.kr(MouseX.kr(0, 1), 0.2, 0.8)}.scope; // try it with the cursor
// threshold octave jumps
(
{
var in = LFNoise1.kr(3);
var octave = Schmidt.kr(in, -0.15, 0.15) + 1;
SinOsc.ar(in * 200 + 500 * octave, 0, 0.1)
}.scope;
)