FMBell
Example
timbre.utils.exports("random.choice");
var synth = T("+");
function play(f) {
var op1, op2, op3, op4, op5, op6;
op4 = T("*", T("sin", 100, 0.2),
T("perc", 100).bang());
op6 = T("*", T("sin", f * 9.04, 0.05),
T("perc", 2500).bang());
op5 = T("*", T("oscx", T("+", T("phasor", f * 0.99), op6), 0.1),
T("perc", 250).bang()) ;
op3 = T("*", T("oscx", T("+", T("phasor", f * 1.01), op4, op5), 0.25),
T("perc", 2500).bang());
op2 = T("*", T("oscx", T("phasor", f * 1.025, 0.001)),
T("perc", 2500).bang());
op1 = T("*", T("oscx", T("+", T("phasor", f * 0.9998), op2), 0.08),
T("perc", 3500).bang());
synth.append( T("+", op1, op3) );
if (synth.args.length > 4) synth.args.shift();
}
var timer = T("interval", 800, function() {
var m, k1, k2;
k1 = choice([-1,0,0,3,3,3,7,7,8,9]);
k2 = choice([-1,-1,-1,3,3,5,7,8,10,11]);
if (k1 !== -1) {
if (k2 === -1) {
m = k1 + 57 - 12;
play(timbre.utils.mtof(m + 0));
} else {
m = k1 + 57;
play(timbre.utils.mtof(m + 0));
play(timbre.utils.mtof(m + k2));
}
}
});
synth.onplay = function() {
timer.on();
};
synth.onpause = function() {
timer.off();
};
synth.play();
See Also:
T("oscx")
T("phasor")