The very firsts step to SC3

SuperCollider is a powerful programming environment for live music making. It is a textual programming language, combined with a state-of-art sound engine. The basic architecture is based on client-server model, which means that you launch two separate applications, the language (sclang, client) and the sound synthesis engine (scsynth, server). The online help is available at sccode, and the mailing list at nabble.

How to start

In order to make some sound, the first step is to launch scsynth. Lowercase letter s is reserved for the localhost server. In order to start the sound synthesis engine we have to boot the server.


s.boot; // equivalent to Server.local.boot;

You should get something like this on the Post Window.


booting 57110
localhost
Found 0 LADSPA plugins
Number of Devices: 3
   0 : "Built-in Microph"
   1 : "Built-in Output"
   2 : "Aggregate Device"

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

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

SC_AudioDriver: sample rate = 48000.000000, driver's block size = 512
SuperCollider 3 server ready.
Receiving notification messages from server localhost

Now SC3 is ready to make some noise.

Some useful GUI are the followings:


s.meter;
s.volume.gui;
FreqScope.new;

Basic keyboard shortcut for SC3 IDE

Ctrl+RET : execute code block (RET stands for Return/Enter)

Shift+RET : execute code block

Ctrl+. : stop sound (Ctrl + dot)

Shift+Ctrl+L : Recompile class library

See and hear some sounds

If the output sound is not stereo, SC3 sends the output to the left channel.


{ LFSaw.ar(20, 0, 0.5) }.plot(1)

{ LFSaw.ar(20, 0, LFSaw.kr(1)) }.plot(1)

{ LFSaw.ar(20 * Line.kr(10,1,1,1,0,2), 0, LFSaw.kr(1)) }.plot(1)

{ LFSaw.ar(20 * Line.kr(10,1,1,1,0,2), 0, LFSaw.kr(1)) }.play

Using Ndef


// execute sequentially
Ndef('x', { LFSaw.ar(200 + (100 * LFSaw.kr(9)), LFSaw.kr(1)) }).play
//
Ndef('x', { LFSaw.ar(200 + (100 * LFSaw.kr(19)), LFSaw.kr(1)) }).play
//
Ndef('x', { LFSaw.ar(200 + (100 * LFSaw.kr(19)), LFSaw.kr(11)) }).play