{
   "name" : "Red alert",
   "author" : "DSastre",
   "description" : "Based on pure data code from the book \"Designing Sound\" by Andy Farnell. (Chapter 58)",
   "ancestor_list" : [],
   "labels" : [
      "alarm",
      "siren"
   ],
   "code" : "//Fig 58.7: Red alert\r\n//Complete patch, saw + second harmonic, resonators, distortion and post filters to create \r\n//fixed resonance. Contains the subpatch shown in fig 58.6.\r\n\r\n(\r\n\tSynthDef(\\red, {\r\n \r\n\tvar env, redAlert, dfbe, aIn, bIn, cIn, aOut, bOut, cOut;\r\n \r\n\t# aIn, bIn, cIn = LocalIn.ar(7).clumps([5,1,1]);\r\n \r\n\tenv = [\r\n\t\tEnvGen.ar(Env.new([0,1,1,0], [0.9, 0.3, 0.0])), \r\n\t\tEnvGen.ar(Env.new([0,1,1,0], [0.01, 0.88, 0.01]))\r\n\t];\r\n\tenv[0] = LFSaw.ar(env[0].sqrt * 487 + 360, 1, 0.5, 0.5);\r\n\tenv[0] = (env[0] - 0.5) + ((env[0] * 2 * 2pi).cos * 0.3);\r\n\tredAlert = (env[0] - OnePole.ar(env[0], exp(-2pi * (1 * SampleDur.ir)))) * env[1];\r\n\tredAlert = redAlert + (cIn * 0.006) * 0.2;\r\n \r\n \r\n\t// fig 58.6: Delay feedback element\r\n\tdfbe = 0!6;\r\n\tredAlert = redAlert + (aIn * 0.7);\r\n\t5.do{|i| dfbe[i] = DelayN.ar(redAlert[i], 0.1, [0.015, 0.022, 0.035, 0.024, 0.011][i])};\r\n\taOut = dfbe[0..4]; \r\n \r\n\tredAlert = redAlert[0..4].sum;\r\n\tredAlert = (redAlert - OnePole.ar(redAlert, exp(-2pi * (12 * SampleDur.ir))));\r\n \r\n\tdfbe[5] = redAlert + (bIn * 0.7);\r\n\tdfbe[5] = DelayN.ar(dfbe[5], 0.1, 0.061);\r\n\t# bOut, cOut = dfbe[5]!2;\r\n\tLocalOut.ar(aOut ++ bOut ++ cOut);\r\n \r\n\tredAlert = Clip.ar(redAlert * 4, -1, 1);\r\n\tredAlert = BPF.ar(redAlert, [740, 1400, 1500, 1600], (12!4).reciprocal) ++ (redAlert * 0.5);\r\n\tOut.ar(0, (redAlert.sum * 0.2)!2);\r\n \r\n}).add;\r\n)\r\n \r\n// ALL HANDS!! BATTLESTATIONS!\r\ne = Synth(\\red);\r\n\r\n\r\n\r\n// code also available here: \r\n// http://en.wikibooks.org/wiki/Designing_Sound_in_SuperCollider/Red_alert",
   "is_private" : null,
   "id" : "1-4RI"
}
