{
   "description" : "A bassline with a randomish jazz thing over the top.",
   "ancestor_list" : [],
   "author" : "badnumbersmusic",
   "name" : "Crap jazz",
   "id" : "1-57a",
   "is_private" : null,
   "code" : "(\r\nw=1;h=0.5;q=0.25;e=0.125;\r\nc = TempoClock.default;\r\nc.tempo = 2.3;\r\nm = (\r\n\tscale: Scale.dorian,\r\n\tchord: 0,\r\n\tscaleChord: {\r\n\t\t|self,voicing|\r\n\t\tvar notes = self.chord + voicing;\r\n\t\tScale(self.scale.degrees.wrapAt(notes).sort);\r\n\t},\r\n\tbar: 0,\r\n\tbb: 3\r\n);\r\n)\r\n\r\n(\r\nSynthDef(\\bandpass,\r\n\t{\r\n\t\t|freq=200,amp=0.1,out=0,pan=0,gate=1,sawCutoff=1000,cutoffSpread=1,masterCutoff=10000,filterGain=2|\r\n\t\tvar audio,env;\r\n\t\tenv = EnvGen.kr(Env.perc,gate,amp,doneAction:2);\r\n\t\taudio = Mix.ar(\r\n\t\t\t(1..5).collect({\r\n\t\t\t\t|num|\r\n\t\t\t\tvar sawFreq = freq + (freq * LFNoise1.kr(0.2,0.01));\r\n\t\t\t\tvar saw = Saw.ar(sawFreq);\r\n\t\t\t\tBPF.ar(saw, sawCutoff + (sawCutoff * LFNoise1.ar(0.2,cutoffSpread)));\r\n\t\t\t})\r\n\t\t);\r\n\t\taudio = MoogFF.ar(audio,masterCutoff,filterGain);\r\n\t\taudio = audio.tanh * env;\r\n\t\taudio = Pan2.ar(audio,pan);\r\n\t\tOut.ar(out,audio);\r\n\t}\r\n).add;\r\nSynthDef(\\glorious,\r\n\t{\r\n\t\t|freq=200,amp=0.1,out=0,pan=0,gate=1,width=0.6,ffreq=5000,res=0.5|\r\n\t\tvar audio,env;\r\n\t\tenv = EnvGen.kr(Env.perc,gate,amp,doneAction:2);\r\n\t\taudio = VarSaw.ar(freq,0,width,env);\r\n\t\taudio = MoogLadder.ar(audio,ffreq,res);\r\n\t\taudio = Pan2.ar(audio,pan);\r\n\t\tOut.ar(out,audio);\r\n\t}\r\n).add;\r\n)\r\n\r\n(\r\nPdef(\\structure).quant = [6 * h, 0, 0.1];\r\nPdef(\\structure,\r\n\tPpar([\r\n\t\tPbind(\r\n\t\t\t\\type,\\rest,\r\n\t\t\t\\list,Pseq((0..35),inf),\r\n\t\t\t\\item, Pkey(\\list).collect({|x|m.bar=x}),\r\n\t\t\t\\dur, m.bb\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\type,\\rest,\r\n\t\t\t\\list,Pseq([0,2,0,3,0,1,0,1,3,4],inf),\r\n\t\t\t\\item, Pkey(\\list).collect({|x|m.chord=x}),\r\n\t\t\t\\dur, Pseq([4,4,4,4,4,4,4,4,2,2]*m.bb,inf)\r\n\t\t)\r\n\t])\r\n).play;\r\n)\r\n\r\n(\r\nPdef(\\bandpass).quant = [6 * h, 0, 0];\r\nPdef(\\bandpass,\r\n\tPbind(\r\n\t\t\\instrument, \\bandpass,\r\n\t\t\\scale, Pfunc({m.scaleChord([0,2,4])}),\r\n\t\t\\octave, 3,\r\n\t\t\\degree, Pswitch([\r\n\t\t\tPseq([0,1,2]),\r\n\t\t\tPseq([0,1,3]),\r\n\t\t\tPseq([0,1,2,3,2,1]),\r\n\t\t],Pfunc({m.bar%3})),\r\n\t\t\\dur, h,\r\n\t\t\\sawCutoff, Pbrown(800,1400,100,inf),\r\n\t\t\\cutoffSpread, Pbrown(1.0,1.03,0.03,inf),\r\n\t\t\\masterCutoff, Pbrown(500,3000,200,inf),\r\n\t\t\\amp, Pseq([0.3,0.1,0.2,0.1,0.24,0.1],inf),\r\n\t\t\\pan,-0.2\r\n\t)\r\n).play;\r\n)\r\nPdef(\\bandpass).stop;\r\n\r\n(\r\nPdef(\\highbandpass).quant = [6 * h, 0, 0];\r\nPdef(\\highbandpass,\r\n\tPbind(\r\n\t\t\\instrument, \\bandpass,\r\n\t\t\\scale, Pfunc({m.scaleChord([0,2,4])}),\r\n\t\t\\octave, 5,\r\n\t\t\\base, Pfunc({m.bar%3}),\r\n\t\t\\degree, Pseq([0,1,2,3,4,3],inf)-Pkey(\\base),\r\n\t\t\\dur, q,\r\n\t\t\\sawCutoff, Pbrown(800,1400,100,inf),\r\n\t\t\\cutoffSpread, 1,\r\n\t\t\\masterCutoff, Pexprand(500,25000,inf),\r\n\t\t\\filterGain, 3,\r\n\t\t\\amp, 0.07,\r\n\t\t\\pan,Pwhite(-0.8,0.03,inf)\r\n\t)\r\n).play;\r\n)\r\nPdef(\\highbandpass).stop;\r\n\r\n(\r\nPdef(\\glorious,\r\n\tPbind(\r\n\t\t\\instrument, \\glorious,\r\n\t\t\\type, Pswitch([\\note,\\rest],Pbrown(0.0,1.3,0.1).floor),\r\n\t\t\\scale, Pfunc({m.scaleChord([0,2,4,6])}),\r\n\t\t\\octave, 5,\r\n\t\t\\ctranspose, Pwrand([0,Pstutter(Pwhite(1,4),Pseq([-1]))],[0.95,0.05],inf),\r\n\t\t\\base, Pstutter(Pwhite(1,8),Pbrown(1,4,1,inf)),\r\n\t\t\\degree, Prand([\r\n\t\t\tPseq([0,1,[1,2,3,4]],inf),\r\n\t\t\tPseq([0,1,[1,2,3,4]],inf),\r\n\t\t\tPseq([0,1,[1,2,4]],inf),\r\n\t\t\tPseq([0,1,[1,2]],inf),\r\n\t\t\tPseq([0,1,2,1],inf),\r\n\t\t\tPseq([0,1,[1,2,3]],inf),\r\n\t\t],inf) + Pkey(\\base),\r\n\t\t\\dur, Pswitch([\r\n\t\t\tPseq(w!3),\r\n\t\t\tPseq(h!6),\r\n\t\t\tPseq(q!12),\r\n\t\t\tPseq([q,h,q],2),\r\n\t\t\tPseq([h,q,q,h],2)\r\n\t\t],Pfunc({m.bar%5})),\r\n\t\t\\amp, 0.15,\r\n\t\t\\width, Pbrown(0.6,0.9,0.05,inf),\r\n\t\t\\ffreq, Pbrown(1000,20000,1000,inf),\r\n\t\t\\res,Pbrown(0,0.9,0.07,inf),\r\n\t\t\\pan,Pbrown(0.1,0.9,0.1,inf),\r\n\t\t\\timingOffset, Pbrown(0,1,0.1,inf).linexp(0,1,0.0001,0.1)\r\n\t)\r\n).play;\r\n)\r\nPdef(\\glorious).stop;",
   "labels" : [
      "jazz",
      "algorithmic"
   ]
}
