multigrain/sequencer.scd

47 lines
859 B
Plaintext
Raw Normal View History

2023-10-01 02:21:40 +00:00
// 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)
});