{
   "code" : "// collection of synths I'm using for livecoding as at 8/03/2017\r\n\r\nSynthDef(\\slice, { |out, gate=1, buf, slices=16, slice=0, freq = 261.6255653006, amp=0.1|\r\n\tvar myenv, env, start, len, basefreq = 60.midicps, rate, sig;\r\n\trate = freq / basefreq;\r\n\tlen = BufFrames.kr(buf);\r\n\tstart = (len / slices * slice);\r\n\tmyenv = Env.asr(attackTime: 0.01, sustainLevel: 1, releaseTime: 0.1);\r\n\tsig = PlayBuf.ar(2, buf, BufRateScale.kr(buf) * rate, startPos: start);\r\n\tenv = EnvGen.kr(myenv, gate, doneAction: 2);\r\n\tOut.ar(out, sig * env * amp)\r\n}).add;\r\n\r\nSynthDef(\\dice, {|out=0, buf=0, amp=0.1, freq=261.6255653006, sustain=0.8, attack=0.001, slices=16, slice=0|\r\n\tvar theEnv, rate, env, pitchEnv, sig, len, start;\r\n\trate = freq/60.midicps;\r\n\tlen = BufFrames.kr(buf);\r\n\tstart = (len / slices * slice);\r\n\ttheEnv = Env.perc(attackTime: attack, releaseTime: sustain/rate, curve: \\cub);\r\n\tenv = EnvGen.kr(theEnv, 1, doneAction: 2);\r\n\tsig = PlayBuf.ar(2, buf, BufRateScale.ir(buf) * rate, startPos: start);\r\n\tsig = sig * env;\r\n\tOut.ar(out, sig * amp)\r\n}).add;\r\n\r\n(\r\nSynthDef(\\warp, {|buf = #[0,0], rate = 1, freq = 261.6255653006, amp= 0.1, out=0|\r\n\tvar pointer, sig, fscale;\r\n\tfscale = freq/60.midicps;\r\n\tpointer = Phasor.ar(0, SampleDur.ir/BufDur.kr(buf) * rate);\r\n\tsig = Warp1.ar(1, buf, pointer, freqScale:fscale, windowSize:0.3, envbufnum:-1, overlaps:16, windowRandRatio:0.1, interp:4);\r\n\tOut.ar(out, sig * amp);\r\n}).add;\r\n);\r\n\r\nSynthDef(\\bf, {|out = 0 buf = 0 amp = 0.1 freq = 261.6255653006, pan = 0.0|\r\n\tvar sig = PlayBuf.ar(2, buf, BufRateScale.kr(buf) * freq/60.midicps, doneAction:2);\r\n\tsig = Balance2.ar(sig[0],sig[1], pan);\r\n\tOut.ar(out, sig * amp)\r\n}).add;\r\n\r\nSynthDef(\\bform, { |out = 0, freq = 261.6255653006, form = 70, bw = 200, gate = 1, amp = 0.1|\r\n\t// var env = EnvGen.kr(Env.adsr(), gate, doneAction:2);\r\n\tvar env = EnvGen.kr(Env.adsr(releaseTime:0.5, decayTime:0.1), gate, doneAction:2);\r\n\tvar sig = Formant.ar(freq * ((-1..1)/500 + 1), form * env.range(0.01,2), bw);\r\n\tsig = LeakDC.ar(sig);\r\n\tsig = sig * env;\r\n\tOut.ar(out, Splay.ar(sig) * amp)\r\n}).add;\r\n\r\nSynthDef(\\rh1,{|out=0 freq=261.6255653006 amp=0.1 gate=1 cutoff=1500 rq=0.5 pan=0.0|\r\n\tvar sig, filter, env, pulse1, pulse2, pulse3;\r\n\tpulse1 = Pulse.ar(freq:freq*1.01, width:0.2, mul:0.7);\r\n\tpulse2 = Mix(Pulse.ar(freq:freq*[1,33.5.midiratio], width:[0.2,0.1], mul:[0.7,0.5]));\r\n\tpulse3 = Pulse.ar(freq:freq*0.99, width:0.2, mul:0.7);\r\n\tsig = [pulse1, pulse2, pulse3];\r\n\tsig = Splay.ar(sig, spread: 0.9, center:pan);\r\n\tenv = EnvGen.ar(Env.adsr(0.0,0.8,0.8,0.5),gate,doneAction:2);\r\n\tsig = BLowPass4.ar(sig,(cutoff*(env.squared))+200+freq,rq);\r\n\tsig = Compander.ar(3*sig,sig,0.5,1,4);\r\n\tOut.ar(out, sig * env * amp * 0.4);\r\n}).add;\r\n\r\nSynthDef(\\rh2, {\r\n    |\r\n    // standard meanings\r\n    out = 0, freq = 440, gate = 1, pan = 0, amp = 0.1,\r\n    // all of these range from 0 to 1\r\n    vel = 0.8, modIndex = 0.2, mix = 0.2, lfoSpeed = 0.4, lfoDepth = 0.1\r\n    |\r\n    var env1, env2, env3, env4;\r\n    var osc1, osc2, osc3, osc4, snd;\r\n    lfoSpeed = lfoSpeed * 12;\r\n    freq = freq * 2;\r\n    env1 = EnvGen.ar(Env.adsr(0.001, 1.25, 0.0, 0.04, curve: \\lin));\r\n    env2 = EnvGen.ar(Env.adsr(0.001, 1.00, 0.0, 0.04, curve: \\lin));\r\n    env3 = EnvGen.ar(Env.adsr(0.001, 1.50, 0.0, 0.04, curve: \\lin), gate, doneAction: 2);\r\n    env4 = EnvGen.ar(Env.adsr(0.001, 1.50, 0.0, 0.04, curve: \\lin));\r\n    osc4 = SinOsc.ar(freq * 0.5) * 2pi * 2 * 0.535887 * modIndex * env4 * vel;\r\n    osc3 = SinOsc.ar(freq, osc4) * env3 * vel;\r\n    osc2 = SinOsc.ar(freq * 15) * 2pi * 0.108819 * env2 * vel;\r\n    osc1 = SinOsc.ar(freq, osc2) * env1 * vel;\r\n    snd = Mix((osc3 * (1 - mix)) + (osc1 * mix));\r\n    snd = snd * (SinOsc.ar(lfoSpeed) * lfoDepth + 1);\r\n    snd = Pan2.ar(snd, pan, amp);\r\n    Out.ar(out, snd);\r\n}).add;\r\n\r\n///////////// fx\r\n\r\nSynthDef(\\echo, { |out = 0, in = 0, max = 1.0, delay = 0.5, decay = 3, amp = 0.5, bypass = 0|\r\n\tvar sig, insig;\r\n\tinsig = In.ar(in, 2);\r\n\tsig = CombL.ar(insig, max, delay, decay, amp, add: insig) * EnvGate();\r\n\tOut.ar(out, bypass * insig + ((1 - bypass) * sig));\r\n}).add;\r\n\r\nSynthDef(\\mate, { |out=0, in=0, rate=1700, bits=7, amp=0.8|\r\n\tvar sig = In.ar(in, 2);\r\n\tsig = Decimator.ar(sig, rate, bits);\r\n\tOut.ar(out, sig * amp)\r\n}).add;",
   "is_private" : null,
   "id" : "1-56x",
   "labels" : [
      "synths"
   ],
   "description" : "collection of synths I'm using for livecoding as at 8/03/2017",
   "ancestor_list" : [],
   "author" : "tedthetrumpet",
   "name" : "lcode07synths.scd"
}
