Frequently Asked Questions (and answers)

Lets say you wanted to make a multi-track recording, with different patterns playing at the same time, but recorded separately.. Or wanted to route the audio from some patterns into external effects processor. How is this possible?

Tidal’s audio engine is (most often) SuperDirt, and the key to routing audio channels is understanding how to configure and use orbits. You can think of each orbit as an audio output, with its own set of global effects (by default, reverb and delay).

Have a look at SuperDirt’s documentation, in particular setup with options bit.  You’ll want to paste the setup code into the supercollider editor window. If you save it in your supercollider startup file it will automatically run when you open supercollider – you can find that file via the menus.

There are probably only two bits that you will want to change in the setup code. If you wanted six stereo outputs, that would require 12 channels in total, so you would set the number of output bus channels accordingly, i.e.:

s.options.numOutputBusChannels = 12;

You assign the orbits to separate stereo channels by offsetting each one, like this:

~dirt.start(57120, [0, 2, 4, 6, 8, 10]);

You might also be tempted to change the number in this line:

~dirt = SuperDirt(2, s);

However if you want to work in stereo, you should keep this number to 2, i.e. the number of channels per orbit.

Then to send a tidal pattern to a particular orbit, you just use a parameter, e.g. d1 $ sound "bd sn" # orbit 2 to send it to the third one (counting from 0). You’re now free to route the audio to a DAW for e.g. effects processing or recording, or record all the channels straight from supercollider into a single multichannel file. Have a look around the SuperDirt hacks folder for more fun with orbits.

  • The show at the Mattress Factory was using a special 8 channel sound system. So my audio output from Ableton Live to 8 channels of outputs on my audio interface and then to the speaker system. I was able to use Ableton Live to program audio pans on the 8 channel system, or direct certain sounds to certain speakers. @CharStiles received a copy of my master audio output, which controlled parameters in her live coded visuals. She specifically frequency binned my audio input to get the gain for a few frequency bands and use these to make her visuals audio-reactive, as well as the MIDI note and duration information that I sent her from every track s lead synth line. She can tell you more about her own live coding visual process and how she unpacked and used my audio and MIDI signals.” -Danielle

  • Great explanation! Could you point me to any resources that explain how to route a separated channel to another application from sc?

  • Comment on this FAQ

    Your email address will not be published. Required fields are marked *

    To use custom samples with TidalCycles and SuperDirt the samples must be loaded into SuperDirt.  To do this, enter the following into the SuperDirt IDE


    Be sure to include the * as a wildcard so that all sub-directories of samples  in the directory are loaded.

    Position the cursor in the line and press Shift + Enter to evaluate the code.  You should see something like

    loading 52 sample banks

    along with the names of any folders within the directory and the number of samples loaded for each sample directory.

    Now the samples can be referenced by directory name and used in TidalCycles.

  • Is there any more to what can and can’t be indexed? I have a folder with an mp3 that is indexed in the list but seems to return 0 samples.

  • Comment on this FAQ

    Your email address will not be published. Required fields are marked *

    There are a few different ways to control the duration of a sample.

    # begin "0.5"
    to change the start point of sample playback.  The value is a percentage of the length of the sample.

    # end "0.8"
    can be used to change the end point of sample playback.

    # legato "1"
    Legato can be used to shorten or extend the space the sample takes up.  A value of 1 means that the sample will take up it’s natural slot in the pattern and be cut off at the end of that slot.  A value less than 1 will shorten the sample and a value greater than 1 will allow the sample to take up more space in the pattern.

    Legato can also be used to control the length of synth notes.

    Comment on this FAQ

    Your email address will not be published. Required fields are marked *

    Reverb (room/size) and delay (delay/delayt/delayfb) are both ‘global’ effects. So if you had two patterns running at the same time, one without reverb and one with:

    d1 $ sound "bd(3,8)"
    d2 $ sound "arpy*4" # room 0.9 # size 0.9

    Then they’d battle each other switching the reverb on and off.

    The answer is to put them in different ‘orbits’, as each orbit has its own set of global effects. By default, superdirt has two orbits enabled, with ‘0’ being the default one. So just put the second pattern in orbit ‘1’:

    d1 $ sound "bd(3,8)"
    d2 $ sound "arpy*4" # room 0.9 # size 0.9 # orbit 1

    Now the first pattern should now be ‘dry’, and the second as reverberant as anything.

    Comment on this FAQ

    Your email address will not be published. Required fields are marked *

    Load More