{
   "author" : "bbates",
   "name" : "A2",
   "ancestor_list" : [],
   "description" : "",
   "labels" : [],
   "is_private" : null,
   "id" : "1-55e",
   "code" : "//BEGIN SYNTH DEFS////////\r\n(\r\nSynthDef(\"am1\", {arg freq = 440, modfreq = 2, amp = 0.2, att = 0.5, rel = 3;\r\n    var carrier, modulator, env;\r\n    env = Env.perc(\r\n        attackTime: att,\r\n        releaseTime: rel,\r\n        level: amp\r\n    ).kr(2);\r\n    modulator = SinOsc.ar(modfreq).range(0, 1);\r\n    carrier = SinOsc.ar(freq: freq, mul: env * modulator);\r\n    Out.ar(0, carrier ! 2);\r\n}).add;\r\n\r\nSynthDef(\"am2\", {arg freq = 440, modfreq = 2, amp = 0.2, att = 0.01, sus = 0.2, rel = 3, gate = 1, pos = 0;\r\n    var carrier, modulator, env;\r\n    env = Env.asr(\r\n        attackTime: att,\r\n\t\tsustainLevel: sus,\r\n        releaseTime: rel\r\n\t).kr(doneAction: 2, gate: gate, mul: amp);\r\n    modulator = SinOsc.ar(modfreq).range(0, 1);\r\n    carrier = SinOsc.ar(freq: freq, mul: env * modulator);\r\n\tOut.ar(0, Pan2.ar(carrier, pos));\r\n}).add;\r\n\r\nSynthDef(\"fm2\", {arg freq = 440, modindex = 10, amp = 0.1, pos = 0, gate = 1, att = 0.1, rel = 0.3;\r\n\tvar carrier, modulator, freqdev, env, modfreq;\r\n\t// i = d/m, so d = m*i\r\n\tmodindex = Line.kr(modindex, 1, att);\r\n\tmodfreq = freq / 2;\r\n\tfreqdev = modfreq * modindex;\r\n\tmodulator = SinOsc.ar(freq: modfreq, mul: freqdev);\r\n\tcarrier = SinOsc.ar(freq: freq + modulator);\r\n\tenv = Env.asr(\r\n\t\tattackTime: att,\r\n\t\tsustainLevel: amp,\r\n\t\treleaseTime: rel\r\n\t).kr(doneAction: 2, gate: gate);\r\n\tcarrier = Pan2.ar(in: carrier, pos: pos, level: env);\r\n\tOut.ar(0, carrier * 0.5);\r\n}).add;\r\n\r\n(\r\nSynthDef(\"snare\", {arg out = 0, amp = 0.1, att = 0.01, sus = 1, rel = 0.08, ffreq = 10000, pan = 0;\r\n\tvar env, snd;\r\n\tenv = Env.perc(att, sus, rel, amp).kr(doneAction: 2);\r\n\tsnd = BPF.ar(\r\n\t\tin: WhiteNoise.ar,\r\n\t\tfreq: ffreq,\r\n\t\tmul: env\r\n\t);\r\n\tOut.ar(out, Pan2.ar(snd, pan));\r\n}).add;\r\n)\r\n\r\n/////END SYNTH DEFS//\r\n//BEGIN PBINDS///////\r\n\r\n(\r\n~bass = Pbind(\r\n    \\instrument, \"fm2\",\r\n\t\\dur, 2,\r\n\t\\note, Pseq([\r\n\t\tPseq([0, -5, Rest(1), 0, -3, Rest(2), 0, -5], 3),\r\n\t\tPseq([0, -5, -6, -5, -4, -3, -2, -1], 1),\r\n\t], inf),\r\n\t\\ctranspose, -12,\r\n\t\\modindex, Pseq([ 0, 3, 2, 1, 0, 2, 1, 4, 1, 3, 2, 1, 0, 1, 1, 0, 1, 2, 0, 0, 2, 1], inf),\r\n\t\\amp, Pseq([0.3, 0.35, 0.4, 0.35, 0.4, 0.4, 0.3, 0.2], inf),\r\n\t\\att, 0.5,\r\n\t\\rel, 3.5,\r\n\t\\pos, 0\r\n);\r\n\r\n~mel_one = Pbind(\r\n    \\instrument, \"am1\",\r\n    \\midinote, Pseq([84, 79, 76, 70, 82, 79, 76, 70, 81, 79, 76, 70, 80, 77, 76, 77], 9),\r\n    \\dur, 1,\r\n    \\amp, Pwhite(0.15, 0.2),\r\n    \\att, 1.5,\r\n    \\rel, 0.5,\r\n    \\modfreq, Pseq([0, 8, 0, 4], inf),\r\n\t\\pos, Pwhite(-1, 1.0)\r\n);\r\n\r\n~mel_two = Pbind(\r\n\t\\instrument, \"am1\",\r\n\t\\degree, Pseq([0, 2, 0, 2, 0, 2, 0, 2, Rest(1), 2, Rest(1), 2, Rest(1), 2, 0, 2, -2, 2, -2, 2, -2, 2, -2b, -2, -1b, 2, Rest(1), 2, Rest(1), 2, Rest(1), 2], 4),\r\n\t\\modfreq, Pseq([1, 5, 1, 5], inf),\r\n\t\\amp, 0.4,\r\n\t\\dur, 0.5,\r\n\t\\att, 0.01,\r\n\t\\rel, Pwhite(0.3, 0.5),\r\n\t\\pos, Pwhite(-1, 1.0)\r\n);\r\n\r\n~wn = Pbind(\r\n\t\\instrument, \"snare\",\r\n\t\\dur, Pseq([Rest(2), 2], 4),\r\n\t\\att, 0.1,\r\n\t\\rel, Pseq([0.1, 0.3, 0.05, 0,1], inf),\r\n\t\\ffreq, Pseq([10000, 5000, 4000, 5000], inf),\r\n\t\\amp, 0.01\r\n);\r\n\r\n~harm = Pbind(\r\n\t\\instrument, \"am2\",\r\n\t\\freq, Pseries(200, 100, 50, 25, 12.5),\r\n\t\\modfreq, Pseq([1, 50, 10, 500, 1000], inf),\r\n\t\\amp, 0.1,\r\n\t\\att, 0.02,\r\n\t\\rel, 8,\r\n\t\\pos, Pwhite(-0.5, 0.5),\r\n\t\\dur, 0.1\r\n);\r\n)\r\n\r\n/////END PBINDS//////\r\n//BEGIN QUICK TEST///\r\n\r\n~bass.play;\r\n\r\n~mel_one.play;\r\n\r\n~mel_two.play;\r\n\r\n~wn.play;\r\n\r\n~harm.play;\r\n\r\n/////END QUICK TEST//\r\n//BEGIN COMPOSITION//\r\n\r\ns.record;\r\n\r\ns.stopRecording;\r\n\r\n\r\n(\r\n\r\n{\r\n~bass.play;\r\n\r\n4.wait;\r\n\r\n~mel_one.play;\r\n\r\n64.wait;\r\n\r\n~mel_two.play;\r\n\r\n~wn.play;\r\n\r\n64.wait;\r\n\r\n~harm.play;\r\n\r\n4.stop;\r\n\r\n}.fork;\r\n\r\n)"
}
