class:: Schmidt
summary:: Schmidt trigger.
related:: Classes/InRange, Classes/InRect
categories::  UGens>Maths


Description::

When  code::in::  crosses to greater than
code::hi:: , output 1, then when signal crosses lower
than  code::lo::  output 0. Uses the formula:

code::

if (out == 1, { if (in < lo, { out = 0.0 }) }, { if (in > hi, { out = 1.0 }) }).

::

Output is initially zero.


classmethods::

method::ar, kr

argument::in

Signal to be tested.


argument::lo

Low threshold.


argument::hi

High threshold.


Examples::

code::

s.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;
)

::

