As I had a nice SSD crash (everything disapeared in the electronic limbo) I had to reinstall on a new SSD and moved to Ubuntu 17.04
I did not had any specific issue to compile sonic-pi.
But when I run the resulted sonic-pi, I’m stucked on the splash screen.
In the scsynth.log, I have the following:
# Starting SuperCollider 2017-10-19 15:04:35
ERROR: Invalid option -B
-v print the supercollider version and exit
-u <udp-port-number> a port number 0-65535
-t <tcp-port-number> a port number 0-65535
-c <number-of-control-bus-channels> (default 4096)
-a <number-of-audio-bus-channels> (default 128)
-i <number-of-input-bus-channels> (default 8)
-o <number-of-output-bus-channels> (default 8)
-z <block-size> (default 64)
-Z <hardware-buffer-size> (default 0)
-S <hardware-sample-rate> (default 0)
-b <number-of-sample-buffers> (default 1024)
-n <max-number-of-nodes> (default 1024)
-d <max-number-of-synth-defs> (default 1024)
-m <real-time-memory-size> (default 8192)
-w <number-of-wire-buffers> (default 64)
-r <number-of-random-seeds> (default 64)
-D <load synthdefs? 1 or 0> (default 1)
-R <publish to Rendezvous? 1 or 0> (default 1)
-l <max-logins> (default 64)
maximum number of named return addresses stored
also maximum number of tcp connections accepted
When using TCP, the session password must be the first command sent.
The default is no password.
UDP ports never require passwords, so for security use TCP.
-N <cmd-filename> <input-filename> <output-filename> <sample-rate> <header-format> <sample-format>
0 is normal behaviour
-1 suppresses informational messages
-2 suppresses informational and many error messages
-U <ugen-plugins-path> a colon-separated list of paths
if -U is specified, the standard paths are NOT searched for plugins.
if specified, prevents file-accessing OSC commands from
accessing files outside <restricted-path>.
To quit, send a 'quit' command via UDP or TCP, or press ctrl-C.
I guess scsynth does not start and blocks sonic-pi start.
maybe there’s a minimal version of scsynth required for sonic-pi?
I’m currently using scsynth v3.7.0 as proposed by Ubuntu 17.04
unfortunately I don’t have the resources to officially support Linux beyond Raspbian. However, I’m pretty sure the issue you’re having here is that your SuperCollider is a little too old. Could you try with v3.8?
I’m going to try to fix it if I can but what I don’t get is that 2 weeks ago, everything was fine.
How can I find the moment where the version of supercollider required moved?
The log seems to say it lacks a "-B option. Is it an option added to the start script recently?
Are you using the v3.0.1 tag in git or HEAD from master? If you want reliable behaviour I would always recommend using a git tag
you’re right, I was only using master.
developper skills and tips must be used even out of corporate work
I’ll do my best to find and fix
I keep using this thread, not to bother @samaaron but to keep a public track of my efforts if someone needs later.
I’ve been slowed by personnal issues but now I’m bacl ontracks I hope.
First, I confirm there’s an issue linked to the version of SupperCollider.
As I said, my Ubuntu 17.04 has a 3.7.0 version and Sonic-pi use the -B option that appeared with 3.8.
See release note from SuperCollider.
So I’m searching a way to have scsynth 3.8 on my Ubuntu
Following this thread, thank you for your updates TitiMoby. It will be very worth my while to learn to build and maintain the linux version. My entire computer lab at school is Ubuntu. I will try to follow along as I have time and see what I can do to help. I’ve done things like Arch, but I’ve never tried to properly assemble a deb before.
I suggest that you just remove the -B option from the code for the Linux startup in scsynthexternal.rb It will work on LInux OK without it. I have it running like that on my Ubuntu 17.04
"-B", "127.0.0.1" and the preceding comma from line #417 in the file
(it is in (sonic-pi>/app/server/sonicpi/lib/sonicpi/scsynthexternal.rb)
In the meantime, I successfully built supercollider
But now I’m struggling on sonic-pi
Command : …/…/server/bin/qt-doc.rb -o ruby_help.h
has error about unvailable libaubio
sonic-pi/app/server/vendor/ffi-1.9.17/lib/ffi/library.rb:147:in `block in ffi_lib’: Could not open library ‘libaubio.4.2.2.dylib’: libaubio.4.2.2.dylib: cannot open shared object file: No such file or directory. (LoadError)
Could not open library ‘libaubio.4.2.2.dylib.so’: libaubio.4.2.2.dylib.so: cannot open shared object file: No such file or directory.
Could not open library ‘libaubio.so.1’: libaubio.so.1: cannot open shared object file: No such file or directory.
Could not open library ‘aubio1.dll’: aubio1.dll: cannot open shared object file: No such file or directory.
Could not open library ‘libaubio1.dll.so’: libaubio1.dll.so: cannot open shared object file: No such file or directory
To compile supercollider, here are the steps I followed.
sudo apt install build-essential
qt5-default qt5-qmake qttools5-dev qttools5-dev-tools qtdeclarative5-dev libqt5webkit5-dev qtpositioning5-dev libqt5sensors5-dev libqt5opengl5-dev
git clone https://github.com/supercollider/supercollider
git submodule init
git submodule update
cmake -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu/qt5 -DSC_EL=OFF …
sudo make install
But as said the wise man, I forgot to checkout a specific tag like 3.8.0 before so I may end to run again those
I think I got the origin of my compile problem.
Ubuntu 17.04 delivers libaubio5 so too recent version for that part of sonic-pi compile that search v4.2.2
I need to see how to install older libaubio
Ok I give up for tonight and won’t have sonic pi tomorow
Starting SuperCollider 2017-10-21 22:40:18
JackDriver: client name is 'SuperCollider’
SC_AudioDriver: sample rate = 44100.000000, driver’s block size = 1024
SuperCollider 3 server ready.
JackDriver: max output latency 46.4 ms
exception in GraphDef_Load: UGen ‘Decimator’ not installed.
while reading file: '/usr/share/sonic-pi/synthdefs/compiled/sonic-pi-fx_bitcrusher.scsyndef’exception in GraphDef_Load: UGen ‘MdaPiano’ not installed.
2017 and still those nightmares from my first compilations of slackware 2.0
Looks like you need to install the extra ugens for SuperCollider. Also, you’ll need to install Erlang for the OSC/MIDI scheduler, compile the erl files, fetch, build and install osmid, and also compile all the Ruby native libraries (which may require further deps depending on your distro).
Unfortunately Sonic Pi is a fair bit of work to install manually - which is why it’s much easier to use macOS, Windows and Raspbian where I’ve already done all this hard work for you
Having thought about this for a while - I think it’s best to keep discussion of boot issues for generic Linux over on the Github issues page http://github.com/samaaron/sonic-pi/issues/
Unfortunately I currently don’t have enough resources to continue maintain macOS, Windows and Raspbian - there’s very little chance I can support generic Linux until either I have sufficient funds for myself and another, or someone kindly steps up to volunteer themselves in this capacity.
I couldn’t sleep well so I get up early.
I added a link:
sudo ln -s libaubio.so libaubio.so.1
I wiped out the supercollider build, carefully checked out v3.8.0, compiled and… BOOOM it works !
So, I have a v3.0.1 for my talk on Friday, I have v2 for my workshop this afternoon.
Next step will be to figure out if my whole process is stable and reproducible, to be properly documented.
And I will digg further, because I don’t get why such a multi platform project is so hard on Ubuntu.
I mean, OSX is already close, Raspbian is even more, I don’t get the issues…
But I feel better this morning, I don’t like having non working bits on my laptop
And I want to reassure @samaaronthat I have no complains at all on his excellent work.
Sonic-pi is such a great tool, even for metal head like me
I just don’t like the non universal aspect of computers and systems in general. Come on, I saw ZX Spectrum in the 80’s and we still have platforms today that can’t talk the same language.
Congrats! If you figure out what was wrong and have any ideas on how to improve things for other Linux users I’d love to hear them
No worries - I didn’t read any complaints from you in the slightest. I too am deeply frustrated by how insanely difficult it is to build multi-process system in a deployable format for multiple operating systems and target hardware. You can probably imagine how much of my time has gone into the fact that Sonic Pi pretty much just works on Raspbian, macOS and Windows. It’s also the reason why most academic systems don’t ship with an installer or any support whatsoever.
I would love to officially support Linux, unfortunately there are just too many moving parts that I don’t fully understand at this point.
From a recent point of view, I’ll say there’s two main issues:
- SuperCollider itself: no recent version, but a previous comment said you could use sonic-pi without the -B option
- Jackd : I understand what it gives to linux in term of realtime music, but why is that so messed up with classic pulseaudio that is the desktop standard
But in the precise case here, my main issue was that I did not had SuperCollider 3.8 available, so not even a sonic-pi issue in itself.
Then, I could use sonic-pi v3 myself, but I won’t advise kids in my workshop to go that way.
This afternoon, everyone will use V2 and it will be great.
Advanced usage like interaction with hardware will be in the future, if I find a reliable way to give them v3 and precise documentation on how to use jackd and such.
thanks to your postings I finally did the same as you and compiled SuperCollider 3.8.0.
This did the trick Sonic Pi is running again… puhhh… Thanks for that.
Ahh, not to forget the Vanilla Supercollider: this posting by Sam also did help.