// metronome code here is a bit gross but easier ~beatsperbar = 4; ~bps = ~beatsperbar / ~buflen; ~tc = TempoClock.new(~bps); SynthDef(\metronome, { arg out=0, amp=1, pan=0, filter=1000, atk=0.01, rel=0.1; var sig, env; env = EnvGen.kr(Env.perc(atk, rel, amp), doneAction: Done.freeSelf); sig = HPF.ar(WhiteNoise.ar(), filter); Out.ar(out, Pan2.ar(sig * env, pan)); } ).add; ~metrob = Bus.audio(s, 2); ~metromix = SynthDef(\metromix, { arg in=1, out=0, amp=1; Out.ar(out, amp * In.ar(in, 2)); }).play(s, [\in, ~metrob, \out, 0, \amp, 0]); ~metronome = Pbind( \instrument, \metronome, \dur, 1, \amp, 0.5, \pan, 0, \out, ~metrob ).play(~tc); ~to.button('/grains/metronome', 0, { |v| // reset tempo when turning metronome on if( v == 1, { ~bps = ~beatsperbar / ~buflen; ~tc.tempo_(~bps); }); // FIXME ~metromix.set(\amp, v) });