Hace unos meses salió la esperada versión 3.0 de Sonic Pi y poco tiempo después una 3.0.1 que corregía algunos errores de la primera. La rama 3 de Sonic Pi es un gran salto en el programa de didáctica musical y Live Coding, ya que, entre otras mejoras, añade soporte a los sistemas MIDI y OSC que permite comunicarse con instrumentos MIDI, otros lenguajes audiovisuales (como Processing) e incluso sincronizar varios ordenadores mediante OSC1.

No me gusta repetir un post de instalación cada vez que sale una versión nueva, pero voy a hacer una excepción, ya que el proceso ha cambiado bastante desde la versión anterior y es algo más complicado. De hecho, coger aire y leer con calma el cada línea del proceso antes de ejecutarlo por que es fácil equivocarse (aviso :D).

###NOTA:
La instalación funciona en Debian 9 y Ubuntu 16.04 en adelante, comprobado por varios miembros del foro de Sonic Pi y yo mismo, y está basada en los scripts de Neuromancer85 y Robin Newman.

Primeros pasos

El primer paso es instalar las dependencias necesarias para Supercollider, las bibliotecas qt5 para la GUI y el proceso de compilación:

sudo apt-get install -y g++ ruby ruby-dev pkg-config git build-essential libjack-jackd2-dev libsndfile1-dev libasound2-dev libavahi-client-dev libicu-dev libreadline6-dev libfftw3-dev libxt-dev libudev-dev cmake libboost1.62-dev libqwt-qt5-dev libqt5scintilla2-dev libqt5svg5-dev qt5-qmake qt5-default qttools5-dev qttools5-dev-tools qtdeclarative5-dev libqt5webkit5-dev qtpositioning5-dev libqt5sensors5-dev qtmultimedia5-dev libffi-dev libaubio-dev libboost-dev erlang supercollider sc3-plugins

Tras las dependencias, el siguiente paso es descargamos los binarios. Aparte del binario de Sonic Pi, necesitamos dos herramientas más que aparecían en la versión anterior:

  • aubio: una colección de herramientas y algoritmos para etiquetar y transformar música y sonidos. Entre otras muchas cosas, detecta a que frecuencia suena una nota o cuál es el ritmo de una melodía.

  • osmid: una herramienta, en realidad dos, ligera y portable que sirve para convertir MIDI a OSC (m2o) y OSC a MIDI (o2m).

Antes de descargar nada, he de indicar que voy a realizar todo el proceso dentro de la carpeta bin en mi home (no confundir con la carpeta de mismo nombre del directorio raíz) pero puede ser en una carpeta cualquiera.

Así que, entramos en la carpeta bin:

cd bin

y descargamos los binarios:
(ejecuta línea a línea)

git clone https://github.com/samaaron/sonic-pi.git
git clone https://git.aubio.org/aubio/aubio
git clone https://github.com/llloret/osmid.git

Compilando

Compilamos e instalamos aubio:
(ejecuta línea a línea)

cd aubio
./scripts/get_waf.sh
./waf configure
./waf build
sudo ./waf install
cd ..

Compilamos dos ficheros de erlang, lenguaje en el que está basado Sonic Pi:
(ejecuta línea a línea)

cd sonic-pi/app/server/erlang
erlc osc.erl
erlc pi_server.erl

Durante el proceso puede que aparezcan algunos errores, como:

pi_server.erl:57: Warning: variable 'T' is unused
pi_server.erl:59: Warning: variable 'Rest' is unused
pi_server.erl:170: Warning: variable 'Tag' is unused

Pero no os preocupéis ya que son avisos «normales» que se arreglan más adelante.

¡Seguimos!

Ahora, compilaremos unas extensiones nativas de Ruby necesarias para algunas gems de Sonic Pi:
(ejecuta línea a línea)

cd sonic-pi/app/server/ruby/bin
./compile-extensions.rb
cd ~

Compilamos los binarios de osmid, m2o y o2m:
(ejecuta línea a línea)

cd bin/osmid
mkdir build
cd build
cmake ..
make all

creamos la carpeta donde instalar los binarios de osmid:

mkdir -p ~/bin/sonic-pi/app/server/native/linux/osmid

desde la carpeta /bin/osmid/build ejecutamos

install m2o o2m -t ~/bin/sonic-pi/app/server/native/linux/osmid

Ahora vamos – ya queda poco – a la carpeta qt de Sonic Pi para compilar la documentación (tutoriales y demás) y la interfaz de usuario –GUI-:
(ejecuta línea a línea)

cd ~/sonic-pi/app/gui/qt
../../server/ruby/bin/i18n-tool.rb -t
cp -f ruby_help.tmpl ruby_help.h
../../server/ruby/bin/qt-doc.rb -o ruby_help.h

y finalmente compilamos el binario, propiamente dicho, de Sonic Pi!
(ejecuta línea a línea)

lrelease SonicPi.pro
qmake -qt=qt5 SonicPi.pro
make

Finalizando

sonic-pi_2017-10-25.png

Para abrir Sonic Pi, ejecutamos en la terminal:

bin/sonic-pi/bin/sonic-pi

Tras esta compilación nos merecemos una cerveza (yo al menos!!!)


  1. Puedes leer una reseña completa de esta nueva versión en el blog de Robin Newman