Skip to content

Add samples to Tidal

Adding and using your own custom samples in Tidal Cycles is relatively easy. You don’t actually add samples to Tidal, but instead reference them into the SuperDirt startup file inside of SuperCollider.

The default sample library

Installing SuperDirt will also download a library of audio samples. This library is known as the default library, the one that everybody starts with.

The default samples library is full of surprises. You will have a lot of fun exploring it, but at some point, you might want to use new audio samples.

Finding samples

If you don’t have custom samples but would like to find some, this is the section for you.

You’ll find tons of websites selling audio samples for music production, ranging from the less expensive to the most priciest thing you’ve ever seen. However, there are good ways to find free and high-quality audio samples for Tidal.

Here is a small list of websites for free samples you could check:

Folder structure

Once you have your samples, you need to organize them in a specific way. In order for SuperDirt to recognize the sound names that Tidal sends, your samples folder (e.g. mySamples) will need to have sub-folders for each sound name, and each sound name folder will need to have one or more sample files:

  • Directorysamples
    • DirectorymyBass
      • bass1.wav
      • bass2.wav
      • bass3.wav
    • DirectorymyHits
      • hit1.wav
      • hit2.wav
      • hit3.wav
    • DirectorymyField
      • bridge.wav
      • mountains1.wav
      • mountains2.wav
      • plains.wav
      • river.wav

Given the folder structure above, after finishing this guide you will be able to use the myBass, myHitsandmyField` sounds in your Tidal code. For example:

once $ sound "myField:3" --will play 'plains.wav'

Reference the samples in SuperDirt

In the SuperDirt startup file, you’ll find a line for loading the default samples: dirt.loadSoundFiles;. Below it, you need to add a line with the ~dirt.loadSoundFiles() function. Inside the parentheses will go the path of your custom samples folder, followed by /*, to refer to its contents. Were the path to be /Users/myUserName/mySamples, the code should look like this:

// there will be more code above
~dirt.loadSoundFiles;
~dirt.loadSoundFiles("/Users/myUserName/mySamples/*")
// there will also be more code below

You can check whether everything is correct by placing the cursor anywhere inside that code block and then pressing Ctrl+Enter (or Command+Enter on MacOS) to evaluate the whole block. In the SuperCollider Post window it will appear information about the boot of the SuperCollider server, after which it will inform about the loading of the sound names (there called sample banks). You should see a number after each one, telling how many samples were loaded for the name.

Note that you can import more than one custom folder by using more import functions:

// there will be more code above
~dirt.loadSoundFiles;
~dirt.loadSoundFiles("/Users/myUserName/mySamples/*")
~dirt.loadSoundFiles("/Users/myUserName/sounds/*");
~dirt.loadSoundFiles("/Users/myUserName/recordings/chaska-sessions/*");
~dirt.loadSoundFiles("/Users/myUserName/recordings/super-duper-experiments/*");
// there will also be more code below