Solución portátil para un saxo electrónico: Raspberry PI + soft o hard sinte

EWI-USB and Raspberry Pi

EWI-USB and Raspberry Pi

Para tocar el controlador de viento EWI-USB normalmente me conecto al portátil. Ejecuto el fluidsynth o cualquier otro soft sinte. Por tanto, la solución para practicar es EWI-USB + portátil + auriculares. Existe una solución más portable y autónoma? Definitivamente sí utilizando la Raspberry Pi, buscando una solución puramente consola y totalment desatendida: enchufar y tocar. En esta ocasión no utilizo JACK, es una solución purament ALSA. Se trata de instalar fluidsynth, algún soundfont que suene bien y que no pese demasiado, configurar el usuario pi con prioridad realtime, desinstalar cualquier servicio que no tenga que utilizar.

Con un script en /etc/udev/rules.d/ewiusb.rules conseguimos que en el momento que conecto el EWI-USB por el puerto USB se ejecuten los comandos que me permitirán tocar automáticamente: ejecutar fluidsynth y conectar la salida midi del EWI-USB a la entrada midi del fluidsynth. He tenido bastantes problemas con la letencia, pero el script que se muestra más abajo a mi em funciona bien sin latencia.

Además, con un poco de electrónica simple y utilizando los pins GPIO se podría cambiar fácilmente el programa midi y poder escoger entre diferentes instrumentos: saxo, midi, flauta,…

Otra posibilidad, como se ve en la fotografía, es utilizar un sinte hardware com el Roland JV-1010. Como la entrada del JV-1010 es puramente midi se necesita un cable conversor USB2MIDI (por ej, http://www.amazon.com/dp/B0017H4EBG), que muestra sus puertos a ALSA. Con esta solución no has de temer por la latencia, es una magnífica experiencia de usuario, y podemos escoger entre centenares de sonidos.

/etc/udev/rules.d/ewiusb.rules

#/etc/udev/rules.d/ewiusb.rules
ACTION==»add», SUBSYSTEMS==»usb», ATTRS{product}==»EWI-USB», RUN+=»/home/pi/ewiscript.sh»

/home/pi/ewiscript.sh

#!/bin/sh
#/home/pi/ewiscript.sh
#script que s’ha d’executar quan connectem el EWI-USB. Dos casos: a) synth hardware (roland); b) synth software (fluidsynth)

#mirem si tenim connectat el cable usb-midi
if [ -z `/usr/bin/aconnect -iol | grep USB2.0-MIDI | awk ‘/client/{print $1}’` ]; then

#no està connectat: b) synth software (fluidsynth)
if [ -z `pidof -s fluidsynth` ]; then
screen -d -m -S fluidsynth -t «fluidsynth» /usr/bin/fluidsynth -a alsa -m alsa_seq -g 1 -c 4 -z 256 -r 48000 /home/pi/Natural_Oboe.sf2
/bin/sleep 3
/usr/bin/amixer set Master 40%+ > /dev/null
/bin/sleep 2
FLUIDSYNTH=$(/usr/bin/aconnect -o -l | awk ‘/FLUID/{print $2.»0″}’)
/bin/sleep 2
#echo $FLUIDSYNTH
EWIUSB=$(/usr/bin/aconnect -o -l | awk ‘/client/’ | awk ‘/EWI-USB/{print $2.»0″}’)
/bin/sleep 2
/usr/bin/aconnect $EWIUSB $FLUIDSYNTH
/bin/sleep 2
fi
else
#a) synth hardware (roland)
USBMIDI=$(/usr/bin/aconnect -o -l | awk ‘/client/’ | awk ‘/USB2.0/{print $2.»0″}’)
/usr/bin/aconnect EWI-USB:0 $USBMIDI
/bin/sleep 2
fi

Más información, aunque en catalán, en la wiki