{
   "is_private" : null,
   "id" : "1-55c",
   "code" : "// =======================\r\n// MUSC 115 Assigment 2\r\n// =======================\r\n// SynthDefs (AM and FM)\r\n// =======================\r\n\r\n// Your name:  Lydia Davidson\r\n\r\n(\r\nSynthDef(\"am1\", {arg freq = 440, modfreq = 2, amp = 0.2, att = 0.01, 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(\"am3\", {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\tfreq = freq * LFNoise2.kr([2, 1/2, 1/3, 1/4, 1]).range(0.98, 1.01);\r\n    carrier = Pulse.ar(freq: freq, mul: env * modulator);\r\n\tcarrier = Mix.ar(carrier);\r\n\tcarrier = LPF.ar(carrier, Line.kr(10000, 1000, att));\r\n\tOut.ar(0, Pan2.ar(carrier, pos));\r\n}).add;\r\n\r\nSynthDef(\"fm1\", {arg freq = 440, modfreq = 5, modindex = 10, amp = 0.1, pos = 0, gate = 1, att = 0.01, rel = 0.3;\r\n\tvar carrier, modulator, freqdev, env;\r\n\t// i = d/m, so d = m*i\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\nSynthDef(\"fm2\", {arg freq = 440, modindex = 10, amp = 0.1, pos = 0, gate = 1, att = 0.01, 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\nSynthDef(\"hihat\", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 6000, pan = 0;\r\n\tvar env, snd;\r\n\tenv = Env.perc(att, rel, amp).kr(doneAction: 2);\r\n\tsnd = WhiteNoise.ar;\r\n\tsnd = HPF.ar(in: snd, freq: ffreq, mul: env);\r\n\tOut.ar(out, Pan2.ar(snd, pan));\r\n}).add;\r\n\r\n) // end of SynthDef code\r\n\r\n\r\n\r\n// ========================\r\n// Pbind collection\r\n//\r\n// tip: to work on a Pbind separately, copy and paste it\r\n// into a new window, add .play at end for convenience\r\n// (change/listen/change again/listen again),\r\n// and when you are done, copy it back here, don't\r\n// forget to REMOVE the .play from it.\r\n// Also create your own variable names that make sense to you.\r\n// ========================\r\n\r\n(\r\n~beat = Pbind(\r\n    \\instrument, \"am1\",\r\n    \\midinote, Pseq([35, 37, 37, 39, 39, 39, 39, 37, 37, 37], inf),\r\n\t\\ctranspose, 0,\r\n\t\\dur, Pseq([4/8, 2/8, 2/8, 1/8, 1/8, 1/8, 1/8, 4/8, 4/8, 4/8], inf) ,\r\n    \\amp, Pwhite(0.2, 0.5),\r\n    \\att, 0.01,\r\n    \\rel, 0.1,\r\n\t\\modfreq, Prand([10, 20, 25, 30], inf),\r\n\t\\pos, 0\r\n);\r\n\r\n\r\n\r\n\r\n~fmletsdothis = Pbind(\r\n    \\instrument, \"fm2\",\r\n\t\\dur, Pseq([\r\n\t\tPn(1/8, 6),\r\n\t\t3/8,\r\n\t\tPn(2/8, 5),\r\n\t\t5/8, 3/8, 3/8, 3/8, 3/8,\r\n\t\t4/8,\r\n\t\tPn(2/8, 3), 1.5\r\n\t], 5) * 2,\r\n\t\\midinote, Pseq([\r\n\t\t60, 56, 55, 48, 60, 56,\r\n\t\tPn([36, 43, 52, 60], 3),\r\n\t\tPn([37, 44, 53, 60], 2),\r\n\t\tPn([39, 46, 55, 60], 2),\r\n\t\t55, 56, 58, 60,\r\n\t\tPn([41, 48, 57, 60], 1),\r\n\t\tPn([41, 48, 56, 60], 2),\r\n\t\tPn([39, 46, 55, 60], 2)\r\n\t\t], inf),\r\n\t\\ctranspose, ([11, 16]),\r\n\t\\modindex, Pseq([6, 7, 9], inf),\r\n\t\\amp, 0.1,\r\n\t\\att, 0.5,\r\n\t\\rel, Pwhite(0.5, 0.7),\r\n\t\\pos, 0\r\n);\r\n\r\n\r\n\r\n~tone = Pbind(\r\n    \\instrument, \"fm2\",\r\n\t\\dur, Pseq([14.5]),\r\n\t\\midinote, 60,\r\n\t\\modindex, 0,\r\n\t\\ctranspose, 16,\r\n\t\\amp, 0.1,\r\n\t\\att, 1,\r\n\t\\rel, 0/1,\r\n\t\\pos, 0\r\n);\r\n\r\n\r\n\r\n\r\n~hihat = Pbind(\r\n\t\\instrument, \"hihat\",\r\n\t\\dur, 1/16,\r\n\t\\att, 0.01,\r\n\t\\rel, 0.5,\r\n\t\\ffreq, 18000,\r\n\t\\pan, 0,\r\n\t\\amp, 0.05\r\n);\r\n\r\n\r\n\r\n\r\n\r\n~harmonics = Pbind(\r\n\t\\instrument, \"am2\",\r\n\t\\midinote, Pseries([36, 43, 56]),\r\n\t\\modfreq, Pseq([1, 10, 50], inf),\r\n\t\\ctranspose, 11,\r\n\t\\amp, Pseq([0.02, 0.02, 0.01, 0.01, 0.008, 0.005], 14.5),\r\n\t\\att, 0.02,\r\n\t\\rel, 4,\r\n\t\\pos, Pwhite(-1, 1),\r\n\t\\dur, 0.1\r\n);\r\n\r\n) // end of Pbind collection\r\n\r\n\r\n// =============\r\n// Double check your the Pbinds (listen)\r\n// Remember: some of them are inf, others are finite\r\n// you can adjust that by changing the Pbinds\r\n// =============\r\n\r\n\r\n~beat.play;\r\n~harmonics.play;\r\n~hihat.play;\r\n~tone.play;\r\n~fmletsdothis.play;\r\n\r\n// =============\r\n// COMPOSITION\r\n// =============\r\n// Build your sequence here\r\n// you can use either {}.fork or Pspawner\r\n// see Pspawner help file.\r\n\r\n\r\n(\r\nPspawner({arg maestro;\r\n\r\n\tmaestro.par(~fmletsdothis);\r\n\tmaestro.wait(14.5);\r\n\r\n\t~player1 = maestro.par(~beat);\r\n\tmaestro.wait(14.5);\r\n\r\n\t~player2 = maestro.par(~hihat);\r\n\tmaestro.wait(14.5);\r\n\r\n\tmaestro.par(~harmonics);\r\n\tmaestro.wait(14.5);\r\n\r\n\tmaestro.suspend(~player1);\r\n\tmaestro.suspend(~player2);\r\n\r\n\tmaestro.seq(~tone);\r\n\r\n\tmaestro.suspendAll;\r\n\r\n\r\n}).play;\r\n)",
   "labels" : [],
   "description" : "https://soundcloud.com/lydia-davidson-919585173/build-it-up-115modulations",
   "ancestor_list" : [],
   "author" : "ldavidson",
   "name" : "Build It Up - A2 - 115modulations"
}
