// 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), inf, 33 - 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);