Las computadoras y el sonido
Desde los inicios de la computación casera, las computadoras han sido capaces de generar sonido, las antiguas computadoras traian una bocinita integrada al chasis, que era incapaz de reproducir la gran gama de sonidos que actualmente son capaces de reproducirse gracias a las tarjetas de sonido y sintetizadores integrados.
Bocina integrada al chasis de la computadora
Al dia de hoy, es muy sencillo y hasta natural esperar sonido de alta definición en nuestras computadoras ya sea originado por procesamiento de ondas o por síntesis.
Esto último es importante entenderlo y diferenciarlo para el alcance de este proyecto.
Archivos de onda
La reproducción de archivos de onda es la generación de sonido teniendo como datos de entrada los valores de los muestreos de la amplitud de onda a determinada frecuencia, es decir, los valores discretos de la onda a una frecuencia y resolucion determinadas, un ejemplo de esto es la reproducción de un CD de música y archivos WAV (entre otros) que tienen valores típicos de frecuencia de muestreo de 44.1 KHz (o 44100 muestras por segundo) con una resolución de 16 bits (2^16 = 65536) para los valores de la amplitud de onda por cada canal.
Discretización de una onda análoga
Estos archivos suelen ser muy grandes en tamaño para mantener su fidelidad y son ideales para ser procesados en cualquier DAW (Digital Audio Workstation).
Archivos MIDI
MIDI es el acrónimo en ingles para Musical Instrument Digital Interface que describe todo un protocolo, interfaz digital y conectores que permiten el intermabio de información entre instrumentos musicales electrónicos, computadoras y dispositivos compatibles.
La tecnología MIDI fue estandarizada en 1983, por lo que debemos de entender que es algo un poco viejo, sin embargo es un estandar actualmente muy utilizado en la industria musical actual, a pesar de sus 30 años de vida.
Si han puesto atención habrán notado que hasta el momento jamas he hablado de sonido relacionado con MIDI, y es porque el sonido no se transmite a traves de las conexiones MIDI, lo unico que viaja entre dispositivos son mensajes MIDI que el dispositivo receptor interpretará de acuerdo a su implementación, esto puede ser algo como un tick de reloj o el evento de reproducir la nota B# de un piano de cola por 123 milisegundos, que hacer con cierto mensaje, depende totalmente de quien recibe el mensaje, nada mas.
El sonido generado por un dispositivo MIDI es una característica muy particular del dispositivo en si, es decir, si uno tiene dos sintetizadores MIDI de diferente marca y ambos reciben el mismo mensaje de reproducir una cierta nota de un instrumento especifico, no sonarán igual, y es posible que aún dos dispositivos de la misma marca y modelo, expuestos a diferentes situaciones de trabajo, temperatura y uso generen sonido diferente para el mismo evento.
La razón del comportamiento anterior es que el sonido es generado por la circuitería que sintetiza la onda del sonido solicitado, por lo que cada implementación es única. Existe también la opcion de sintetizar el sonido por software, y esta es la opción que mas adelante nosotros utilizaremos.
Ya para finalizar solo queda mencionar que el tamaño de los archivos MIDI es muy pequeño, pues solo guarda los mensajes que deben ser enviados, no el sonido en si, para escucharlos se requiere de un sintetizador, ya sea por software o por hardware y que a pesar de todo tienen grandes ventajas como poder variar los instrumentos que se reproducen, cambiar el tempo y hasta generar la partitura de la música almacenada.
Sonido en la Raspberry Pi
Ya que tenemos conocimiento de las bases sobre las que sustentaremos nuestro proyecto, comenzaremos con la configuración del sonido en la Raspberry Pi.
Dependiendo de la versión de Raspbian instalada en su computadora, el módulo de sonido puede estar o no configurado por default. Para saberlo, haremos la siguiente prueba:
lsmod | grep snd_bcm2835
Si este comando nos devuelve algo, significa que el módulo esta cargado en memoria y puedes evitar los siguientes pasos de esta sección.
Al leer esta linea, asumo que el módulo de sonido no esta instalado y que necesitas un poco de guia al respecto, asi que sigamos los siguientes pasos.
Primero, instalar ALSA que es el acrónimo de Advanced Linux Sound Architecture, para esto, hay que ejecutar los siguientes comandos para instalar ALSA y sus utilerias y posteriormente reiniciar el equipo:
$ sudo reboot
Espera que la Raspberry Pi reinicie, una vez reiniciada, cargaremos el módulo de sonido de manera manual
- $ sudo modprobe snd_bcm2835
y lo configuraremos para que utilice la salida de audio de 3.5mm
- $ sudo amixer cset numid=3 1
En este punto deberiamos de ser capaces de escuchar algo al conectar bocinas o audifonos a la computadora. Podemos probar instalando el reproductor de linea de comando mpg321, el siguiente comando lo hará por nosotros:
$ sudo apt-get -y install mpg321
Una vez instalado mpg321 y sus dependencias, descarguemos un MP3 y reproduzcamoslo:
$ wget http://www.flashkit.com/imagesvr_ce/flashkit/soundfx/Cartoon/Laughter/demonic_-daniel_a-8513/demonic_-daniel_a-8513_hifi.mp3
$ mpg321 demonic_-daniel_a-8513_hifi.mp3
Debes de haber escuchado una risa malevola como la que cualquiera haría una vez que ha configurado el sonido por primera vez en linux :)
Por el momento dejare hasta aqui esta entrada, sabiendo que quienes estan siguiendola ya tienen el sonido configurado, en la segunda parte nos dedicaremos a la parte MIDI y a procesarlos con Python para obtener algo similar a esto
Como siempre, si tienen cualquier duda o comentario, no duden en hacerlo!
Saludos y hasta la próxima!