{
   "code" : "//use samples to granulate\r\n~sample1=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/SamplesPiecesMonnaie/sample1.wav\",channels:0);\r\n~sample2=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/SamplesPiecesMonnaie/sample2.wav\",channels:0);\r\n~sample3=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/SamplesPiecesMonnaie/sample3.wav\",channels:0);\r\n~sample2.play(loop:true)\r\n\r\n(\r\nSynthDef(\\essai,{\r\n\targ gate=1,amp=0.1,pan=0,freq=440,out;\r\n\tvar sig,env,trig;\r\n\ttrig=Impulse.ar(freq);\r\n\tsig=PlayBuf.ar(1,~sample2,freq,trig,loop:0);\r\n\tenv=Env.adsr.ar(doneAction:2,gate:gate);\r\n\tOut.ar(out,Pan2.ar(sig*env*amp,pan));\r\n}).add;\r\n)\r\n\r\n(\r\nSynthDef(\\essai,{\r\n\targ gate=1,amp=1,pan=0,freq=440,out,dur;\r\n\tvar sig,env,trig;\r\n\ttrig=Impulse.ar(freq);\r\n\t//sig=TGrains.ar(2,trig,~sample1,freq,dur:1/freq,amp:1);\r\n\tsig=GrainBuf.ar(2,trig,BufDur.kr(~sample1)/freq,~sample1,freq,pos:0,pan:0);\r\n\tenv=Env.adsr.ar(doneAction:2,gate:gate);\r\n\tOut.ar(out,Pan2.ar(sig*env*amp,pan));\r\n}).add;\r\n)\r\n\r\n\r\n(\r\nSynthDef(\\micromelody,{\r\n\targ rate=1,gate=1,durGrain=1, attackTime=0.01, decayTime=0.3, sustainLevel=0.5,fadeTime=1,rangeChorus=1.02,rangeChorusBis=1.02,out=0,amp=1;\r\n\tvar env,chorus,chorusbis,filtermod,source,snd,sig,trigGrain,pitchGrain,freq,impulse;\r\n\timpulse=Impulse.ar(rate);\r\n\tfreq=Demand.ar(impulse,0,Dseq(([[0,2,4],[2,4,6],[2,4,7],[4,6,8],[-1,0,2],[2,4,5]].degreeToKey([0,2,4,5,7,9,11])+60).midicps,inf));\r\n\r\n\tchorus = freq.lag(2)*LFNoise1.kr([0.4, 0.5, 0.7, 1, 2, 5, 10]).range(1,rangeChorus);\r\n\tchorusbis = freq.lag(2)*LFNoise1.kr([0.4, 0.5, 0.7, 1, 2, 5, 10]).range(1,rangeChorusBis);\r\n\tenv=Env.adsr(attackTime:attackTime,decayTime:decayTime,sustainLevel:sustainLevel,releaseTime:fadeTime).ar(doneAction:2,gate:gate);\r\n\tsource=AY.ar(tonea: AY.freqtotone(chorus),toneb: AY.freqtotone(chorusbis),mul:0.5);\r\n\tfiltermod = SinOsc.kr(1/16).range(1, 10);\r\n\tsnd = LPF.ar(in: source, freq: freq*filtermod);\r\n\tsnd = Resonz.ar(in: snd,freq: freq,bwr: Rand(2.0,10.0));\r\n\ttrigGrain=impulse;\r\n\tsig=GrainIn.ar(2,trigGrain,durGrain,snd);\r\n\tOut.ar(out,Pan2.ar(sig,0));\r\n\r\n}).add;\r\n)\r\n\r\n\r\na=Synth(\\essai)\r\nTempoClock.tempo=1\r\nPdef(\\essai,Pbind(\\instrument,\\essai,\\degree,Pseq([[0,2,4],[2,4,6],[2,4,7],[4,6,8],[-1,0,2],[2,4,5]],inf),\\dur,1,\\amp,10,\\octave,3))\r\nPdef(\\essai,Pmono(\\essai,\\degree,Pseq([[0,2,4],[2,4,6],[2,4,7],[4,6,8],[-1,0,2],[2,4,5]],inf),\\dur,0.1,\\amp,1,\\octave,5))\r\n\r\nPbind(\\instrument,\\micromelody,\\rate,1).play\r\na=Synth(\\micromelody)\r\na.set(\\rate,100)\r\na.set(\\durGrain,0.01)\r\n\r\nPmono(\\micromelody,\\rate,Pseq(((0..7).degreeToKey([0,2,4,5,7,9,11])+84).midicps,inf),\\durGrain,1/Pkey(\\rate)).trace(\\durGrain).play\r\n\r\nPdef(\\essai).play\r\n\r\n\r\n\r\n\r\n/********************** MICRO-RYTHMES ******************************/\r\n//use drum samples\r\n(\r\n~kick=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/Drums/SD01.WAV\",channels:0);\r\n~claps=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/Drums/CLAPS.WAV\",channels:0);\r\n~closeHat=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/Drums/CLHAT1.WAV\",channels:0);\r\n~openHat=Buffer.readChannel(s,\"C:/Users/Public/EssaiSupercollider/Drums/OPHAT1.WAV\",channels:0);\r\n)\r\n(\r\nSynthDef(\\microRythmKick,{\r\n\targ rate=1,rateGrain=1;\r\n\tvar impulse,claps,trig;\r\n\timpulse=Impulse.ar(rate);\r\n\ttrig=Demand.ar(impulse,0,Dseq([1,0,0,0],inf));\r\n\tclaps=GrainBuf.ar(2,trig,BufDur.kr(~claps),~claps,rateGrain);\r\n\tOut.ar(0,claps)\r\n}).add;\r\n\r\nSynthDef(\\microRythmCloseHat,{\r\n\targ rate=1,rateGrain=1;\r\n\tvar impulse,claps,trig;\r\n\timpulse=Impulse.ar(rate);\r\n\ttrig=Demand.ar(impulse,0,Dseq([0,1,0,1],inf));\r\n\tclaps=GrainBuf.ar(2,trig,BufDur.kr(~closeHat),~closeHat,rateGrain);\r\n\tOut.ar(0,claps)\r\n}).add;\r\n\r\nSynthDef(\\microRythmOpenHat,{\r\n\targ rate=1,rateGrain=1;\r\n\tvar impulse,claps,trig;\r\n\timpulse=Impulse.ar(rate);\r\n\ttrig=Demand.ar(impulse,0,Dseq([0,1,0,1],inf));\r\n\tclaps=GrainBuf.ar(2,trig,BufDur.kr(~openHat),~openHat,rateGrain);\r\n\tOut.ar(0,claps)\r\n}).add;\r\n\r\n\r\n\r\n)\r\n\r\n\r\na=Synth(\\microRythmKick)\r\na.set(\\rate,10)\r\na.set(\\rateGrain,10)\r\n(\r\n{\r\n\ta=Synth(\\microRythmKick,[\\rate,10,\\rateGrain,20]);\r\n\tb=Synth(\\microRythmCloseHat,[\\rate,10,\\rateGrain,20]);\r\n\t0.01.wait;\r\n\t\"part1\".postln;\r\n\tc=Synth(\\microRythmOpenHat,[\\rate,10,\\rateGrain,20]);\r\n\t10.wait;\r\n\t\"part2\".postln;\r\n\ta.set(\\rateGrain,1);\r\n\tb.set(\\rateGrain,1);\r\n\t10.wait;\r\n\t\"part3\".postln;\r\n\tb.set(\\rate,1);\r\n\tc.set(\\rateGrain,1);\r\n\t2.wait;\r\n\t\"part4\".postln;\r\n\ta.set(\\rateGrain,10);\r\n\tb.set(\\rateGrain,10);\r\n\t5.wait;\r\n\t\"part5\".postln;\r\n\tc.set(\\rateGrain,10);\r\n\ta.set(\\rate,5);\r\n\tc.set(\\rate,5);\r\n\t10.wait;\r\n\t\"part6\".postln;\r\n\ta.set(\\rateGrain,1);\r\n\tb.set(\\rateGrain,1);\r\n\tc.set(\\rateGrain,1);\r\n\t10.wait;\r\n\t\"part7 et fin\".postln;\r\n\td=Synth(\\microRythmKick,[\\rate,5,\\rateGrain,1]);\r\n\te=Synth(\\microRythmCloseHat,[\\rate,5,\\rateGrain,1]);\r\n\tf=Synth(\\microRythmOpenHat,[\\rate,5,\\rateGrain,10]);\r\n\ta.set(\\rateGrain,0.1);\r\n\tb.set(\\rateGrain,0.1);\r\n\tc.set(\\rateGrain,0.1);\r\n\ta.set(\\rate,10);\r\n\tb.set(\\rate,10);\r\n\tc.set(\\rate,10);\r\n\r\n}.fork;\r\n)\r\n\r\na.free\r\nb.free\r\nc.free\r\nd.free\r\ne.free",
   "id" : "1-5bg",
   "is_private" : null,
   "labels" : [
      "idm",
      "microrhythms",
      "micromelodies"
   ],
   "ancestor_list" : [],
   "description" : "In order to not saturate the server, no OSC message is sent at each micro-times; I use Demand Ugens and I can get very speed rhythms.",
   "name" : "Micro-Rythms and micro-melodies with granular synthesis.",
   "author" : "jerome.lapuyade.lahorgue"
}
