// Pbind version

 

// Zeitraum for the György Ligeti Hall at ◊ MUMUTH in Graz/Austria

// formulated in ◊ SuperCollider 


// synth with 33 delays, one for each speaker

 

SynthDef(\delay33, { arg out;

   var delays = Control.names([\delays]).kr(0!33);

   ReplaceOut.ar(out, DelayC.ar(In.ar(0, 33), 1, delays))

}).add;

 

// setup the delay synth and set precomputed delay times in s

 

~delayGroup = Group.new(RootNode(s), \addToTail);

~delays = Synth(\delay33, target:~delayGroup);


~delays.set(\delays, [

   0.04575, 0.04401, 0.03494, 0.03823, 0.04543, 0.05508, 0.05230, 0.04318, 0.03249, 0.02223,

   0.02609, 0.02773, 0.03674, 0.05097, 0.06656, 0.06474, 0.05689, 0.04516, 0.03729, 0.02776,

   0.01307, 0.01297, 0.01826, 0.03279, 0.04594, 0.05511, 0.07611, 0.07111, 0.05527, 0.05343,

   0.00000, 0.00499, 0.07195

]);

 

// synth to produce an exponentially decaying pink noise burst

 

SynthDef(\pinkdecay, { arg out, t60, amp;

   var dec = Decay.ar(Impulse.ar(0), t60);

   DetectSilence.ar(dec, doneAction:2);

   OffsetOut.ar(out, PinkNoise.ar(amp) * dec);

}).add;

 

// define and play pulse

 

Pdef(\loop,

   Pbind(

      \instrument, \pinkdecay,

      \out, PavoidN((0..32), inf, 30), // ◊ random generator with repetition control

      \dur, 1/6,

      \amp, -3.0.dbamp,

      \t60, 0.3

)).play;

// Synth version


// Zeitraum for the György Ligeti Hall at ◊ MUMUTH in Graz/Austria

// formulated in ◊ SuperCollider 


// synth with 33 delays, one for each speaker

 

SynthDef(\delay33, { arg out;

   var delays = Control.names([\delays]).kr(0!33);

   ReplaceOut.ar(out, DelayC.ar(In.ar(0, 33), 1, delays))

}).add;

 

// setup the delay synth and set precomputed delay times in s

 

~delayGroup = Group.new(RootNode(s), \addToTail);

~delays = Synth(\delay33, target:~delayGroup);


~delays.set(\delays, [

   0.04575, 0.04401, 0.03494, 0.03823, 0.04543, 0.05508, 0.05230, 0.04318, 0.03249, 0.02223,

   0.02609, 0.02773, 0.03674, 0.05097, 0.06656, 0.06474, 0.05689, 0.04516, 0.03729, 0.02776,

   0.01307, 0.01297, 0.01826, 0.03279, 0.04594, 0.05511, 0.07611, 0.07111, 0.05527, 0.05343,

   0.00000, 0.00499, 0.07195

]);

 

// synth to produce an exponentially decaying pink noise bursts and their distribution

// over the speakers (sequence precomputed for 10800 events, i.e. 30 minutes)

 

SynthDef(\zeitraum, { arg amp = 1;

   var trig = Impulse.ar(6);

   var chan = Dseq(PavoidN((0..32), inf33 - 3).asStream.nextN(10800), inf);

   PanAz.ar(33, trig, Demand.ar(trig, 0, chan) / 33).do{|t, i|

      Out.ar(i, PinkNoise.ar(amp) * Decay.ar(t, 0.3))};

}).load;

 

// start synth playing the pulse (speaker sequence loops after 30 minutes)


Synth(\zeitraum);