Week 1 lesson 2 - Loading sample packs

Ok so in some parts of the world, it's already 11th April, so the course has officially started! We'd better get on with the next lesson - how to add extra sounds. It's important to do that now, as I've made a pack of extra sound samples for us to use during the course.

Here's the tidal club sample pack for you to download: https://slab.org/tmp/samples-extra.zip

First, save and extract the samples somewhere:

  • Make a folder somewhere for the course. Maybe call it "tidalclub" on your desktop, or documents folder, or wherever you like to keep your things.
  • Download the above samples-extra.zip file, and extract the contents into that folder. (How you do this depends on the operating system you're using)

Once you've got the samples saved, here's a video that steps through the process of loading them in supercollider:

Or here's the steps in brief:

  • Open SuperCollider, and open the example startup file via: menu -> file -> open user support directory -> downloaded-quarks -> SuperDirt -> superdirt_startup.scd
  • Copy the contents to your clipboard
  • Open your supercollider startup file via: menu -> file -> edit startup file
  • Paste the contents into there. (Don't have SuperDirt.startup in there as well)
  • You'll see a line with ~dirt.loadSoundFiles;, which loads the default samples.
  • Keep that line, creating a new line underneath that looks like this:
~dirt.loadSoundFiles("/home/alex/Documents/tidalclub/samples-extra/*");
  • You'll need to change the above so that it contains the path to the samples-extra folder on your system.
  • Don't forget to have /* at the end of the path, and a semicolon ; at the end of the line.
  • Save the file (File -> Save)

With all that done, you should be able to restart supercollider (you can do that via: menu -> Language -> Recompile class library, or just by closing and reopening supercollider), and have superdirt automatically start up inside SuperDirt, with all the new samples.

I hope that's clear, but please do let me know if you get stuck!

Here's the contents of samples-extra:

Next lesson:

25 Likes

Worked for me. Maybe you could add, in the steps description, that you have to save the edited startup file before restarting supercollider / hitting recompile. Probably pretty obvious, but still :slight_smile:
I was wondering, why this procedure, instead of simply dropping the folders in the Dirt-Samples folder ? Just so that it is easier to remove the samples afterwards, for example, and keeping things tidy ? Or is there some other advantage to it ? (at least it's anyway an occasion to get familiar with the extended startup procedure...)

2 Likes

Ah yes, I’ve added that step thanks!

Dropping the contents of samples-extra in Dirt-Samples would indeed work too, but I thought it would be good to show how to add a separate folder. Once you add things to Dirt-Samples, supercollider won’t be able to update it any more if new samples get added. I think it’s also generally neater to keep your samples separate, once you get your head around it.

5 Likes

Hey Alex,

I’m using a macOS Sierra when I put

~dirt.loadSoundFiles("/Users/ME/Desktop/Tidal/samples-extra/*");

into startup.scd

and recompile class Library I’m getting the following in supercollider

*** Welcome to SuperCollider 3.10.2. *** For help press Cmd-D.
Booting server 'localhost' on address 127.0.0.1:57110.
Found 0 LADSPA plugins
Number of Devices: 4
   0 : "Built-in Microph"
   1 : "Built-in Output"
   2 : "Soundflower (2ch)"
   3 : "Soundflower (64ch)"

"Built-in Microph" Input Device
   Streams: 1
      0  channels 2

"Built-in Output" Output Device
   Streams: 1
      0  channels 2

SC_AudioDriver: sample rate = 44100.000000, driver's block size = 512
Exception in World_OpenUDP: bind: Address already in use
Server 'localhost' exited with exit code 1.

Before adding the samples it had been working fine,

Any suggestions would be great!

This means that there's a phantom copy of supercollider running wild.. You can force quit it via Servers -> Kill all servers. Then Language -> Recompile class library to restart things.

1 Like

Thanks!

OK, did as you suggested and it seems to have worked…but…getting a few different
WARNING: SynthDef spectral-delay16 too big for sending. Retrying via synthdef file messages

and then

loading 20 sample banks:
break (33) bsbass (9) bsguitar (19) bshihat (3) bskick (9) bsnoise (22) bsperc (7) bssnare (8) bsvocals (13) clap (8) claus (16) cpu (23) cpu2 (29) dsynth (3) foley (287) hi (8) kick (21) lo (8) rash (73) snare (90) 
... file reading complete. Required 225 MB of memory.


    SuperDirt: listening to Tidal on port 57120
    late 1.113486468
    Buffer UGen: no buffer data

When I run

d1 $ sound "cpu:2"

in atom, I’m not getting sound - no error message either though.

Hm, that happens to me sometimes when tidal is sending a pattern while superdirt is restarting… Try a hush in tidal before restarting superdirt.

By the way this warning is not a problem and can be ignored:

1 Like

Sorry about this Alex!

Tried a hush, no luck

opened up a new .tidal file in atom

tried

d1 $ sound "cpu:2"

got

Buffer UGen: no buffer data

then

d1 $ sound "bd"

but got

no synth or sample named 'bd' could be found.
module 'sound': instrument not found: nil

Hm, did you restart supercollider / superdirt?

If ‘bd’ isn’t loaded, that indicated that you removed/replaced the ~dirt.loadSoundFiles; line, that loads the ‘default’ samples. If you put that back in your startup file (above the new one for samples-extra) and restart supercollider, that should return.

Doh - think I replaced the default samples with the new ones instead of adding:

s.waitForBoot {
	~dirt = SuperDirt(16, s); // two output channels, increase if you want to pan across more channels
	~dirt.loadSoundFiles("/Users/Me/Desktop/Tidal/samples-extra/*");  // 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, 0]);   // start listening on port 57120, create two busses each sending audio to channel 0

Edit just saw this * You’ll see a line with ~dirt.loadSoundFiles; , which loads the default samples.

  • Keep that line, creating a new line underneath that looks like this:
    :man_facepalming:

Ended up repasting superdirt_startup.scd into startup.scd.

Working fine now :slight_smile:

1 Like

It can be useful if you want to keep your personal sound library separated from the default tidal installation e.g. on a USB stick, separate partition etc. (that's something I do a lot since I frequently format my drive, reinstall the OS and whatnot)

Or maybe you want to make a GitHub repo for your tidal work: basically just create a folder (e.g. my-tidal-folder) where you'll keep all your samples, code snippets, notes, songs etc. and put it on a GitHub repo. This way you don't risk loosing anything and your material is always available and up to date, even on multiple machines; all you have to do is download the folder and set up the path as shown in the video. Here's mine as an example. I've also added the BootTidal.hs and startup.csd so I don't lose them :slight_smile:

3 Likes

CPU Electro samples! I’ve been loving their releases, looking forward to exploring these samples further. One note from my install process: in Windows it was necessary for me to include the drive letter in that path.

4 Likes

Yes, kindly contributed by cpu records boss Chris Smith!

2 Likes

Hey! It worked for me on the Mac (Catalina) as well. The only hiccup was that somehow the file was read-only through superCollider but I could edit it through the terminal.

I have a doubt regarding the bigger loops in the break folder. When I play them in tidal they get all mushy and cramped. How can I play them at their normal speed?

TIA.

Hi @indiantinker, working with long samples is a fairly large topic that we will get to later in the course.

The problem you’re hearing is that in tidal, you’re triggering the sound every cycle, but the break sounds last longer than a cycle. There are a few ways around this, here’s one:

d1 $ loopAt 2 $ chop 32 $ sound "break"

Adjust the loopAt number to spread the break over that number of cycles. You can also adjust the tempo with e.g. setcps 0.6, trying different numbers to hear the effect.

As I say there are a lot of different approaches to this, there is fun to come!

5 Likes

Thanks! Also in Windows I had to change the backslash \ to forward slash / if copying the path from the File Explorer or Command Line.

5 Likes

The superdirt_startup.scd file is different toy yours Alex

Is there an issue with my downloaded version? or should I simply edit the file to include the "s.reboot{ ... }" witht he necesary indents?

Thanks

Tom

Ah, I have the latest development version which I see Julian Rohrhuber (the creator of SuperDirt) has changed a bit recently. I don’t think you’ll see any difference with your version, I don’t understand it fully but think this change is just a small tweak. However if you want the latest version you can copy and paste it from here: https://github.com/musikinformatik/SuperDirt/blob/develop/superdirt_startup.scd

Ah I see!

I have changed it but it doesn't make much of a difference.

I have also noticed that when I recompile the class language it does not instantly import the samples from the folder, I have to run the script to load in the samples. This appears to be different to how yours load in the video, am I missing something here as well?

Cheers
for reference this is what I am running