Code is this:
s.boot; MIDIClient.init(0,0); MIDIIn.connect(device: 3); (var on; on = NoteOnResponder({ |src, chan, num, veloc| f.value(num); }); q = { on.remove; };) q.value; (SynthDef(\my_osc, { |freq = 400| Out.ar(0, Splay.ar(Saw.ar(freq, Line.kr(1,0,0.1,doneAction: 2)))); }).send(s)) x = Synth(\my_osc); f = { |z| Synth(\my_osc, [\freq, z.midicps]); Routine({ 0.4.wait; Synth(\my_osc, [\freq, (z-12).midicps])}).play; };
I'm not sure I have enough free time to consistently do supercollider-thingies-per-fixed-unit-of-t