{
   "description" : "based on pure data code from the book \"Designing Sound\" by Andy Farnell. (Chapter 56, Practical 33, Transporter)",
   "ancestor_list" : [],
   "name" : "Star Trek transporter",
   "author" : "DSastre",
   "code" : "(\r\nx = {\r\n\tvar beam_envelope, phasor, beam, feedback, transporter, reverb, activateEnv, percEnv, activate, buffer; \r\n\t\t\r\n\tbuffer = LocalBuf(SampleRate.ir * 0.12);\r\n\t\t\r\n\t// feedback has to be 0 at the beginning, to avoid input \r\n\t// nil before sound has been produced\t\r\n\tfeedback = 0;\r\n\t\r\n\t\r\n\t// Activate Sound (fig 56.3)\r\n\r\n\tactivateEnv = EnvGen.ar(Env.new([0, 1, 1, 0], [0.01, 0.01, 5]));\r\n\tpercEnv = EnvGen.ar(Env.new([1, 1, 0], [0.01, 0.12]));\r\n\t\t\r\n\tactivate = (1 - activateEnv * 120 + 775) + (WhiteNoise.ar(0.1) + SinOsc.ar(30, mul:40));\r\n\tactivate = OnePole.ar(activateEnv, exp(-2pi * (30 * SampleDur.ir))) * LFSaw.ar(activate, 1, 0.5, 0.5 );\r\n\t\r\n\t// adding a percussive shape at the beginning of the sound\r\n\tactivate = (activate + (WhiteNoise.ar * percEnv)) * 3;\r\n\t\r\n\tactivate = Clip.ar(activate, -1, 1);\r\n\tactivate = BPF.ar(activate, [775,1550,2325], 13.reciprocal).sum * 0.5;\r\n\r\n\t\r\n\t\r\n\t// Beam Sound  \r\n\t\r\n\tbeam = LFSaw.ar(467.1, 1, 0.5, 0.5 ) - 0.5;\r\n\tbeam = beam - (Wrap.ar(beam) - 0.5);\r\n\t// two stage FM process\r\n\tphasor = LFSaw.ar( beam * 6500 + 277, 1, 0.5, 0.5) - 0.5;\r\n\tbeam = beam * (phasor - (Wrap.ar(phasor) - 0.5));\r\n\tbeam = DelTapWr.ar(buffer, beam + (feedback * 0.7));\r\n\t\r\n\tbeam_envelope = Line.ar(0,1,12);\r\n\t\r\n\tfeedback = DelTapRd.ar(buffer, beam, \r\n\t\t(1 - beam_envelope * 12 + 1 \r\n\t\t\t// flanger effect w/ variable delays spaced 12ms apart [0,12,24]\r\n\t\t\t+ 12 * (0..2))\r\n\t\t// DelTapRd requires delaytime in seconds (the equivalence in pd [vd~] \r\n\t\t// calculates with miliseconds, for it the division by 1000)\r\n\t \t/ 1000, \r\n\t\tinterp: 4).sum * 0.3;\r\n\t\r\n\ttransporter = (beam_envelope * (-1) + 1).min(beam_envelope) * 4 * feedback;\r\n\ttransporter = (transporter - OnePole.ar(transporter, exp(-2pi * (100 * SampleDur.ir))));\r\n\ttransporter = BPF.ar(transporter, \r\n\t\t// whole tone scale\r\n\t\tArray.geom(12, 466.164, 1.12247), \r\n\t\t[1200, 1100, 930, 910, 880, 840, 800, 760, 720, 680, 640, 620].reciprocal).sum * 12;\r\n\treverb = GVerb.ar(transporter + (activate * 0.1), 100, 8, 0.1, 0.9);\r\n\treverb = reverb + (activate * 0.5)!2;\r\n\r\n}.play\r\n)\r\nx.free;\r\n\r\n// code also available here: \r\n// http://en.wikibooks.org/wiki/Designing_Sound_in_SuperCollider/Transporter",
   "id" : "1-4QA",
   "is_private" : null,
   "labels" : [
      "scifi",
      "fm",
      "space",
      "star trek"
   ]
}
