// Simple saw // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var synth = T("OscGen", {wave:"saw", mul:0.25}).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { var freq = midicps.at(midi); synth.noteOnWithFreq(freq, 100); } }).on("keyup", function(e) { var midi = keydict.at(e.keyCode); if (midi) { synth.noteOff(midi, 100); } }).start();
// Simple sin // derived from “Simple saw” var synth = T("OscGen", {wave:"sin", mul:0.25}).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { var freq = midicps.at(midi); synth.noteOnWithFreq(freq, 100); } }).on("keyup", function(e) { var midi = keydict.at(e.keyCode); if (midi) { synth.noteOff(midi, 100); } }).start();
// High saw and Low sin // derived from “Simple saw” and “Simple sin” var synthsaw = T("OscGen", {wave:"saw", mul:0.25}).play(); var synthsin = T("OscGen", {wave:"sin", mul:0.25}).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { var freq = midicps.at(midi); synthsaw.noteOnWithFreq(freq, 100); synthsin.noteOnWithFreq(freq/2, 100); } }).start();
// Frequency control // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var VCO = T("saw", {freq:880, mul:0.2}).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { VCO.freq.value = midicps.at(midi); } }).start();
// Vibrato // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var LFO = T("sin", {freq:"250ms", mul:5, add:880}).kr(); var VCO = T("saw", {freq:LFO, mul:0.2}).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { LFO.add = midicps.at(midi); } }).start();
// Portament // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var glide = T("param", {value:880}); var VCO = T("saw" , {freq:glide, mul:0.2}).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { glide.linTo(midicps.at(midi), "100ms"); } }).start();
// VCF // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var VCO = T("saw", {mul:0.2}); var VCF = T("lpf", {cutoff:1600, Q:10}, VCO).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { VCO.freq.value = midicps.at(midi); } }).start();
// Envelope filtering // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var table = [200, [4800, 150], [2400, 500]]; var cutoff = T("env", {table:table}).bang(); var VCO = T("saw", {mul:0.2}); var VCF = T("lpf", {cutoff:cutoff, Q:10}, VCO).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { VCO.freq.value = midicps.at(midi); cutoff.bang(); } }).start();
// Auto wah // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var cutoff = T("sin", {freq:"400ms", mul:300, add:1760}).kr(); var VCO = T("saw", {mul:0.2}); var VCF = T("lpf", {cutoff:cutoff, Q:20}, VCO).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { var freq = midicps.at(midi); VCO.freq.value = freq; cutoff.add.value = freq * 2; cutoff.bang(); } }).start();
// Amplitude envelope // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var VCO = T("saw" , {mul:0.2}); var EG = T("adsr", {a:100, d:1500, s:0.75, r:500}, VCO).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { VCO.freq.value = midicps.at(midi); EG.bang(); } }).on("keyup", function(e) { var midi = keydict.at(e.keyCode); if (midi) { EG.release(); } }).start();
// Tremolo // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var VCO = T("saw" , {mul:0.5}); var EG = T("+tri", {freq:"50ms", mul:0.2, add:0.5}); var synth = T("*", VCO, EG).play(); var keydict = T("ndict.key"); var midicps = T("midicps"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { VCO.freq.value = midicps.at(midi); } }).start();
// Polyphonic // from http://mohayonao.github.io/timbre.js/PragmaSynth.html var synth = T("SynthDef").play(); synth.def = function(opts) { var VCO = T("saw", {freq:opts.freq}); var cutoff = T("env", {table:[8000, [opts.freq, 500]]}).bang(); var VCF = T("lpf", {cutoff:cutoff, Q:5}, VCO); var EG = T("adsr", {a:150, d:500, s:0.45, r:1500, lv:0.6}); var VCA = EG.append(VCF).bang(); return VCA; }; var keydict = T("ndict.key"); T("keyboard").on("keydown", function(e) { var midi = keydict.at(e.keyCode); if (midi) { synth.noteOn(midi); } }).on("keyup", function(e) { var midi = keydict.at(e.keyCode); if (midi) { synth.noteOff(midi); } }).start();
// // from http://mohayonao.github.io/timbre.js/PragmaSynth.html