Setting up for a 8.4 Sound System

Hello dear colliders,

I am expected to make a live-performance on an 8.4 sound system, but I have never played on such a system. The composition I am going to play has a main synth as follows which uses a GrainBuf with 4 channels. The grains are located using a LFNoise1, and I want to reset my synth to be spread around the 8.4. system in the concert. Can any one please give me a hint on how is an 8.4 handled, and is this done as easy as setting the numberChannel parameter to 8 (or 12?), and the rest is done by GrainBuf’s PanAZ? Any helps are appreciated!

(
SynthDef(\inst, {
	arg gate=1;
    var snd, trigFreq, trig, rateSeq, grainSize, sndEnv, rateDseqArrs, rateDrandArrs;
	trigFreq = LFNoise2.kr(1).range(3, 24);
	trig = Impulse.ar(trigFreq);
	rateDseqArrs = [(1..5).mirror1, (1..4).mirror1, (1..3).mirror1, (1..2).mirror1, (1..1).mirror1];
	rateDrandArrs = [(4..10), (4..9), (4..8), (4..7), (4..6), (4..5), (4..4)];
    rateSeq = Drand([
		Dseq(
			Select.kr(\rateDseqArrIdxKnob1.kr(0), rateDseqArrs) * \rateFactDseq.kr(0.3), \rateDseqNum.kr(2)),
		Drand(
			// 4..10
			Select.kr(\rateDrandArrIdxKnob2.kr(0), rateDrandArrs) * \rateFactDrand.kr(0.2), \rateDrandNum.kr(8))
	], inf);
	grainSize = ~bufDur * FSinOsc.kr(8).exprange(0.01, 0.5);
	sndEnv = EnvGen.kr(envelope: Env.cutoff, gate: gate, doneAction: Done.freeSelf);
	snd = GrainBuf.ar(
		numChannels: 4,
		trigger: trig,
		dur: grainSize,
		sndbuf: b,
		rate: Demand.ar(trig, 0, rateSeq),
		// Nach unten wird langsamer zurĂĽckspringen zum Anfang
		pos: LFNoise1.kr(trigFreq).range(\pos1.kr(0), \pos2.kr(0)),
		interp: 4,
		pan: LFNoise2.kr(trigFreq),
		envbufnum: z
	);
	Out.ar(0, snd * sndEnv)
}).add
)

First step would be to make sure the server is setup correctly with the right number of outputs.

Since you don’t know what channel number each speaker has, I’d do something like this…

Write you music assuming this channel ordering (or something else if you like), going clockwise from the left speaker.
[left, centre, right, right mid, ... left mid, sub1, sub2, sub3, sub4];

This is easy because things like GrainBuf already do the circular bit, and then you can decide what goes to the subs seperately.

Then write a mapping from channel name to number so you can change it to match the venue’s during sound check.

// This just repeats the above mapping
~speakerOrdering = (
  \left: 0,
  \leftMid: 1,
  \centre: 2,
  ...,
  \sub1: 15,
  ...
);

Then have one main output synth which you send all sound to using a bus, which unmaps from your circular mapping to the venue’s.

[\left, \leftMid, \centre..., \sub1, \sub2].do { |name, i|
    Out.ar(~speakerOrdering[name], sound[i])
};
1 Like

@amt It depends on how you want to handle those channels, perhaps.
Panning is only panning you know.
Are you going to send same signal with loud speakers to subwoofers?
Pardon me if I misunderstood the 8.4 system.

I also need to track the frequencies coming out of my synth, to decide whether they go to a subwoofer or a loudspeaker, right?! I think that’s what you meant with “circular bit”, but I don’t know what that is? Thanks for your help! :slight_smile: