Music Software: SuperCollider


#1

Goal: Install and use SuperCollider to make music.

Difficulty: Easy

Required Hardware: #List all needed hardware things & components

  • Pisound
  • Raspberry Pi

Background

SuperCollider is a platform for audio synthesis and algorithmic composition. it is open source, and very mature.

You have two choices… install version 3.7.0 which is in the package repos. This is easy, but a little older. Or compile it yourself, but that’s a bit harder and will take an hour or more.

Just install it…

Install with

sudo apt-get install --no-install-recommends supercollider

Note: This is a much smaller install than what the pisound-config installs.

You will get a dialog box with a lot of text, asking you, at the end “Enable realtime process priority?”. Choose

Yes

Set up

SuperCollider talks to jackd, which in turn talks to alsa. You can let SuperCollider handle starting and stopping jackd for you, but you need to set it up.

Edit (vi or emacs or nano) the file ~/.jackdrc to have the following single line:

/usr/bin/jackd -R -P 75 -d alsa -d hw:pisound -r 48000 -n 2 -p 64 -s

Run it

From a shell in a desktop on the Pi:

scide

Once running, you need to boot a server: From the Language menu, choose Boot Server. You’ll see some text which should let you know that jackd is running with ALSA.

Then type some SuperCollider code into the big, Untitled window, select it, and choose Language menu > Evalutate Selection, Line, or Region. (Or type [CTRL+Return])

Try this lovely snippet from Fredrik Olofsson:

play{q=SinOsc;a={|x…y|perform(x,\ar,y)};Splay ar:a.(CombN,c=a.(q,0,a.(Blip,1/f=(1…8),888/a.(q,1/88,0,2,3).ceila.(Duty,a.(q,1/8)>0+2*1/8,0,Dseq([8,88,888],inf)))188),1,8-f/8,8)/8+a.(CombN,a.(GVerb,a.(BPF,8e=c.mean,88,1/8),88),1,1)+a.(q,88,0,a.(q,0,e)<0/88)}// #SuperCollider

He’s @redFrik on twitter, and he posts many great short compositions you can play in SuperCollider.

To stop, Language > Stop. (or just [CTRL+.].)

If you want to test input effects processing, try this:

{
    var fast = SinOsc.kr(12) * 2;      // +/- 2 semitones at 12Hz
    var slow = SinOsc.kr(0.2) * 24;    // +/- 2 octaves at 1/5Hz
    var center = 60;                   // around middle C
    var filtFreq = (fast + slow + center).midicps;

    var input = SoundIn.ar();
    var resonated = Resonz.ar(input, filtFreq, bwr:0.15);
    var reverbed = FreeVerb.ar(resonated, room:0.8);

    reverbed   // last thing returned is played out
}.play

Plug your guitar, or mic, or synth into the Pisound input, and headphones or your stereo into the output.


Start Here: Tutorials & Recipes Index
Headless Pi: Start to Finish