Instalación de Chuck

Instalación de Chuck

Siguiendo la guía de Panisuan Chasinga en medium.com, sólo con unos cambios, en resúmen:

  • Instalar ALSA
  • Instalar los prerequisitos para ChucK
  • Compilar e instalar ChucK
  • Configurar los dispositivos de audio

Instalación de ALSA

En una instalación de Linux más completa, ya debería haber una versión de Alsa, pero como estamos usando Raspbian OS Lite (es decir, sin interfaz gráfica) muchas cosas no están incluídas.

Es mejor compilar e instalar, ya que no causó un gran problema.

Descargar la versión más reciente de Alsa (Visitar web del proyecto Alsa para obtener el link de la versión más reciente)

mkdir -p ~/looper/assets/installs/
cd ~/looper/assets/installs 
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.2.4.tar.bz2

Descomprimir, compilar e instalar

tar -xjf alsa-lib-1.2.4.tar.bz2
cd alsa-lib-1.2.4/
sudo ./configure
sudo make
sudo make install

Prerequisitos para ChucK

De acuerdo a la documentación oficial, chuck requiere varias cosas. Comenzamos con libsnd

Descargar libsnd, compilar e instalar igual. Visitar la web de libsnd para obtener la versión más reciente.

cd ~/looper/assets/installs/
wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28.tar.gz
tar -xzvf libsndfile-1.0.28.tar.gz
cd libsndfile-1.0.28/
sudo ./configure
sudo make
sudo make install

Instalar dependencias de Chuck desde los repositorios

sudo apt-get install gcc flex make bison

Descargar la versión más reciente de Chuck (Visitar web de chuck para obtener el link de la versión más reciente)

cd ~/looper/assets/installs/
wget https://chuck.cs.princeton.edu/release/files/chuck-1.4.0.1.tgz
tar -xzvf chuck-1.4.0.1.tgz
cd chuck-1.4.0.1/src/
make linux-alsa
sudo make install

Opcional: Para instalar Chuck en otro directorio (por default en /usr/local/bin/) editar el archivo makefile en la sección 'install' antes de ejecutar make install

Probar la instalación

si se ejecuta $ chuck (./chuck si no se instaló al path), debería sólo notificar que no hay input files

chuck
  [chuck]: no input files… (try --help)

Antes de probar la reproducción de audio, conectar la tarjeta de audio USB y reiniciar la Raspberry.

Probar Chuck

Para probar el audio, ejecutamos un ejemplo de chuck desde otra terminal:

cd ~/looper/assets/installs/chuck-1.4.0.1/examples/
chuck otf_01.ck

NOTA: Falló.

Probaré con definir el dispositivo default de audio.

Definir el dispositivo de audio predeterminado para ALSA

Primera opción: definir el dispositivo a nivel de usuario (referencia).

cd ~
vi .asoundrc

El archivo debe contener la siguiente definición

pcm.!default {
  type hw
  card 1
  device 0 
}
ctl.!default {
  type hw
  card 1
  device 0
}

¿Cómo obtener esos números?

Utilizando los comandos arecord y aplay de la API de ALSA, nos enlista los dispositivos y tarjetas conectadas

arecord -l && aplay -l

Probar la configuración de la tarjeta de audio con ALSA

First things first, hay que probar, primero, que ALSA es capaz de hablar con la tarjeta de audio (referencia)

# Reproducir ruido blanco alternativamente en cada lado.
speaker-test -c2
# Probar un archivo de audio .wav
speaker-test -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav

¡Éxito!

Ahora queda resolver, por qué Chuck no usa ALSA adecuadamente.

Forzar a Chuck para utilizar el dispositivo de audio predeterminado

A pesar de que se establece el dispositivo predeterminado de audio a nivel de usuario mediante el archivo .asoundrc, Chuck lo ignora al ejecutarse.

Intenté resolverlo configurando Chuck para utilizar el dispositivo elegido, pero terminó siendo más fácil deshabilitar definitivamente el chip integrado de audio para que sólo considere la tarjeta USB.

Deshabilitar el dispositivo integrado de audio

Siguiendo la guía de Instructables, basta con crear un archivo de configuración para ALSA que ponga en blacklist el nombre del chip de audio.

sudo nano /etc/modprobe.d/alsa-blacklist.conf

agregar una línea

blacklist snd_bcm2835

Donde snd_bcm2835 es el nombre del dispositivo integrado de audio (validarlo con los comandos arecord -l && aplay -l )

Tras reiniciar el dispositivo, la Raspberry Pi ignorará el chip de audio en bootup y ahora sí, al ejecutar un ejemplo de Chuck, escucharemos el demo

chuck ~/looper/assets/installs/chuck-1.4.0.1/examples/otf_01.ck

Siguiente: Primeros pasos programando ChucKs