Setting up SuperCollider on Pi|setting-up-supercollider-on-pi
- A Raspberry Pi 2 (the one with the quad core).
- Computer with connection to local network router.
- Power cable, HDMI cable, keyboard, monitor, ethernet cable, router.
- Plug everything in, put Pi on the network via ethernet. Do not plug the Pi in until you have burned NOOBs and inserted the SD card into the Pi.
Prep and Basic installation of dependencies
- Burn NOOBs lite onto micro SD card. Set up Pi, use screen and keyboard to configure basic system.
- Configure basic system; use
ifconfigto discover network settings. 'enable ssh, set timezone, etc, finish and reboot.'
ssh pi@XXX.XXX.XXX.XXXinto device using ip address from previous step,
sudo adduser USERNAME,
sudo visudo, copy admin line and change andmin to your USERNAME. Log back in as you.
sudo apt-get update
sudo apt-get upgrade # this might take a while
sudo apt-get autoremove
sudo apt-get install cmake libasound2-dev libsamplerate0-dev libsndfile1-dev libavahi-client-dev libicu-dev libreadline-dev libfftw3-dev libxt-dev libcwiid1 libcwiid-dev subversion libqt4-dev libqtwebkit-dev
Note: I installed
libjack-jackd2-dev according to 2. For the remainder, I am following Sam Aaron's 2012 [tutorial] 1, adding some emphasis to any tweaks that I made.
This is NOT the jack that you want:
sudo apt-get install jackd2
You might do OK with whatever version of supercollider comes out of
sudo apt-get install supercollider, but I'm downloading sources and compiling.
Compilation is based on [Charles Céleste Hutchins' article] 2 which is quoted in its entirety with notes here:
tar -xvf SuperCollider-3.6.6-Source.tar.bz2- this is very stable build, as far as I can tell
mkdir build && cd build
sudo dd if=/dev/zero of=/swapfile bs=1MB count=512 # create a temporary swap file
sudo mkswap /swapfile
sudo swapon /swapfile
CC="gcc" CXX="g++" cmake -L -DCMAKE_BUILD_TYPE="Release" -DBUILD_TESTING=OFF -DSSE=OFF -DSSE2=OFF -DSUPERNOVA=OFF -DNOVA_SIMD=ON -DNATIVE=OFF -DSC_ED=OFF -DSC_EL=OFF -DCMAKE_C_FLAGS="-march=armv6 -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp" -DCMAKE_CXX_FLAGS="-march=armv6 -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp" .. # should add ‘-ffast-math -O3’ here but then gcc4.6.3 fails
make # this ~~takes hours~~ took about an hour on the quad-core device
sudo make install
sudo rm -r SuperCollider-Source
sudo swapoff /swapfile
sudo rm /swapfile
echo "export SC_JACK_DEFAULT_INPUTS=\"system\"" >> ~/.bashrc
echo "export SC_JACK_DEFAULT_OUTPUTS=\"system\"" >> ~/.bashrc
These next steps were critical:
sudo dpkg-reconfigure -p high jackd2
The last "2" is important, . Then choose yes, you want to lock down memory and have rtprio scheduling privilege. This will add those lines automatically. tms: WE ARE ACTUALLY USING JACK 1.9.9, according to [Sam Aaron's tutorial] 1.
Now, you have to make sure you are in the audio group, so do a:
sudo adduser XXXX audio
supposing that XXXX is your user name.
Now, you have to
Now, check that you have said privileges:
ulimit -r -l
pi@raspberrypi ~ $ ulimit -r -l
After you log in again, should be exactly
real-time priority (-r) 95
max locked memory (kbytes, -l) unlimited
If it is any other value---the default is 0 and 5(?)---stop and check your earlier work.
: http://sam.aaron.name/2012/11/02/supercollider-on-pi.html "Sam Aaron's guide."
: http://celesteh.blogspot.com/2014/04/building-supercollider-36-on-raspberry.html "Charles Céleste Hutchins' guide to compilation."
: http://ubuntuforums.org/showthread.php?t=1637399 these steps were important!"
: http://cagewebdev.com/index.php/raspberry-pi-getting-audio-working/ "some basic troubleshooting"
: http://kitefishlabs.com/ghost/23/ "Later set of configuration instructions."