Hi @oobobbypinoo,
It takes a while to click as there’s a couple of things to change to configure this.
Starting from the example: https://github.com/musikinformatik/SuperDirt/blob/develop/superdirt_startup.scd
Lets assume you want eight outputs, each one stereo (two channels each).
That’s 16 channels total, so s.options.numOutputBusChannels
needs to be 16.
Each output is stereo, so leave this line as-is ~dirt = SuperDirt(2, s);
. You might be tempted to change it, but this is configuring the number of channels per output, not the total number or channels or the number of outputs.
The final line to change is this one:
~dirt.start(57120, [0, 0]);
The default [0, 0]
means two ‘orbits’, both sending to channels with no offset. I.e. both orbits go to the first two channels. You probably want eight orbits, each one offset so that they go to different pairs of channels. I.e.:
~dirt.start(57120, [0, 2, 4, 6, 8, 10, 12, 14]);
That’s it! You can test in tidal with e.g.:
d1 $ slow 4 $ orbit "0 1 2 3 4 5 6 7" # n "0 1 2 3 4 5 6 7" # sound "alphabet"
The full superdirt startup code for eight stereo outputs is shown below.
(
// configure the sound server: here you could add hardware specific options
// see http://doc.sccode.org/Classes/ServerOptions.html
s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
s.options.memSize = 8192 * 16; // increase this if you get "alloc failed" messages
s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
s.options.numOutputBusChannels = 16; // set this to your hardware output channel size, if necessary
s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
// boot the server and start SuperDirt
s.waitForBoot {
~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
~dirt.loadSoundFiles; // load samples (path containing a wildcard can be passed in)
// for example: ~dirt.loadSoundFiles("/Users/myUserName/Dirt/samples/*");
// s.sync; // optionally: wait for samples to be read
~dirt.start(57120, [0, 2, 4, 6, 8, 10, 12, 14]); // start listening on port 57120, create two busses each sending audio to channel 0
// optional, needed for the sclang tests only:
(
~d1 = ~dirt.orbits[0]; // one orbit
~d2 = ~dirt.orbits[1];
);
};
s.latency = 0.3; // increase this if you get "late" messages
);