{
   "labels" : [
      "formant synthesis",
      "gregorian chant"
   ],
   "is_private" : null,
   "id" : "1-4Vq",
   "code" : "(\r\n// SynthDef\r\nSynthDef(\"sillyChoir\", { arg\r\n\tfreq = 220,\r\n\tamp = 0.5,\r\n\tvibratoSpeed = 6,\r\n\tvibratoDepth = 4,\r\n\tvowel = 0,\r\n\tatt = 0.01,\r\n\trel = 0.1,\r\n\tlag = 1,\r\n\tgate = 1;\r\n\r\n\tvar in, vibrato, env, va, ve, vi, vo, vu, snd, temp_freq, temp_lag, temp_vowel;\r\n\r\n  env = EnvGen.kr(Env.asr(att, 1, rel), gate, doneAction: 2);\r\n  \r\n  snd = DC.ar(0) ! 2;\r\n  \r\n  5.do { |i|\r\n    vibrato = SinOsc.kr(vibratoSpeed + LFNoise1.kr(1).range(-1, 1), mul: vibratoDepth * LFNoise1.kr(1).range(0.5, 1));\r\n    \r\n    temp_freq = DelayC.kr(freq, 0.2, LFNoise1.kr(1).range(0, 0.2)) * LFNoise1.kr(0.5).range(0.98, 1.02);\r\n    temp_lag = lag * LFNoise1.kr(1).range(0.5, 1);\r\n    temp_vowel = DelayC.kr(vowel, 0.2, LFNoise1.kr(1).range(0, 0.2));\r\n    \r\n    in = VarSaw.ar(Lag.kr(temp_freq, temp_lag) + vibrato, width: LFNoise1.kr(1).range(0.05, 0.2)) * LFNoise1.kr(1).range(0.5, 1);\r\n    \r\n    \r\n    va = BBandPass.ar(\r\n      in: in,\r\n      freq: [ 600, 1040, 2250, 2450, 2750 ],\r\n      bw: [ 0.1, 0.067307692307692, 0.048888888888889, 0.048979591836735, 0.047272727272727 ],\r\n      mul: [ 1, 0.44668359215096, 0.35481338923358, 0.35481338923358, 0.1 ]);\r\n    \r\n    ve = BBandPass.ar(\r\n      in: in,\r\n      freq: [ 400, 1620, 2400, 2800, 3100 ] ,\r\n      bw: [ 0.1, 0.049382716049383, 0.041666666666667, 0.042857142857143, 0.038709677419355 ],\r\n      mul: [ 1, 0.25118864315096, 0.35481338923358, 0.25118864315096, 0.12589254117942 ]);\r\n    \r\n    vi = BBandPass.ar(\r\n      in: in,\r\n      freq: [ 250, 1750, 2600, 3050, 3340 ] ,\r\n      bw: [ 0.24, 0.051428571428571, 0.038461538461538, 0.039344262295082, 0.035928143712575 ],\r\n      mul: [ 1, 0.031622776601684, 0.15848931924611, 0.079432823472428, 0.03981071705535 ] );\r\n    \r\n    vo = BBandPass.ar(\r\n      in: in,\r\n      freq:[ 400, 750, 2400, 2600, 2900 ] ,\r\n      bw: [ 0.1, 0.10666666666667, 0.041666666666667, 0.046153846153846, 0.041379310344828 ],\r\n      mul: [ 1, 0.28183829312645, 0.089125093813375, 0.1, 0.01 ]);\r\n    \r\n    vu = BBandPass.ar(\r\n      in: in,\r\n      freq: [ 350, 600, 2400, 2675, 2950 ],\r\n      bw: [ 0.11428571428571, 0.13333333333333, 0.041666666666667, 0.044859813084112, 0.040677966101695 ],\r\n      mul: [ 1, 0.1, 0.025118864315096, 0.03981071705535, 0.015848931924611 ]);\r\n    \r\n    snd = snd + Pan2.ar(SelectX.ar(Lag.kr(temp_vowel, temp_lag), [va, ve, vi, vo, vu]), i.linlin(0, 4, -1, 1));\r\n  };\r\n  \r\n  snd = Compander.ar(snd, snd, -30.dbamp, 1, 0.5, 0.01, 0.1) * 6.dbamp;\r\n  \r\n  snd = FreeVerb2.ar(snd[0], snd[1], 0.5, 1, 1);\r\n  \r\n\tOut.ar(0, snd * env * amp);\r\n}).add;\r\n)\r\n\r\n(\r\nPmono(\r\n\t\"sillyChoir\",\r\n  \\note, Pwrand([0, 2, 4, 5, 7, 9], [5, 2, 3, 3, 4, 1].normalizeSum, inf),\r\n\t\\ctranspose, -14,\r\n  \\dur, Pstutter(Prand([1, 2, 4], inf), Pwrand([1, 0.5, 0.25], [1, 2, 1].normalizeSum, inf)),\r\n  \\amp, Pbrown(-12, -6, 0.1).dbamp,\r\n\t\\vibratoSpeed, Pwhite(4, 5),\r\n\t\\vibratoDepth, 2,\r\n\t\\vowel, Pwrand([0, 1, 2, 3, 4], [4, 3, 2, 1, 1].normalizeSum, inf),\r\n\t\\lag, 0.5\r\n).play;\r\n)",
   "author" : "wondersluyter",
   "name" : "Re: Silly Voice",
   "ancestor_list" : [
      "1-4Vm"
   ],
   "description" : "Silly gregorian chant, from [Silly Voice](http://sccode.org/1-4Vm)"
}
