Tune Raspberry Pi for audio
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env sh | |
# Install utils for cpu freq | |
sudo apt-get install cpufrequtils | |
sudo cpufreq-set -r -g performance | |
sudo echo "ENABLE="true" | |
GOVERNOR="performance" | |
MAX_SPEED="0" | |
MIN_SPEED="0" " | sudo tee -a /etc/default/cpufrequtils | |
# Install other useful tools | |
sudo apt-get install htop git perl vim | |
# Set CPU governor | |
sudo sed -i 's/exit 0/sudo cpufreq-set -r -g performance/g' /etc/rc.local | |
sudo echo "exit 0" | sudo tee -a /etc/rc.local | |
# Set realtime priority and memlock | |
sudo echo " | |
@audio nice -15 | |
@audio - rtprio 90 # maximum realtime priority | |
@audio - memlock unlimited # maximum locked-in-memory address space (KB) | |
" | sudo tee -a /etc/security/limits.conf | |
# Set swappiness | |
# This setting changes the so-called swappiness of your system, | |
# or in other words, the moment when your system starts to use its swap partition. | |
sudo echo " | |
vm.swappiness = 10 | |
fs.inotify.max_user_watches = 524288 | |
" | sudo tee /etc/sysctl.conf |
Hi Eric
Thanks for your message. It seems like you have done everything correctly. The only missing part of the puzzle is to tell the SuperCollider server to boot with the amount of channels you need. By default it will be set to 2 but you can set it to 8 or any arbitrary number and then use a multi channel panning UGEN by changing the test file's code to something like:
(
// Change number of hardware channels
~numChannels = 8;
s.options.numOutputBusChannels_(~numChannels);
// Boot server and play sound
s.waitForBoot{
play{ PanAz.ar(~numChannels, PinkNoise.ar(0.5), LFSaw.kr(0.01)) }
}
)
Hope that helps!
Hi Mads,
That worked, thanks so much!
That shoulda been obvious I suppose, I was slowly getting there... ha
cheers,
-eric
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Mads,
First off, thanks so much for your guide to setting up a RPI 4 for audio work. I'm working on a multichannel installation, and it's been super helpful so far. I've just run into one issue, and I was hoping you could point me in the right direction...
I'm attempting to run supercollider headless with a cheap 8 channel usb audio interface, but I can only get sound out of channels 0 & 1, nothing from 2-7. I've verified that all 8 channels are recognized by the Pi using
speaker-test -t pink -c8 -Dhw:1,0
but adding a-o8
flag to~/.jackdrc
has no effect when I run thetest.scd
program that you have in the blog post. The JackDriver is still booting with 2 ins and 2 outs even though, as you can see below, the call to create the ALSA driver is with 0 ins (I guess that's the default b/c I didn't change it in the file) and 8 outs.I'm guessing that system:playback_3-8 just don't exist by default; do you know what file I have to edit to change the configuration? Whenever I've used Jack in the past, I setup the number of channels directly using qjackctl, but that doesn't seem to be an option with the headless operation. I've been searching all day and can't seem to sort this out, so any help you could provide would be greatly appreciated! Thanks.
EDIT:
jack_lsp
returns the following where the number of system playback outputs is determined by the-o8
flag:and I can connect to additional outputs using
pi@raspberrypi:~ $ jack_connect SuperCollider:out_2 system:playback_3
, but I'm not sure how to edit the default number of output busses created by supercollider in headless operation mode...cheers,
-eric