Hace unos días me hice con un Lenovo T430 de segunda mano y desde entonces estoy instalando poco a poco todo lo necesario1 para hacer livecoding

Como es costumbre, han surgido errores como setas.

El primero al que me enfrenté y logré solucionar (gracias a Kike, un compañero del grupo de LiveCoding de Madrid) tiene que ver con TidalCycles. Cada vez que iniciaba el servidor Superdirt desde Supercollider me encontraba con el error: ERROR: No more buffer numbers — free some buffers before allocating more. Y para más recochineo, Atom se colgaba al arrancar el paquete de TidalCycles.

Perfecto!

SuperCollider-buffer-error-2017-07-08_09-39-47

Más o menos teníamos claro (en realidad lo tenía claro Kike, yo ni p idea) cual podría ser el problema: **memoria insuficiente para cargar los samples de TidalCycles al iniciar el servidor SuperDirt **. Para estar seguros queríamos hacer unas cuantas pruebas.

Kike me pasó un script que suele usar la gente que hace livecoding con TidalCycles (es el que se encuentra al final del post), que sirve para optimizar los recursos del pc y que reemplaza el comando SuperDirt.start para iniciar el programa desde SuperCollider.

Así que, repetí varias veces la misma rutina: abrir SuperCollider y ejecutar el script cambiando alguna opción en cada ocasión. Lo primero que probé fue cargar menos samples por lo que busqué en mi portátil una carpeta que tuviese pocos y le indiqué la ruta descomentando ~dirt.loadSoundFiles(«/Users/myUserName/Dirt/samples/«);2. SuperCollider cargó sin errores pero Atom se colgó al iniciar TidalCycles. Bueno, al menos sabíamos que el problema inicial era causado por la cantidad de *samples cargados.

El siguiente paso fue volver a cargar los samples originales de TidalCycles, comentando la línea anterior, y asignar más memoria al buffer al iniciar SuperDirt con la opción s.options.numBuffers = 1024 * 16;. Al más estilo prueba y error fui multiplicando 1024 por múltiples de 16 cada vez mayores hasta que SuperCollider cargó sin errores. En 128 me quedé!!

Una cosa solucionada.

SuperCollider cargaba sin errores, pero Atom se colgaba cada vez que iniciaba TidalCycles. No teníamos ni idea que podía ser. Hasta que caí: un paquete, llamado Sonic-Atom que permite la integración de Atom con Sonic-Pi hacía «interferencias» y colgaba el editor. Así que lo desinstalé y todo perfecto!

Por fin!

Esa sensación de desespero cuando te encuentras con errores por doquier::

~~~~

(
// configure the sound server: here you could add hardware specific options
// see http://doc.sccode.org/Classes/ServerOptions.html
s.options.numBuffers = 1024 * 16; // increase this if you need to load more samples
s.options.memSize = 8192 * 16; // increase this if you get "alloc failed" messages
s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
s.options.numOutputBusChannels = 2; // set this to your hardware output channel size, if necessary
s.options.numInputBusChannels = 2; // set this to your hardware input channel size, if necessary
// boot the server and start SuperDirt
s.waitForBoot {
~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
~dirt.loadSoundFiles;   // load samples (path containing a wildcard can be passed in)
// for example: ~dirt.loadSoundFiles("/Users/myUserName/Dirt/samples/*");
s.sync; // wait for samples to be read
~dirt.start(57120, [0, 0]);   // start listening on port 57120, create two orbits, each sending audio to channel 0. You can direct sounds to the orbits from tidal e.g. by: `# orbit "0 1 1"
}
)
// now you should be able to send from tidal via port 57120

  1. Estoy preparando un post sobre el proceso, espero no tardar demasiado en solucionar todos los problemas:D. 
  2. Hay que cambiar **/Users/myUserName/Dirt/samples/* **por la ruta donde se encuentren los samples y no olvidarse del ; al final de la linea ni el asterisco *.