class:: Stepper summary:: Pulse counter. related:: Classes/PulseCount categories:: UGens>Triggers Description:: Each trigger increments a counter which is output as a signal. The counter wraps between code::min:: and code::max:: . classmethods:: method::ar, kr argument::trig The trigger. Trigger can be any signal. A trigger happens when the signal changes from non-positive to positive. argument::reset Resets the counter to code::resetval:: when triggered. argument::min Minimum value of the counter. argument::max Maximum value of the counter. argument::step Step value each trigger. May be negative. argument::resetval Value to which the counter is reset when it receives a reset trigger. If nil, then this is patched to code::min:: . Examples:: code:: SynthDef("help-Stepper",{ arg out=0; Out.ar(out, SinOsc.ar( Stepper.kr(Impulse.kr(10), 0, 4, 16, 1) * 100, 0, 0.05 ) ) }).play; SynthDef("help-Stepper",{ arg out=0; Out.ar(out, SinOsc.ar( Stepper.kr(Impulse.kr(10), 0, 4, 16, -3) * 100, 0, 0.05 ) ) }).play; SynthDef("help-Stepper",{ arg out=0; Out.ar(out, SinOsc.ar( Stepper.kr(Impulse.kr(10), 0, 4, 16, 4) * 100, 0, 0.05 ) ) }).play; /////////////////////////////////////////////////////////////////////////////////// // // Using Stepper and BufRd for sequencing // s.boot; s.sendMsg(\b_alloc, 10, 128); m = #[0,3,5,7,10]; a = ({rrand(0,15)}.dup(16).degreeToKey(m) + 36).midicps; s.performList(\sendMsg, \b_setn, 10, 0, a.size, a); ( SynthDef(\stepper, { var rate, clock, index, freq, ffreq, env, out, rev, lfo; rate = MouseX.kr(1,5,1); clock = Impulse.kr(rate); env = Decay2.kr(clock, 0.002, 2.5); index = Stepper.kr(clock, 0, 0, 15, 1, 0); freq = BufRd.kr(1, 10, index, 1, 1); freq = Lag2.kr(freq) + [0,0.3]; ffreq = MouseY.kr(80,1600,1) * (env * 4 + 2); out = Mix.ar(LFPulse.ar(freq * [1, 3/2, 2], 0, 0.3)); out = RLPF.ar(out, ffreq, 0.3, env); out = RLPF.ar(out, ffreq, 0.3, env); out = out * 0.02; // echo out = CombL.ar(out, 1, 0.66/rate, 2, 0.8, out); // reverb rev = out; 5.do { rev = AllpassN.ar(rev, 0.05, {0.05.rand}.dup, rrand(1.5,2.0)) }; out = out + (0.3 * rev); out = LeakDC.ar(out); // flanger lfo = SinOsc.kr(0.2, [0,0.5pi], 0.0024, 0.0025); 1.do { out = DelayL.ar(out, 0.1, lfo, 1, out) }; // slight bass emphasis out = OnePole.ar(out, 0.9); Out.ar(0, out); }).add; ) s.sendMsg(\s_new, \stepper, 1000, 0, 0); a = ({rrand(0,15)}.dup(16).degreeToKey(m) + 38).midicps; s.performList(\sendMsg, \b_setn, 10, 0, a.size, a); a = a * 2.midiratio; // transpose up 2 semitones s.performList(\sendMsg, \b_setn, 10, 0, a.size, a); ( a = [ 97.999, 195.998, 523.251, 466.164, 195.998, 233.082, 87.307, 391.995, 87.307, 261.626, 195.998, 77.782, 233.082, 195.998, 97.999, 155.563 ]; s.performList(\sendMsg, \b_setn, 10, 0, a.size, a); ) s.sendMsg(\n_free, 1000); ::