{
   "name" : "spawnSynthGranulizer",
   "author" : "bateslewis",
   "ancestor_list" : [],
   "description" : "",
   "labels" : [],
   "code" : "//A granular synth using spawned patterns\r\n//might be easiest to learn controls using pan\r\n//wslib quark and DPW3Tri plugin required\r\n\r\n//NICOLE = child stream\r\n//centr = the basic static value of that variable\r\n//shift = the amount of change from grain to grain in a single pbind stream (mostly bi-directional, use <> buttons for rate & filter)\r\n//dev = the amount of random deviation from centre using the distribution from the pop-up next to it\r\n//round button next to dev changes the effect of the dev∆ slider to work on the Pbind rather than the Pspawnwer\r\n//it does not affect the brownian distribution\r\n\r\n//PAPA = parent stream\r\n//step = the step value used if a brownian distribution is chosen from pop-up in nicole\r\n//shift∆ = the amount of change from stream to stream created by the spawner (use <> just above for rate & filter directionality here)\r\n//dev∆ = the change in the amount of random deviation from stream to stream created by the spawner = default\r\n//some of the random deviations can 'pass thru zero\"\r\n\r\n//idiosyncrasies:\r\n//the \"Ƅ\" symbol in the nicole/DELTA section refers to bend - controls the random deviation parameters for bend amount\r\n// the distribution type pop-up for the papa/delta is above in the papa/length section\r\n//in the nicole/filter section there is a knob to control HPF cutoff\r\n//note also the gauss distribution requires much lower setting of dev than either Rand or Brown here\r\n// the extra + button in the nicole/freq section opens a gui to creat tuned clouds according to probabilities for each note\r\n\r\n//some symbols have been used from the Mac character viewer - yet to find out if these are Windows compatible\r\n\r\n//haven't been on SC too long but thought it might be fun for others to play around with too\r\n//it is a work in progress\r\n\r\n//PS. the reference to PAPA/nicole is from a stupid old car advert stuck in my head\r\n//it loosely refers to the parent and child streams of the Pspawn\r\n\r\n(\r\nRoutine.run{\r\n\r\n\r\n\r\nSynthDef(\\sinGab, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\t\tvar snd = HPF.ar((LPF.ar(FSinOsc.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env.sine(sustain, amp * AmpComp.ir(freq) * 0.5), doneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\sinWide, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, width=0.5, filter=22000, hiPass=20, vol=1|\r\n\tvar holdT = sustain * width;\r\n\tvar fadeT = 1 - width * sustain * 0.5;\r\n\tvar snd = HPF.ar((LPF.ar(FSinOsc.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env([0, 1, 1, 0], [fadeT, holdT, fadeT], \\sin),\r\n\t\tlevelScale: amp * AmpComp.ir(freq) * 0.5,\r\n\t\tdoneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 9).add;\r\n\r\n\r\nSynthDef(\\sinPerc, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(FSinOsc.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(\r\n\t\tEnv.perc(0.1, 0.9, amp * AmpComp.ir(freq) * 0.5),\r\n\t\t\ttimeScale: sustain, doneAction: 2\r\n\t\t);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\sinPercRev, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(FSinOsc.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(\r\n\t\tEnv.perc(0.9, 0.1, amp * AmpComp.ir(freq) * 0.5, 4),\r\n\t\t\ttimeScale: sustain, doneAction: 2\r\n\t\t);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\noiseGab, { |amp=0.2, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1, rq=0.1|\r\n\tvar snd = HPF.ar((LPF.ar((BPF.ar(GrayNoise.ar, Line.ar(freq, freq*bend, sustain).clip(10,22000), rq, 3)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env.sine(sustain, amp * 0.5), doneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 9).add;\r\n\r\n\r\nSynthDef(\\noiseWide, { |amp=0.2, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1, rq=0.1, width=0.5|\r\n\tvar holdT = sustain * width;\r\n\tvar fadeT = 1 - width * sustain * 0.5;\r\n\tvar snd = HPF.ar((LPF.ar((BPF.ar(GrayNoise.ar, Line.ar(freq, freq*bend, sustain).clip(10,22000), rq, 3)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env([0, 1, 1, 0], [fadeT, holdT, fadeT], \\sin),\r\n\t\tlevelScale: amp * 0.5, doneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 10).add;\r\n\r\n\r\nSynthDef(\\noisePerc, { |amp=0.2, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1, rq=0.1|\r\n\tvar snd = HPF.ar((LPF.ar((BPF.ar(GrayNoise.ar, Line.ar(freq, freq*bend, sustain).clip(10,22000), rq, 3)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env.perc(0.1, 0.9, amp * 0.5), timeScale: sustain, doneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 9).add;\r\n\r\n\r\nSynthDef(\\noisePercRev, { |amp=0.2, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1, rq=0.1|\r\n\tvar snd = HPF.ar((LPF.ar((BPF.ar(GrayNoise.ar, Line.ar(freq, freq*bend, sustain).clip(10,22000), rq, 3)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(\r\n\t    Env.perc(0.9, 0.1, amp * 0.5, 4),\r\n\t\t\ttimeScale: sustain, doneAction: 2\r\n\t\t);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 9).add;\r\n\r\n\r\n\r\nSynthDef(\\sqGab, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(Pulse.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000), 0.5), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env.sine(sustain, amp * 0.5), doneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\sqWide, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1, width=0.5|\r\n\tvar holdT = sustain * width;\r\n\tvar fadeT = 1 - width * sustain * 0.5;\r\n\tvar snd = HPF.ar((LPF.ar(Pulse.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000), 0.5), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env([0, 1, 1, 0], [fadeT, holdT, fadeT], \\sin),\r\n\t\tlevelScale: amp * 0.5,\r\n\t\tdoneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 9).add;\r\n\r\n\r\nSynthDef(\\sqPerc, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(Pulse.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000), 0.5), filter)), hiPass);\r\n\tvar env = EnvGen.ar(\r\n\t\tEnv.perc(0.1, 0.9, amp * 0.5, 4),\r\n\t\t\ttimeScale: sustain, doneAction: 2\r\n\t\t);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\sqPercRev, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(Pulse.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000), 0.5), filter)), hiPass);\r\n\tvar env = EnvGen.ar(\r\n\t\tEnv.perc(0.9, 0.1, amp * 0.5, 4),\r\n\t\t\ttimeScale: sustain, doneAction: 2\r\n\t\t);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\triGab, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(DPW3Tri.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env.sine(sustain, amp * 0.5), doneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\n\r\nSynthDef(\\triWide, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1, width=0.5|\r\n\tvar holdT = sustain * width;\r\n\tvar fadeT = 1 - width * sustain * 0.5;\r\n\tvar snd = HPF.ar((LPF.ar(DPW3Tri.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(Env([0, 1, 1, 0], [fadeT, holdT, fadeT], \\sin),\r\n\t\tlevelScale: amp * 0.5,\r\n\t\tdoneAction: 2);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 9).add;\r\n\r\n\r\n\r\nSynthDef(\\triPercRev, { |amp=0.1, freq=440, bend=1.0, sustain=0.05, pan=0, filter=22000, hiPass=20, vol=1|\r\n\tvar snd = HPF.ar((LPF.ar(DPW3Tri.ar(Line.ar(freq, freq*bend, sustain).clip(10,22000)), filter)), hiPass);\r\n\tvar env = EnvGen.ar(\r\n\t\tEnv.perc(0.9, 0.1, amp * 0.5, 4),\r\n\t\t\ttimeScale: sustain, doneAction: 2\r\n\t\t);\r\n\tvar kak = Pan2.ar(snd * env, pan, vol);\r\n\tOut.ar(4, kak);\r\n\tOffsetOut.ar(0, kak);\r\n}, \\ir ! 8).add;\r\n\r\nSynthDef(\\Cator, {\r\n\t          var imp, delimp, listen;\r\n\t          imp = Impulse.kr(20);\r\n\t          delimp = Delay1.kr(imp);\r\n\t          listen = In.ar(4, 2);\r\n\t          SendReply.kr(imp, '/levels', [Amplitude.kr(listen), K2A.ar(Peak.ar(listen, delimp).lag(0, 1))]);\r\n}).add;\r\n\r\n\r\ns.sync;\r\n\r\n//\tSynth(\\triPercRev, [\\out, 0, \\amp, 0.2, \\rate, 1, \\pos, 500, \\sustain, 0.5, \\pan, 0.5] )\r\n\r\n\r\ndefer{\r\n~w = Window(\"vOwel moGrains SYNTH\", Rect(600, 180, 830, 705))\r\n           .background = Color.white;\r\n\r\n//CLOUD\r\n\r\n~cloudView = Window(\"cloud\", Rect(150,423,420,462));\r\n\t\t~cloudView.view.background_(Color.white);\r\n\r\n~clow = UserView(~cloudView, Rect(15, 15, 390, 432));\r\n~clow.background = Color.new255(190, 190, 190);\r\n~clow.drawFunc = {Pen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,40,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,61,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,82,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,103,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,124,80,16));\r\n\t\t\t    Pen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,145,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,166,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,187,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,208,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,229,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,250,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,271,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,292,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,313,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,334,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.black;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,355,60,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\tPen.color = Color.white;\r\n\t\t\t      Pen.addRect(\r\n\t\t\t\tRect(40,376,80,16));\r\n\t\t\t\tPen.fillStroke;\r\n\t\t\t~clow.refresh;};\r\n\r\n\r\n\r\n//PAPA\r\n\r\n~papa = CompositeView(~w, Rect(15, 15, 345, 675))\r\n                     .background = Color.new255(190, 190, 190);\r\n\r\n~pap = StaticText(~papa, Rect(10, 3, 325, 26))\r\n                 .string = \"PAPA\";\r\n~pap.background = Color.new255(190, 190, 190);\r\n~pap.align = \\center;\r\n~pap.font = Font(\"Abadi MT Condensed Extra Bold\", 20);\r\n~pap.stringColor = Color.white;\r\n\r\n~papaLengthBak = CompositeView(~papa, Rect(8, 40, 318, 53))\r\n                              .background = Color.new255(105, 105, 105);\r\n\r\n~papaLengthWind = CompositeView(~papaLengthBak, Rect(3, 3, 312, 47))\r\n                               .background = Color.white;\r\n\r\n~spawnBak = CompositeView(~papa, Rect(8, 98, 318, 95))\r\n                         .background = Color.new255(105, 105, 105);\r\n\r\n~spawnWind = CompositeView(~spawnBak, Rect(3, 3, 312, 89))\r\n                          .background = Color.white;\r\n\r\n~papaFreqBak = CompositeView(~papa, Rect(8, 198, 318, 74))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~papaFreqWind = CompositeView(~papaFreqBak, Rect(3, 3, 312, 68))\r\n                            .background = Color.white;\r\n\r\n~papaFilterBak = CompositeView(~papa, Rect(8, 277, 318, 74))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~papaFilterWind = CompositeView(~papaFilterBak, Rect(3, 3, 312, 68))\r\n                            .background = Color.white;\r\n\r\n~papaDurBak = CompositeView(~papa, Rect(8, 356, 318, 74))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~papaDurWind = CompositeView(~papaDurBak, Rect(3, 3, 312, 68))\r\n                            .background = Color.white;\r\n\r\n~papaDensityBak = CompositeView(~papa, Rect(8, 435, 318, 74))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~papaDensityWind = CompositeView(~papaDensityBak, Rect(3, 3, 312, 68))\r\n                            .background = Color.white;\r\n\r\n~papaAmpBak = CompositeView(~papa, Rect(8, 514, 318, 74))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~papaAmpWind = CompositeView(~papaAmpBak, Rect(3, 3, 312, 68))\r\n                            .background = Color.white;\r\n\r\n~papaPanBak = CompositeView(~papa, Rect(8, 593, 318, 74))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~papaPanWind = CompositeView(~papaPanBak, Rect(3, 3, 312, 68))\r\n                            .background = Color.white;\r\n\r\n\r\n//NICOLE\r\n\r\n~nicole = CompositeView(~w, Rect(365, 15, 411, 675))\r\n                       .background = Color.new255(190, 190, 190);\r\n\r\n~nic = StaticText(~nicole, Rect(10, 3, 388, 26))\r\n                 .string = \"nicole\";\r\n~nic.background = Color.new255(190, 190, 190);\r\n~nic.align = \\center;\r\n~nic.font = Font(\"Abadi MT Condensed Extra Bold\", 20);\r\n~nic.stringColor = Color.white;\r\n\r\n~nicoleLengthBak = CompositeView(~nicole, Rect(19, 40, 392, 74))\r\n                                .background = Color.new255(105, 105, 105);\r\n\r\n~nicoleLengthWind = CompositeView(~nicoleLengthBak, Rect(3, 3, 389, 68))\r\n                                 .background = Color.white;\r\n\r\n\r\n~soundFile = CompositeView(~nicole, Rect(19, 119, 392, 74))\r\n                          .background = Color.new255(105, 105, 105);\r\n\r\n~soundFileBak = CompositeView(~soundFile, Rect(3, 3, 389, 68))\r\n                          .background = Color.white;\r\n\r\n\r\n\r\n~extraBitH = CompositeView(~w, Rect(776, 126, 36, 3))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~extraBitV = CompositeView(~w, Rect(812, 126, 3, 600))\r\n                           .background = Color.new255(105, 105, 105);\r\n\r\n~freqBak = CompositeView(~nicole, Rect(19, 198, 384, 74))\r\n                       .background = Color.new255(105, 105, 105);\r\n\r\n~freqWind = CompositeView(~freqBak, Rect(3, 3, 378, 68))\r\n                        .background = Color.white;\r\n\r\n~filterBak = CompositeView(~nicole, Rect(19, 277, 384, 74))\r\n                       .background = Color.new255(105, 105, 105);\r\n\r\n~filterWind = CompositeView(~filterBak, Rect(3, 3, 378, 68))\r\n                        .background = Color.white;\r\n\r\n~durBak = CompositeView(~nicole, Rect(19, 356, 384, 74))\r\n                       .background = Color.new255(105, 105, 105);\r\n\r\n~durWind = CompositeView(~durBak, Rect(3, 3, 378, 68))\r\n                        .background = Color.white;\r\n\r\n~densityBak = CompositeView(~nicole, Rect(19, 435, 384, 74))\r\n                       .background = Color.new255(105, 105, 105);\r\n\r\n~densityWind = CompositeView(~densityBak, Rect(3, 3, 378, 68))\r\n                        .background = Color.white;\r\n\r\n~ampBak = CompositeView(~nicole, Rect(19, 514, 384, 74))\r\n                       .background = Color.new255(105, 105, 105);\r\n\r\n~ampWind = CompositeView(~ampBak, Rect(3, 3, 378, 68))\r\n                        .background = Color.white;\r\n\r\n~panBak = CompositeView(~nicole, Rect(19, 593, 384, 74))\r\n                       .background = Color.new255(105, 105, 105);\r\n\r\n~panWind = CompositeView(~panBak, Rect(3, 3, 378, 68))\r\n                        .background = Color.white;\r\n\r\n\r\n\r\n//LABELS\r\n\r\n\r\n~nicLengthLabel = StaticText(~w, Rect(338, 83, 49, 18))\r\n                                .string = \"length\";\r\n~nicLengthLabel.background = Color.new255(105, 105, 105);\r\n~nicLengthLabel.align = \\center;\r\n~nicLengthLabel.font = Font(\"Helvetica Neue Bold Condensed\", 12);\r\n~nicLengthLabel.stringColor = Color.white;\r\n\r\n~spawnLabel = StaticText(~w, Rect(338, 162, 49, 18))\r\n                            .string = \"DELTA\";\r\n~spawnLabel.background = Color.new255(105, 105, 105);\r\n~spawnLabel.align = \\center;\r\n~spawnLabel.font = Font(\"Helvetica Neue Bold Condensed\", 12);\r\n~spawnLabel.stringColor = Color.white;\r\n\r\n~rateLabel = StaticText(~w, Rect(338, 241, 49, 18))\r\n                            .string = \"freq\";\r\n~rateLabel.background = Color.new255(105, 105, 105);\r\n~rateLabel.align = \\center;\r\n~rateLabel.font = Font(\"Helvetica Neue Bold Condensed\", 13);\r\n~rateLabel.stringColor = Color.white;\r\n\r\n~filterLabel = StaticText(~w, Rect(338, 320, 49, 18))\r\n                            .string = \"filter\";\r\n~filterLabel.background = Color.new255(105, 105, 105);\r\n~filterLabel.align = \\center;\r\n~filterLabel.font = Font(\"Helvetica Neue Bold Condensed\", 13);\r\n~filterLabel.stringColor = Color.white;\r\n\r\n~durLabel = StaticText(~w, Rect(338, 399, 49, 18))\r\n                            .string = \"dur\";\r\n~durLabel.background = Color.new255(105, 105, 105);\r\n~durLabel.align = \\center;\r\n~durLabel.font = Font(\"Helvetica Neue Bold Condensed\", 13);\r\n~durLabel.stringColor = Color.white;\r\n\r\n~densityLabel = StaticText(~w, Rect(338, 478, 49, 18))\r\n                            .string = \"delta\";\r\n~densityLabel.background = Color.new255(105, 105, 105);\r\n~densityLabel.align = \\center;\r\n~densityLabel.font = Font(\"Helvetica Neue Bold Condensed\", 13);\r\n~densityLabel.stringColor = Color.white;\r\n\r\n~ampLabel = StaticText(~w, Rect(338, 557, 49, 18))\r\n                            .string = \"amp\";\r\n~ampLabel.background = Color.new255(105, 105, 105);\r\n~ampLabel.align = \\center;\r\n~ampLabel.font = Font(\"Helvetica Neue Bold Condensed\", 13);\r\n~ampLabel.stringColor = Color.white;\r\n\r\n~panLabel = StaticText(~w, Rect(338, 636, 49, 18))\r\n                          .string = \"pan\";\r\n~panLabel.background = Color.new255(105, 105, 105);\r\n~panLabel.align = \\center;\r\n~panLabel.font = Font(\"Helvetica Neue Bold Condensed\", 13);\r\n~panLabel.stringColor = Color.white;\r\n\r\n\r\n~cloudView.front;\r\n~w.front;\r\n\r\n\r\n//CLOUD\r\n\r\n~cloud1 = EZSlider(~clow, Rect(130, 376, 220, 16), \"1\", initVal:1, labelWidth:20, numberWidth:40);\r\n~cloud2 = EZSlider(~clow, Rect(130, 355, 220, 16), \"2\", labelWidth:20, numberWidth:40);\r\n~cloud3 = EZSlider(~clow, Rect(130, 334, 220, 16), \"3\", labelWidth:20, numberWidth:40);\r\n~cloud4 = EZSlider(~clow, Rect(130, 313, 220, 16), \"4\", labelWidth:20, numberWidth:40);\r\n~cloud5 = EZSlider(~clow, Rect(130, 292, 220, 16), \"5\", labelWidth:20, numberWidth:40);\r\n~cloud6 = EZSlider(~clow, Rect(130, 271, 220, 16), \"6\", labelWidth:20, numberWidth:40);\r\n~cloud7 = EZSlider(~clow, Rect(130, 250, 220, 16), \"7\", labelWidth:20, numberWidth:40);\r\n~cloud8 = EZSlider(~clow, Rect(130, 229, 220, 16), \"8\", labelWidth:20, numberWidth:40);\r\n~cloud9 = EZSlider(~clow, Rect(130, 208, 220, 16), \"9\", labelWidth:20, numberWidth:40);\r\n~cloud10 = EZSlider(~clow, Rect(130, 187, 220, 16), \"10\", labelWidth:20, numberWidth:40);\r\n~cloud11 = EZSlider(~clow, Rect(130, 166, 220, 16), \"11\", labelWidth:20, numberWidth:40);\r\n~cloud12 = EZSlider(~clow, Rect(130, 145, 220, 16), \"12\", labelWidth:20, numberWidth:40);\r\n~cloud13 = EZSlider(~clow, Rect(130, 124, 220, 16), \"1\", labelWidth:20, numberWidth:40);\r\n~cloud14 = EZSlider(~clow, Rect(130, 103, 220, 16), \"2\", labelWidth:20, numberWidth:40);\r\n~cloud15 = EZSlider(~clow, Rect(130, 82, 220, 16), \"3\", labelWidth:20, numberWidth:40);\r\n~cloud16 = EZSlider(~clow, Rect(130, 61, 220, 16), \"4\", labelWidth:20, numberWidth:40);\r\n~cloud17 = EZSlider(~clow, Rect(130, 40, 220, 16), \"5\", labelWidth:20, numberWidth:40);\r\n\r\n//PAPA\r\n\r\n~papaCentre = EZSlider(~papaLengthWind, Rect(2, 5, 300, 16), \"centr\",\r\n\t                                                 ControlSpec(0.01, 100.0, \\exp, 0.001, 100, nil),\r\n\t                                                 {|sl| ~papaCentreV = sl.value}, labelWidth:45);\r\n\r\n\r\n~spawnRandom = PatternProxy(Pfunc{ |e| e.spawnRand});\r\n~spawnGaussian = PatternProxy(Pfunc{ |e| e.spawnGauss});\r\n~spawnBrownian = PatternProxy(Pfunc{ |e| e.spawnBrown});\r\n\r\n~spawnChoice = [~spawnRandom, ~spawnGaussian, ~spawnBrownian];\r\n\r\n~spawnDevShape = PopUpMenu.new(~papaLengthWind, Rect(188, 26, 66, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~spawnPop.source = ~spawnChoice.at(menu.value)} );\r\n~spawnDevShape.value = 0;\r\n\r\n~spawnPop = PatternProxy(Pfunc{ |e| e.spawnRand});\r\n\r\n\r\n\r\n\r\n~spawnCentre = EZSlider(~spawnWind, Rect(2, 5, 300, 16), \"centr\",\r\n\t                                                 ControlSpec(0.01, 100.0, \\exp, 0.001, 100, nil),\r\n\t                                                 {|sl| ~spawnCentreV = sl.value}, labelWidth:45);\r\n\r\n~spawnSlope = EZSlider(~spawnWind, Rect(2, 26, 300, 16), \"shift\",\r\n\t                                             ControlSpec(-0.5, 0.5, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~spawnSlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnDev = EZSlider(~spawnWind, Rect(2, 47, 300, 16), \"dev\",\r\n\t                                              ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnDevV = sl.value}, labelWidth:45);\r\n\r\n~spawnStep = EZSlider(~spawnWind, Rect(2, 68, 300, 16), \"step\",\r\n\t                                      ControlSpec(0.0, 0.5, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~spawnStepV = sl.value}, labelWidth:45);\r\n\r\n\r\n\r\n\r\n\r\n~freqStep = EZSlider(~papaFreqWind, Rect(21, 5, 281, 16), \"step\",\r\n\t                                      ControlSpec(0, 2000, \\lin, 1, 0, nil),\r\n                                          {|sl| ~freqStepV = sl.value}, labelWidth:26);\r\n\r\n~papaFreqSlope = EZSlider(~papaFreqWind, Rect(2, 26, 300, 16), \"shift∆\",\r\n\t                                             ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~papaFreqSlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnFreqDevScaler = EZSlider(~papaFreqWind, Rect(2, 47, 300, 16), \"dev∆\",\r\n\t                                              ControlSpec(-0.10, 0.10, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnFreqDevScalerV = sl.value}, labelWidth:45);\r\n\r\n~papaFreqSlopeControl = Button(~papaFreqWind, Rect(3, 5, 15, 15 ))\r\n                   .states_([[\">\", Color.black, Color.white],[\"<\", Color.black, Color.white]])\r\n\t               .action_({~papaFreqSlopeSwitch = ~papaFreqSlopeDir.at(~papaFreqSlopeControl.value)});\r\n~papaFreqSlopeControl.value = 0;\r\n~papaFreqSlopeDir = [1,-1];\r\n~papaFreqSlopeSwitch = ~papaFreqSlopeDir.at(~papaFreqSlopeControl.value);\r\n\r\n\r\n\r\n\r\n~filterStep = EZSlider(~papaFilterWind, Rect(21, 5, 281, 16), \"step\",\r\n\t                                      ControlSpec(0, 5000, \\lin, 1, 0, nil),\r\n                                          {|sl| ~filterStepV = sl.value}, labelWidth:26);\r\n\r\n~papaFilterSlope = EZSlider(~papaFilterWind, Rect(2, 26, 300, 16), \"shift∆\",\r\n\t                                             ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~papaFilterSlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnFilterDevScaler = EZSlider(~papaFilterWind, Rect(2, 47, 300, 16), \"dev∆\",\r\n\t                                              ControlSpec(-0.25, 0.25, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnFilterDevScalerV = sl.value}, labelWidth:45);\r\n\r\n~papaFilterSlopeControl = Button(~papaFilterWind, Rect(3, 5, 15, 15 ))\r\n                   .states_([[\">\", Color.black, Color.white],[\"<\", Color.black, Color.white]])\r\n\t               .action_({~papaFilterSlopeSwitch = ~papaFilterSlopeDir.at(~papaFilterSlopeControl.value)});\r\n~papaFilterSlopeControl.value = 0;\r\n~papaFilterSlopeDir = [1,-1];\r\n~papaFilterSlopeSwitch = ~papaFilterSlopeDir.at(~papaFilterSlopeControl.value);\r\n\r\n\r\n\r\n\r\n~durStep = EZSlider(~papaDurWind, Rect(2, 5, 300, 16), \"step\",\r\n\t                                      ControlSpec(0.0, 0.10, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~durStepV = sl.value}, labelWidth:45);\r\n\r\n~papaDurSlope = EZSlider(~papaDurWind, Rect(2, 26, 300, 16), \"shift∆\",\r\n\t                                             ControlSpec(-0.10, 0.10, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~papaDurSlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnDurDevScaler = EZSlider(~papaDurWind, Rect(2, 47, 300, 16), \"dev∆\",\r\n\t                                              ControlSpec(-0.10, 0.10, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnDurDevScalerV = sl.value}, labelWidth:45);\r\n\r\n\r\n\r\n~densityStep = EZSlider(~papaDensityWind, Rect(2, 5, 300, 16), \"step\",\r\n\t                                      ControlSpec(0.0, 0.10, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~densityStepV = sl.value}, labelWidth:45);\r\n\r\n~papaDensitySlope = EZSlider(~papaDensityWind, Rect(2, 26, 300, 16), \"shift∆\",\r\n\t                                             ControlSpec(-0.10, 0.10, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~papaDensitySlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnDensityDevScaler = EZSlider(~papaDensityWind, Rect(2, 47, 300, 16), \"dev∆\",\r\n\t                                              ControlSpec(-0.10, 0.10, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnDensityDevScalerV = sl.value}, labelWidth:45);\r\n\r\n\r\n~ampStep = EZSlider(~papaAmpWind, Rect(2, 5, 300, 16), \"step\",\r\n\t                                      ControlSpec(0.0, 0.50, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~ampStepV = sl.value}, labelWidth:45);\r\n\r\n~papaAmpSlope = EZSlider(~papaAmpWind, Rect(2, 26, 300, 16), \"shift∆\",\r\n\t                                             ControlSpec(-0.50, 0.50, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~papaAmpSlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnAmpDevScaler = EZSlider(~papaAmpWind, Rect(2, 47, 300, 16), \"dev∆\",\r\n\t                                              ControlSpec(-0.50, 0.50, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnAmpDevScalerV = sl.value}, labelWidth:45);\r\n\r\n\r\n\r\n\r\n~panStep = EZSlider(~papaPanWind, Rect(2, 5, 300, 16), \"step\",\r\n\t                                      ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~panStepV = sl.value}, labelWidth:45);\r\n\r\n~papaPanSlope = EZSlider(~papaPanWind, Rect(2, 26, 300, 16), \"shift∆\",\r\n\t                                             ControlSpec(-0.50, 0.50, \\lin, 0.001, 0, nil),\r\n                                                 {|sl| ~papaPanSlopeV = sl.value}, labelWidth:45);\r\n\r\n~spawnPanDevScaler = EZSlider(~papaPanWind, Rect(2, 47, 300, 16), \"dev∆\",\r\n\t                                              ControlSpec(-0.50, 0.50, \\lin, 0.001, 0, nil),\r\n                                                  {|sl| ~spawnPanDevScalerV = sl.value}, labelWidth:45);\r\n\r\n\r\n\r\n\r\n\r\n//NICOLE\r\n\r\n~nicCentre = EZSlider(~nicoleLengthWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                                 ControlSpec(0.01, 100.0, \\exp, 0.001, 100, nil),\r\n\t                                                 {|sl| ~nicLengthV = sl.value}, labelWidth:38);\r\n\r\n~nicSlope = EZSlider(~nicoleLengthWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(-1.00, 1.00, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~nicSlopeV = sl.value}, labelWidth:38);\r\n\r\n~nicDev = EZSlider(~nicoleLengthWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0.0, 5.0, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~nicDevV = sl.value}, labelWidth:38);\r\n\r\n~moLabel = StaticText(~w, Rect(685, 63, 125, 40))\r\n                                .string = \"moGrains\";\r\n~moLabel.background = Color.white;\r\n~moLabel.align = \\center;\r\n~moLabel.font = Font(\"Cracked\", 35);\r\n~moLabel.stringColor = Color.black; //Color.new255(105, 105, 105);\r\n\r\n\r\n~bendRanger = EZRanger(~soundFileBak, Rect(6, 26, 278, 16), nil,\r\n\t                    ControlSpec(0.25, 4.0, \\exp, 0.001),\r\n\t                   {|sl| ~bendRangerL = sl.lo.value; ~bendRangerH = sl.hi.value}, [1,1], numberWidth:34);\r\n\r\n~bendLabel = StaticText(~soundFileBak, Rect(288, 26, 16, 16))\r\n                          .string = \"Ƅ\";\r\n~bendLabel.background = Color.white;\r\n~bendLabel.align = \\left;\r\n~bendLabel.stringColor = Color.new255(190, 190, 190);\r\n\r\n\r\n~envLabel = StaticText(~soundFileBak, Rect(3, 7, 40, 14))\r\n                                .string = \"synth\";\r\n~envLabel.background = Color.white;\r\n~envLabel.align = \\center;\r\n~envLabel.font = Font(\"Helvetica Neue Bold Condensed\", 12);\r\n~envLabel.stringColor = Color.new255(190, 190, 190);\r\n\r\n\r\n~sinGab = PatternProxy(\\sinGab);\r\n~sinWide = PatternProxy(\\sinWide);\r\n~sinPerc = PatternProxy(\\sinPerc);\r\n~sincreP = PatternProxy(\\sinPercRev);\r\n~noiseGab = PatternProxy(\\noiseGab);\r\n~noiseWide = PatternProxy(\\noiseWide);\r\n~noisePerc = PatternProxy(\\noisePerc);\r\n~noisecreP = PatternProxy(\\noisePercRev);\r\n~sqGab = PatternProxy(\\sqGab);\r\n~sqWide = PatternProxy(\\sqWide);\r\n~sqPerc = PatternProxy(\\sqPerc);\r\n~sqcreP = PatternProxy(\\sqPercRev);\r\n~triGab = PatternProxy(\\triGab);\r\n~triWide = PatternProxy(\\triWide);\r\n~tricreP = PatternProxy(\\triPercRev);\r\n\r\n~envChoice = [~sinGab, ~sinWide, ~sinPerc, ~sincreP,\r\n\t\t      ~noiseGab, ~noiseWide, ~noisePerc, ~noisecreP,\r\n\t\t      ~sqGab, ~sqWide, ~sqPerc, ~sqcreP,\r\n\t\t      ~triGab, ~triWide, ~tricreP];\r\n\r\n~envShape = PopUpMenu.new(~soundFileBak, Rect(43, 5, 92, 16))\r\n\t\t.items_([\"sinGab\", \"sinWide\", \"sinPerc\", \"sincreP\",\r\n\t\t          \"noiseGab\", \"noiseWide\", \"noisePerc\", \"noisecreP\",\r\n\t\t          \"sqGab\", \"sqWide\", \"sqPerc\", \"sqcreP\",\r\n\t\t          \"triGab\", \"triWide\", \"tricreP\"])\r\n\t\t.action_( { |menu| ~envPop.source = ~envChoice.at(menu.value)} );\r\n~envShape.value = 0;\r\n\r\n~envPop = PatternProxy(\\sinGab);\r\n\r\n\r\n\r\n\r\n\r\n\r\n~freqCentre = EZSlider(~freqWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                   ControlSpec(20, 20000, \\exp, 1, 440, nil),\r\n                                       {|sl| ~freqCentreV = sl.value}, labelWidth:38);\r\n\r\n~freqSlope = EZSlider(~freqWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~freqSlopeV = sl.value}, labelWidth:38);\r\n\r\n~freqDev = EZSlider(~freqWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0, 5.0, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~freqDevV = sl.value}, labelWidth:38);\r\n\r\n~cloudViz = Button(~freqWind, Rect(303, 6, 15, 15 ))\r\n                   .states_([[\"+\", Color.black, Color.white],[\"−\", Color.white, Color.new255(190, 190, 190)]])\r\n\t               .action_({ |v| ~cloudView.visible = ~cloudViz.value.asBoolean});\r\n~cloudViz.value = 0;\r\n\r\n\r\n~freqSlopeControl = Button(~freqWind, Rect(303, 27, 15, 15 ))\r\n                   .states_([[\">\", Color.black, Color.white],[\"<\", Color.black, Color.white]])\r\n\t               .action_({~freqSlopeSwitch = ~freqSlopeDir.at(~freqSlopeControl.value)});\r\n~freqSlopeControl.value = 0;\r\n~freqSlopeDir = [1,-1];\r\n~freqSlopeSwitch = ~freqSlopeDir.at(~freqSlopeControl.value);\r\n\r\n\r\n~freqRandom = PatternProxy(Pfunc{ |e| e.freqPatternRand});\r\n~freqGaussian = PatternProxy(Pfunc{ |e| e.freqPatternGauss});\r\n~freqBrownian = PatternProxy(Pfunc{ |e| e.freqPatternBrown});\r\n\r\n~freqChoice = [~freqRandom, ~freqGaussian, ~freqBrownian];\r\n\r\n~freqDevShape = PopUpMenu.new(~freqWind, Rect(303, 47, 67, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~freqPop.source = ~freqChoice.at(menu.value)} );\r\n~freqDevShape.value = 0;\r\n\r\n~freqPop = PatternProxy(Pfunc{ |e| e.freqPatternRand});\r\n\r\n\r\n~freqDevSwitcher = RoundButton(~freqWind, Rect(4, 50, 11, 11))\r\n\t\t           .states_([[\"\", Color.white, Color.white],[\"\", Color.new255(105, 105, 105), Color.new255(105, 105, 105)]]);\r\n~freqDevSwitcher.value=0;\r\n\r\n\r\n\r\n\r\n\r\n~filterCentre = EZSlider(~filterWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                   ControlSpec(20, 20000, \\exp, 1, 20000, nil),\r\n                                       {|sl| ~filterCentreV = sl.value}, labelWidth:38);\r\n\r\n~filterSlope = EZSlider(~filterWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~ampSlopeV = sl.value}, labelWidth:38);\r\n\r\n~filterDev = EZSlider(~filterWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0, 5.0, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~filterDevV = sl.value}, labelWidth:38);\r\n\r\n~filterSlopeControl = Button(~filterWind, Rect(303, 26, 15, 15 ))\r\n                   .states_([[\">\", Color.black, Color.white],[\"<\", Color.black, Color.white]])\r\n\t               .action_({~filterSlopeSwitch = ~filterSlopeDir.at(~filterSlopeControl.value)});\r\n~filterSlopeControl.value = 0;\r\n~filterSlopeDir = [1,-1];\r\n~filterSlopeSwitch = ~filterSlopeDir.at(~filterSlopeControl.value);\r\n\r\n~hiPass = EZKnob(~filterWind, Rect(330, 7, 36, 36), nil,\r\n\t                                  ControlSpec(20, 22000, \\exp, 1, 20, nil),\r\n                                      {|sl| ~hiPassV = sl.value}, nil, unitWidth: 0, labelHeight: 0);\r\n\r\n~filterRandom = PatternProxy(Pfunc{ |e| e.filterPatternRand});\r\n~filterGaussian = PatternProxy(Pfunc{ |e| e.filterPatternGauss});\r\n~filterBrownian = PatternProxy(Pfunc{ |e| e.filterPatternBrown});\r\n\r\n~filterChoice = [~filterRandom, ~filterGaussian, ~filterBrownian];\r\n\r\n~filterDevShape = PopUpMenu.new(~filterWind, Rect(303, 47, 66, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~filterPop.source = ~filterChoice.at(menu.value)} );\r\n~filterDevShape.value = 0;\r\n\r\n~filterPop = PatternProxy(Pfunc{ |e| e.filterPatternRand});\r\n\r\n~filterDevSwitcher = RoundButton(~filterWind, Rect(4, 50, 11, 11))\r\n\t\t           .states_([[\"\", Color.white, Color.white],[\"\", Color.new255(105, 105, 105), Color.new255(105, 105, 105)]]);\r\n~filterDevSwitcher.value=0;\r\n\r\n\r\n\r\n\r\n\r\n~durCentre = EZSlider(~durWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                   ControlSpec(0.001, 2.0, \\exp, 0.001, 0.1, nil),\r\n                                       {|sl| ~durCentreV = sl.value}, labelWidth:38);\r\n\r\n~durSlope = EZSlider(~durWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(-0.05, 0.05, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~durSlopeV = sl.value}, labelWidth:38);\r\n\r\n~durDev = EZSlider(~durWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0.0, 0.25, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~durDevV = sl.value}, labelWidth:38);\r\n\r\n~durRandom = PatternProxy(Pfunc{ |e| e.durPatternRand});\r\n~durGaussian = PatternProxy(Pfunc{ |e| e.durPatternGauss});\r\n~durBrownian = PatternProxy(Pfunc{ |e| e.durPatternBrown});\r\n\r\n~durChoice = [~durRandom, ~durGaussian, ~durBrownian];\r\n\r\n~durDevShape = PopUpMenu.new(~durWind, Rect(303, 47, 66, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~durPop.source = ~durChoice.at(menu.value)} );\r\n~durDevShape.value = 0;\r\n\r\n~durPop = PatternProxy(Pfunc{ |e| e.durPatternRand});\r\n\r\n~durDevSwitcher = RoundButton(~durWind, Rect(4, 50, 11, 11))\r\n\t\t           .states_([[\"\", Color.white, Color.white],[\"\", Color.new255(105, 105, 105), Color.new255(105, 105, 105)]]);\r\n~durDevSwitcher.value=0;\r\n\r\n\r\n\r\n\r\n~densityCentre = EZSlider(~densityWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                   ControlSpec(0.001, 1.0, \\exp, 0.001, 0.1, nil),\r\n                                       {|sl| ~densityCentreV = sl.value}, labelWidth:38);\r\n\r\n~densitySlope = EZSlider(~densityWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(-0.010, 0.010, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~densitySlopeV = sl.value}, labelWidth:38);\r\n\r\n~densityDev = EZSlider(~densityWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0.0, 0.50, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~densityDevV = sl.value}, labelWidth:38);\r\n\r\n~densityRandom = PatternProxy(Pfunc{ |e| e.densityPatternRand});\r\n~densityGaussian = PatternProxy(Pfunc{ |e| e.densityPatternGauss});\r\n~densityBrownian = PatternProxy(Pfunc{ |e| e.densityPatternBrown});\r\n\r\n~densityChoice = [~densityRandom, ~densityGaussian, ~densityBrownian];\r\n\r\n~densityDevShape = PopUpMenu.new(~densityWind, Rect(303, 47, 66, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~densityPop.source = ~densityChoice.at(menu.value)} );\r\n~densityDevShape.value = 0;\r\n\r\n~densityPop = PatternProxy(Pfunc{ |e| e.densityPatternRand});\r\n\r\n~densityDevSwitcher = RoundButton(~densityWind, Rect(4, 50, 11, 11))\r\n\t\t           .states_([[\"\", Color.white, Color.white],[\"\", Color.new255(105, 105, 105), Color.new255(105, 105, 105)]]);\r\n~densityDevSwitcher.value=0;\r\n\r\n\r\n\r\n\r\n\r\n~ampCentre = EZSlider(~ampWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                   ControlSpec(0.0, 1.0, \\lin, 0.001, 0.8, nil),\r\n                                       {|sl| ~ampCentreV = sl.value}, labelWidth:38);\r\n\r\n~ampSlope = EZSlider(~ampWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(-0.20, 0.20, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~ampSlopeV = sl.value}, labelWidth:38);\r\n\r\n~ampDev = EZSlider(~ampWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~ampDevV = sl.value}, labelWidth:38);\r\n\r\n~ampRandom = PatternProxy(Pfunc{ |e| e.ampPatternRand});\r\n~ampGaussian = PatternProxy(Pfunc{ |e| e.ampPatternGauss});\r\n~ampBrownian = PatternProxy(Pfunc{ |e| e.ampPatternBrown});\r\n\r\n~ampChoice = [~ampRandom, ~ampGaussian, ~ampBrownian];\r\n\r\n~ampDevShape = PopUpMenu.new(~ampWind, Rect(303, 47, 66, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~ampPop.source = ~ampChoice.at(menu.value)} );\r\n~ampDevShape.value = 0;\r\n\r\n~ampPop = PatternProxy(Pfunc{ |e| e.ampPatternRand});\r\n\r\n~ampDevSwitcher = RoundButton(~ampWind, Rect(4, 50, 11, 11))\r\n\t\t           .states_([[\"\", Color.white, Color.white],[\"\", Color.new255(105, 105, 105), Color.new255(105, 105, 105)]]);\r\n~ampDevSwitcher.value=0;\r\n\r\n\r\n\r\n\r\n\r\n~panCentre = EZSlider(~panWind, Rect(2, 5, 293, 16), \"centr\",\r\n\t                                   ControlSpec(-1.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                       {|sl| ~panCentreV = sl.value}, labelWidth:38);\r\n\r\n~panSlope = EZSlider(~panWind, Rect(2, 26, 293, 16), \"shift\",\r\n\t                                     ControlSpec(-0.10, 0.10, \\lin, 0.001, 0, nil),\r\n                                         {|sl| ~panSlopeV = sl.value}, labelWidth:38);\r\n\r\n~panDev = EZSlider(~panWind, Rect(2, 47, 293, 16), \"dev\",\r\n\t                                      ControlSpec(0.0, 1.0, \\lin, 0.001, 0, nil),\r\n                                          {|sl| ~panDevV = sl.value}, labelWidth:38);\r\n\r\n~panRandom = PatternProxy(Pfunc{ |e| e.panPatternRand});\r\n~panGaussian = PatternProxy(Pfunc{ |e| e.panPatternGauss});\r\n~panBrownian = PatternProxy(Pfunc{ |e| e.panPatternBrown});\r\n\r\n~panChoice = [~panRandom, ~panGaussian, ~panBrownian];\r\n\r\n~panDevShape = PopUpMenu.new(~panWind, Rect(303, 47, 66, 16))\r\n\t\t.items_([\"Rand\", \"Gauss\", \"Brown\"])\r\n\t\t.action_( { |menu| ~panPop.source = ~panChoice.at(menu.value)} );\r\n~panDevShape.value = 0;\r\n\r\n~panPop = PatternProxy(Pfunc{ |e| e.panPatternRand});\r\n\r\n~panDevSwitcher = RoundButton(~panWind, Rect(4, 50, 11, 11))\r\n\t\t           .states_([[\"\", Color.white, Color.white],[\"\", Color.new255(105, 105, 105), Color.new255(105, 105, 105)]]);\r\n~panDevSwitcher.value=0;\r\n\r\n\r\n\r\n//MASTER\r\n\r\n~masterButton = Button(~w, Rect(784, 135, 20, 72));\r\n~masterButton.states_([[\"O\", Color.black, Color.white],[\"O\", Color.white, Color.yellow]]);\r\n~masterButton.action = {|view|\r\n\t                   if (view.value==1) { x=Synth(\\Cator); t=q.play} {  t.stop; x.free; ~levelIndicator.value=0 } };\r\n~masterButton.value=0;\r\n\r\n~recordButton = Button(~w, Rect(784, 214, 20, 72));\r\n~recordButton.states_([[\"R\", Color.black, Color.white],[\"R\", Color.white, Color.red]]);\r\n~recordButton.action = {|view|\r\n\tif (view.value==1) {s.record} {s.stopRecording}};\r\n~recordButton.value=0;\r\n\r\n~masterVolume = SmoothSlider(~w, Rect(784, 293, 20, 151)).value_(0.4);\r\n\r\n\r\n~levelIndicator = LevelIndicator(~w, Rect(784, 451, 20, 239));\r\n\r\no = OSCFunc({arg msg;\r\n{\r\n~levelIndicator.value = msg[3].ampdb.linlin(-40, 0, 0, 1);\r\n~levelIndicator.peakLevel = msg[4].ampdb.linlin(-40, 0, 0, 1);\r\n}.defer;\r\n}, '/levels', s.addr);\r\n\r\n\r\n~levelIndicator.warning = -6.dbamp;\r\n~levelIndicator.critical = -3.dbamp;\r\n~levelIndicator.value=0;\r\n\r\n~cloudView.visible=false;\r\n~w.onClose = {~cloudView.close}\r\n};\r\n\r\ns.sync;\r\n\r\n//sort->\r\n(\r\np = Pbind(\r\n\t   \\instrument, ~envPop,\r\n\t   \\serial, Pseries(0,1,inf),\r\n       \\bend, Pfunc{ exprand(~bendRanger.lo.value, ~bendRanger.hi.value)},\r\n\t   \\freqCloud,  Pwrand([1, 2.pow(1/12), 2.pow(2/12), 2.pow(3/12), 2.pow(4/12),\r\n\t                       2.pow(5/12), 2.pow(6/12), 2.pow(7/12), 2.pow(8/12),\r\n\t                       2.pow(9/12), 2.pow(10/12), 2.pow(11/12), 2.pow(12/12),\r\n\t\t\t\t           2.pow(13/12), 2.pow(14/12), 2.pow(15/12), 2.pow(16/12)],\r\n\r\n\t\t\t\tPfunc{[~cloud1.value,~cloud2.value,~cloud3.value,~cloud4.value,\r\n\t\t\t\t\t~cloud5.value,~cloud6.value,~cloud7.value,~cloud8.value,\r\n\t\t\t\t\t~cloud9.value,~cloud10.value,~cloud11.value,~cloud12.value,\r\n\t\t\t\t\t~cloud13.value,~cloud14.value,~cloud15.value,~cloud16.value,~cloud17.value].normalizeSum}, inf),\r\n\r\n\t   \\freqSeriesUp, (Pkey(\\freqCloud)*Pfunc{~freqCentre.value}) * (Pfunc{~freqSlope.value} * Pkey(\\serial) + 1),\r\n\t   \\freqSeriesDown, (Pkey(\\freqCloud)*Pfunc{~freqCentre.value}) / (Pfunc{~freqSlope.value} * Pkey(\\serial) +1),\r\n\t   \\freqSeries, Pif (Pfunc{~freqSlopeSwitch} > 0, Pkey(\\freqSeriesUp), Pkey(\\freqSeriesDown)),\r\n\t   \\filterSeriesUp, (Pfunc{~filterCentre.value} * (Pfunc{~filterSlope.value} * Pkey(\\serial) + 1)).clip(20,20000),\r\n\t   \\filterSeriesDown, (Pfunc{~filterCentre.value} / (Pfunc{~filterSlope.value} * Pkey(\\serial) +1)).clip(20,20000),\r\n\t   \\filterSeries, Pif (Pfunc{~filterSlopeSwitch} > 0, Pkey(\\filterSeriesUp), Pkey(\\filterSeriesDown)),\r\n\t   \\hiPass, Pfunc{~hiPass.value},\r\n       \\durSeries, (Pfunc{~durCentre.value} + (Pfunc{~durSlope.value} * Pkey(\\serial))).max(0.001),\r\n\t   \\densitySeries, (Pfunc{~densityCentre.value} + (Pfunc{~densitySlope.value} * Pkey(\\serial))).max(0.001),\r\n       \\ampSeries, (Pfunc{~ampCentre.value} + (Pfunc{~ampSlope.value} * Pkey(\\serial))).clip(0,1),\r\n\t   \\panSeries, (Pfunc{~panCentre.value} + (Pfunc{~panSlope.value} * Pkey(\\serial))).clip(-1,1),\r\n\t   \\vol, Pfunc{~masterVolume.value}*2.5,\r\n\r\n\r\n);\r\n\r\n\r\nq = Pspawn(\r\n     Pbind(\r\n\t\t  \\spawnSerial, Pif(Ptime(inf) < Pfunc{~papaCentre.value}, Pseries(0,1,inf)),\r\n\r\n\t\t  \\nicSeries, Pfunc{ |e| Pfunc{~nicCentre.value} + (Pfunc{~nicSlope.value} * e.spawnSerial)},\r\n\t\t  \\nicLength, Pfunc{ |e| rrand(e.nicSeries - Pfunc{~nicDev.value}, e.nicSeries + Pfunc{~nicDev.value}).max(0.01)},\r\n\r\n\r\n\r\n\r\n\r\n\t\t  \\freqRandP, Pfunc{ |e| exprand(Pkey(\\freqSeries) / (Pfunc{~freqDev.value} + (Pfunc{~spawnFreqDevScaler.value} * e.spawnSerial + 1)),\r\n\t\t\t\t\tPkey(\\freqSeries) * (Pfunc{~freqDev.value} + (Pfunc{~spawnFreqDevScaler.value} * e.spawnSerial + 1))).clip(10,22000)},\r\n\t\t  \\freqRandN, Pfunc{ |e| exprand(Pkey(\\freqSeries) / (Pfunc{~freqDev.value} + (Pfunc{~spawnFreqDevScaler.value} * Pkey(\\serial) + 1)),\r\n\t\t\t\t\tPkey(\\freqSeries) * (Pfunc{~freqDev.value} + (Pfunc{~spawnFreqDevScaler.value} * Pkey(\\serial) + 1))).clip(10,22000)},\r\n\t\t  \\freqRand, Pif (Pfunc{~freqDevSwitcher.value} < 1, Pfunc{ |e| e.freqRandP}, Pfunc{ |e| e.freqRandN}),\r\n\r\n\t\t  \\freqGaussP, Pfunc{ |e| (Pgauss( Pkey(\\freqSeries), (Pkey(\\freqSeries)*(Pfunc{~freqDev.value} +\r\n\t\t\t                                 (Pfunc{~spawnFreqDevScaler.value} * e.spawnSerial))), inf)).clip(20,20000)},\r\n\t\t  \\freqGaussN, Pfunc{ |e| (Pgauss( Pkey(\\freqSeries), (Pkey(\\freqSeries)*(Pfunc{~freqDev.value} +\r\n\t\t\t                                 (Pfunc{~spawnFreqDevScaler.value} * Pkey(\\serial)))), inf)).clip(20,20000)},\r\n\t\t  \\freqGauss, Pif (Pfunc{~freqDevSwitcher.value} < 1, Pfunc{ |e| e.freqGaussP}, Pfunc{ |e| e.freqGaussN}),\r\n\r\n\t\t  \\freqBrown, Pfunc{ |e| (Pbrown(Pkey(\\freqSeries) / (Pfunc{~freqDev.value} + (Pfunc{~spawnFreqDevScaler.value} * e.spawnSerial + 1)),\r\n\t\t\t                             Pkey(\\freqSeries) * (Pfunc{~freqDev.value} + (Pfunc{~spawnFreqDevScaler.value} * e.spawnSerial + 1)),\r\n\t\t\t                             Pfunc{~freqStep.value}, inf)).clip(10,22000)},\r\n\r\n\t\t  \\freqPatternRandUp, Pfunc{ |e| e.freqRand * (Pfunc{~papaFreqSlope.value} * e.spawnSerial +1)},\r\n\t\t  \\freqPatternRandDown, Pfunc{ |e| e.freqRand / (Pfunc{~papaFreqSlope.value} * e.spawnSerial +1)},\r\n\t\t  \\freqPatternRand, Pif (Pfunc{~papaFreqSlopeSwitch} > 0, Pfunc{ |e| e.freqPatternRandUp},\r\n\t\t\t                                                          Pfunc{ |e| e.freqPatternRandDown}),\r\n\t\t  \\freqPatternGaussUp, Pfunc{ |e| e.freqGauss * (Pfunc{~papaFreqSlope.value} * e.spawnSerial +1)},\r\n\t\t  \\freqPatternGaussDown, Pfunc{ |e| e.freqGauss / (Pfunc{~papaFreqSlope.value} * e.spawnSerial +1)},\r\n\t\t  \\freqPatternGauss, Pif (Pfunc{~papaFreqSlopeSwitch} > 0, Pfunc{ |e| e.freqPatternGaussUp},\r\n\t\t\t                                                           Pfunc{ |e| e.freqPatternGaussDown}),\r\n\t\t  \\freqPatternBrownUp, Pfunc{ |e| e.freqBrown * (Pfunc{~papaFreqSlope.value} * e.spawnSerial +1)},\r\n\t\t  \\freqPatternBrownDown, Pfunc{ |e| e.freqBrown / (Pfunc{~papaFreqSlope.value} * e.spawnSerial +1)},\r\n\t\t  \\freqPatternBrown, Pif (Pfunc{~papaFreqSlopeSwitch} > 0, Pfunc{ |e| e.freqPatternBrownUp},\r\n\t\t\t                                                           Pfunc{ |e| e.freqPatternBrownDown}),\r\n\t\t  \\freqPattChoose, ~freqPop,\r\n\r\n\r\n\r\n\t\t  \\filterRandP, Pfunc{ |e| exprand(Pkey(\\filterSeries) / (Pfunc{~filterDev.value} + (Pfunc{~spawnFilterDevScaler.value} * e.spawnSerial + 1)),\r\n\t\t\t              Pkey(\\filterSeries) * (Pfunc{~filterDev.value} + (Pfunc{~spawnFilterDevScaler.value} * e.spawnSerial + 1))).clip(20,20000)},\r\n\t\t  \\filterRandN, Pfunc{ |e| exprand(Pkey(\\filterSeries) / (Pfunc{~filterDev.value} + (Pfunc{~spawnFilterDevScaler.value} * Pkey(\\serial) + 1)),\r\n\t\t\t              Pkey(\\filterSeries) * (Pfunc{~filterDev.value} + (Pfunc{~spawnFilterDevScaler.value} * Pkey(\\serial) + 1))).clip(20,20000)},\r\n\t\t  \\filterRand, Pif (Pfunc{~filterDevSwitcher.value} < 1, Pfunc{ |e| e.filterRandP}, Pfunc{ |e| e.filterRandN}),\r\n\r\n\t\t  \\filterGaussP, Pfunc{ |e| (Pgauss( Pkey(\\filterSeries), (Pkey(\\filterSeries)*(Pfunc{~filterDev.value} +\r\n\t\t\t                                 (Pfunc{~spawnFilterDevScaler.value} * e.spawnSerial))), inf)).clip(20,20000)},\r\n\t\t  \\filterGaussN, Pfunc{ |e| (Pgauss( Pkey(\\filterSeries), (Pkey(\\filterSeries)*(Pfunc{~filterDev.value} +\r\n\t\t\t                                 (Pfunc{~spawnFilterDevScaler.value} * Pkey(\\serial)))), inf)).clip(20,20000)},\r\n\t\t  \\filterGauss, Pif (Pfunc{~filterDevSwitcher.value} < 1, Pfunc{ |e| e.filterGaussP}, Pfunc{ |e| e.filterGaussN}),\r\n\r\n\t\t  \\filterBrown, Pfunc{ |e| (Pbrown(Pkey(\\filterSeries) / (Pfunc{~filterDev.value} + (Pfunc{~spawnFilterDevScaler.value} * e.spawnSerial + 1)),\r\n\t\t\t                                Pkey(\\filterSeries) * (Pfunc{~filterDev.value} + (Pfunc{~spawnFilterDevScaler.value} * e.spawnSerial + 1)),\r\n\t\t\t                                Pfunc{~filterStep.value}, inf)).clip(20,20000)},\r\n\r\n\t\t  \\filterPatternRandUp, Pfunc{ |e| (e.filterRand * (Pfunc{~papaFilterSlope.value} * e.spawnSerial +1)).clip(20,20000)},\r\n\t\t  \\filterPatternRandDown, Pfunc{ |e| (e.filterRand / (Pfunc{~papaFilterSlope.value} * e.spawnSerial +1)).clip(20,20000)},\r\n\t\t  \\filterPatternRand, Pif (Pfunc{~papaFilterSlopeSwitch} > 0, Pfunc{ |e| e.filterPatternRandUp},\r\n\t\t\t                                                          Pfunc{ |e| e.filterPatternRandDown}),\r\n\t\t  \\filterPatternGaussUp, Pfunc{ |e| (e.filterGauss * (Pfunc{~papaFilterSlope.value} * e.spawnSerial +1)).clip(20,20000)},\r\n\t\t  \\filterPatternGaussDown, Pfunc{ |e| (e.filterGauss / (Pfunc{~papaFilterSlope.value} * e.spawnSerial +1)).clip(20,20000)},\r\n\t\t  \\filterPatternGauss, Pif (Pfunc{~papaFilterSlopeSwitch} > 0, Pfunc{ |e| e.filterPatternGaussUp},\r\n\t\t \t                                                           Pfunc{ |e| e.filterPatternGaussDown}),\r\n\t\t  \\filterPatternBrownUp, Pfunc{ |e| (e.filterBrown * (Pfunc{~papaFilterSlope.value} * e.spawnSerial +1)).clip(20,20000)},\r\n\t\t  \\filterPatternBrownDown, Pfunc{ |e| (e.filterBrown / (Pfunc{~papaFilterSlope.value} * e.spawnSerial +1)).clip(20,20000)},\r\n\t\t  \\filterPatternBrown, Pif (Pfunc{~papaFilterSlopeSwitch} > 0, Pfunc{ |e| e.filterPatternBrownUp},\r\n\t\t\t                                                           Pfunc{ |e| e.filterPatternBrownDown}),\r\n\t\t  \\filterPattChoose, ~filterPop,\r\n\r\n\r\n\r\n          \\durRandP, Pfunc{ |e| rrand(Pkey(\\durSeries) - (Pfunc{~durDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnDurDevScaler.value} * e.spawnSerial)),\r\n\t\t\t\t                     Pkey(\\durSeries) + (Pfunc{~durDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnDurDevScaler.value} * e.spawnSerial))).max(0.001)},\r\n\t\t  \\durRandN, Pfunc{ |e| rrand(Pkey(\\durSeries) - (Pfunc{~durDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnDurDevScaler.value} * Pkey(\\serial))),\r\n\t\t\t\t                     Pkey(\\durSeries) + (Pfunc{~durDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnDurDevScaler.value} * Pkey(\\serial)))).max(0.001)},\r\n\t\t  \\durRand, Pif (Pfunc{~durDevSwitcher.value} < 1, Pfunc{ |e| e.durRandP}, Pfunc{ |e| e.durRandN}),\r\n\r\n\r\n\t\t  \\durGaussP, Pfunc{ |e| (Pgauss( Pkey(\\durSeries), (Pfunc{~durDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnDurDevScaler.value} * e.spawnSerial)), inf )).max(0.001)},\r\n\t\t  \\durGaussN, Pfunc{ |e| (Pgauss( Pkey(\\durSeries), (Pfunc{~durDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnDurDevScaler.value} * Pkey(\\serial))), inf )).max(0.001)},\r\n\t\t  \\durGauss, Pif (Pfunc{~durDevSwitcher.value} < 1, Pfunc{ |e| e.durGaussP}, Pfunc{ |e| e.durGaussN}),\r\n\r\n\t\t  \\durBrown, Pfunc{ |e| (Pbrown( Pkey(\\durSeries) - (Pfunc{~durDev.value}  +\r\n\t\t\t                                                      (Pfunc{~spawnDurDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pkey(\\durSeries) + (Pfunc{~durDev.value}  +\r\n\t\t\t\t                                                  (Pfunc{~spawnDurDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pfunc{~durStep.value}, inf )).max(0.001)},\r\n\r\n\t\t  \\durPatternRand, Pfunc{ |e| (e.durRand + (Pfunc{~papaDurSlope.value} * e.spawnSerial)).max(0.001)},\r\n\t\t  \\durPatternBrown, Pfunc{ |e| (e.durBrown + (Pfunc{~papaDurSlope.value} * e.spawnSerial)).max(0.001)},\r\n\t\t  \\durPatternGauss, Pfunc{ |e| (e.durGauss + (Pfunc{~papaDurSlope.value} * e.spawnSerial)).max(0.001)},\r\n\t\t  \\durPattChoose, ~durPop,\r\n\r\n\r\n\r\n\t\t  \\densityRandP, Pfunc{ |e| rrand(Pkey(\\densitySeries) - (Pfunc{~densityDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnDensityDevScaler.value} * e.spawnSerial)),\r\n\t\t\t\t                     Pkey(\\densitySeries) + (Pfunc{~densityDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnDensityDevScaler.value} * e.spawnSerial))).max(0.001)},\r\n\t\t  \\densityRandN, Pfunc{ |e| rrand(Pkey(\\densitySeries) - (Pfunc{~densityDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnDensityDevScaler.value} * Pkey(\\serial))),\r\n\t\t\t\t                     Pkey(\\densitySeries) + (Pfunc{~densityDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnDensityDevScaler.value} * Pkey(\\serial)))).max(0.001)},\r\n\t\t  \\densityRand, Pif (Pfunc{~densityDevSwitcher.value} < 1, Pfunc{ |e| e.densityRandP}, Pfunc{ |e| e.densityRandN}),\r\n\r\n\r\n\t\t  \\densityGaussP, Pfunc{ |e| (Pgauss( Pkey(\\densitySeries), (Pfunc{~densityDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnDensityDevScaler.value} * e.spawnSerial)), inf )).max(0.001)},\r\n\t\t  \\densityGaussN, Pfunc{ |e| (Pgauss( Pkey(\\densitySeries), (Pfunc{~densityDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnDensityDevScaler.value} * Pkey(\\serial))), inf )).max(0.001)},\r\n\t\t  \\densityGauss, Pif (Pfunc{~densityDevSwitcher.value} < 1, Pfunc{ |e| e.densityGaussP}, Pfunc{ |e| e.densityGaussN}),\r\n\r\n\t\t  \\densityBrown, Pfunc{ |e| (Pbrown( Pkey(\\densitySeries) - (Pfunc{~densityDev.value}  +\r\n\t\t\t                                                      (Pfunc{~spawnDensityDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pkey(\\densitySeries) + (Pfunc{~densityDev.value}  +\r\n\t\t\t\t                                                  (Pfunc{~spawnDensityDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pfunc{~densityStep.value}, inf )).max(0.001)},\r\n\r\n\t\t  \\densityPatternRand, Pfunc{ |e| (e.densityRand + (Pfunc{~papaDensitySlope.value} * e.spawnSerial)).max(0.001)},\r\n\t\t  \\densityPatternBrown, Pfunc{ |e| (e.densityBrown + (Pfunc{~papaDensitySlope.value} * e.spawnSerial)).max(0.001)},\r\n\t\t  \\densityPatternGauss, Pfunc{ |e| (e.densityGauss + (Pfunc{~papaDensitySlope.value} * e.spawnSerial)).max(0.001)},\r\n\t\t  \\densityPattChoose, ~densityPop,\r\n\r\n\r\n\r\n          \\ampRandP, Pfunc{ |e| rrand(Pkey(\\ampSeries) - (Pfunc{~ampDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnAmpDevScaler.value} * e.spawnSerial)),\r\n\t\t\t\t                     Pkey(\\ampSeries) + (Pfunc{~ampDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnAmpDevScaler.value} * e.spawnSerial))).clip(0,1)},\r\n\t\t  \\ampRandN, Pfunc{ |e| rrand(Pkey(\\ampSeries) - (Pfunc{~ampDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnAmpDevScaler.value} * Pkey(\\serial))),\r\n\t\t\t\t                     Pkey(\\ampSeries) + (Pfunc{~ampDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnAmpDevScaler.value} * Pkey(\\serial)))).clip(0,1)},\r\n\t\t  \\ampRand, Pif (Pfunc{~ampDevSwitcher.value} < 1, Pfunc{ |e| e.ampRandP}, Pfunc{ |e| e.ampRandN}),\r\n\r\n\r\n\t\t  \\ampGaussP, Pfunc{ |e| (Pgauss( Pkey(\\ampSeries), (Pfunc{~ampDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnAmpDevScaler.value} * e.spawnSerial)), inf )).clip(0,1)},\r\n\t\t  \\ampGaussN, Pfunc{ |e| (Pgauss( Pkey(\\ampSeries), (Pfunc{~ampDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnAmpDevScaler.value} * Pkey(\\serial))), inf )).clip(0,1)},\r\n\t\t  \\ampGauss, Pif (Pfunc{~ampDevSwitcher.value} < 1, Pfunc{ |e| e.ampGaussP}, Pfunc{ |e| e.ampGaussN}),\r\n\r\n\t\t  \\ampBrown, Pfunc{ |e| (Pbrown( Pkey(\\ampSeries) - (Pfunc{~ampDev.value}  +\r\n\t\t\t                                                      (Pfunc{~spawnAmpDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pkey(\\ampSeries) + (Pfunc{~ampDev.value}  +\r\n\t\t\t\t                                                  (Pfunc{~spawnAmpDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pfunc{~ampStep.value}, inf )).clip(0,1)},\r\n\r\n\t\t  \\ampPatternRand, Pfunc{ |e| (e.ampRand + (Pfunc{~papaAmpSlope.value} * e.spawnSerial)).clip(0,1)},\r\n\t\t  \\ampPatternBrown, Pfunc{ |e| (e.ampBrown + (Pfunc{~papaAmpSlope.value} * e.spawnSerial)).clip(0,1)},\r\n\t\t  \\ampPatternGauss, Pfunc{ |e| (e.ampGauss + (Pfunc{~papaAmpSlope.value} * e.spawnSerial)).clip(0,1)},\r\n\t\t  \\ampPattChoose, ~ampPop,\r\n\r\n\r\n\r\n\r\n\t      \\panRandP, Pfunc{ |e| rrand(Pkey(\\panSeries) - (Pfunc{~panDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnPanDevScaler.value} * e.spawnSerial)),\r\n\t\t\t\t                     Pkey(\\panSeries) + (Pfunc{~panDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnPanDevScaler.value} * e.spawnSerial))).clip(-1,1)},\r\n\t\t  \\panRandN, Pfunc{ |e| rrand(Pkey(\\panSeries) - (Pfunc{~panDev.value}  +\r\n\t\t\t                                                  (Pfunc{~spawnPanDevScaler.value} * Pkey(\\serial))),\r\n\t\t\t\t                     Pkey(\\panSeries) + (Pfunc{~panDev.value}  +\r\n\t\t\t\t                                              (Pfunc{~spawnPanDevScaler.value} * Pkey(\\serial)))).clip(-1,1)},\r\n\t\t  \\panRand, Pif (Pfunc{~panDevSwitcher.value} < 1, Pfunc{ |e| e.panRandP}, Pfunc{ |e| e.panRandN}),\r\n\r\n\r\n\t\t  \\panGaussP, Pfunc{ |e| (Pgauss( Pkey(\\panSeries), (Pfunc{~panDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnPanDevScaler.value} * e.spawnSerial)), inf )).clip(-1,1)},\r\n\t\t  \\panGaussN, Pfunc{ |e| (Pgauss( Pkey(\\panSeries), (Pfunc{~panDev.value}  +\r\n\t\t\t                                                     (Pfunc{~spawnPanDevScaler.value} * Pkey(\\serial))), inf )).clip(-1,1)},\r\n\t\t  \\panGauss, Pif (Pfunc{~panDevSwitcher.value} < 1, Pfunc{ |e| e.panGaussP}, Pfunc{ |e| e.panGaussN}),\r\n\r\n\t\t  \\panBrown, Pfunc{ |e| (Pbrown( Pkey(\\panSeries) - (Pfunc{~panDev.value}  +\r\n\t\t\t                                                      (Pfunc{~spawnPanDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pkey(\\panSeries) + (Pfunc{~panDev.value}  +\r\n\t\t\t\t                                                  (Pfunc{~spawnPanDevScaler.value} * e.spawnSerial)),\r\n\t\t\t                             Pfunc{~panStep.value}, inf )).clip(-1,1)},\r\n\r\n\t\t  \\panPatternRand, Pfunc{ |e| (e.panRand + (Pfunc{~papaPanSlope.value} * e.spawnSerial)).clip(-1,1)},\r\n\t\t  \\panPatternBrown, Pfunc{ |e| (e.panBrown + (Pfunc{~papaPanSlope.value} * e.spawnSerial)).clip(-1,1)},\r\n\t\t  \\panPatternGauss, Pfunc{ |e| (e.panGauss + (Pfunc{~papaPanSlope.value} * e.spawnSerial)).clip(-1,1)},\r\n\t\t  \\panPattChoose, ~panPop,\r\n\r\n\t\t  \\pattern, Pfunc { |e| Pbindf(p,\\serialx, Pif(Ptime(inf) < e.nicLength, Pseries(0,1,inf)),\r\n\t\t\t                             \\freq, e.freqPattChoose,\r\n\t\t\t                             \\filter, e.filterPattChoose,\r\n\t\t\t                             \\sustain, e.durPattChoose,\r\n\t\t\t                             \\delta, e.densityPattChoose,\r\n\t\t\t                             \\amp, e.ampPattChoose,\r\n\t\t\t                             \\pan, e.panPattChoose\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\t)},\r\n\t\t \\spawnSeries, Pfunc{~spawnCentre.value} + (Pfunc{~spawnSlope.value} * Pkey(\\spawnSerial)),\r\n\t\t \\spawnRand, (Pwhite(Pkey(\\spawnSeries) - Pfunc{~spawnDev.value}, Pkey(\\spawnSeries) + Pfunc{~spawnDev.value}, inf)).max(0.01),\r\n\t\t \\spawnGauss, (Pgauss(Pkey(\\spawnSeries), Pfunc{~spawnDev.value}, inf)).max(0.01),\r\n\t\t \\spawnBrown, (Pbrown(Pkey(\\spawnSeries) - Pfunc{~spawnDev.value}, Pkey(\\spawnSeries) + Pfunc{~spawnDev.value},\r\n\t\t\t                             Pfunc{~spawnStep.value}, inf)).max(0.01),\r\n\t\t \\delta, ~spawnPop,\r\n\t     \\method, \\par)\r\n\t     );\r\n)\r\n});",
   "id" : "1-4Sz",
   "is_private" : null
}
