Está en la página 1de 27

Caja de msica con Raspberry Pi.

Manuel Guerrero Nava Ing. Produccin Musical Digital


hacknugueva@gmail.com
Manuel Guerrero realizo su servicio social durante el periodo de agostodiciembre 2015 en el rea de tecnologa del centro de cultura digital con
Francisco Valencia y Salvador (Chava). Durante este tiempo aprendi muchas
cosas pero se dio cuenta de la necesidad de incorporar nuevas formas de
relacionar la tecnologa con el audio. Ya que muchas instalaciones en el
memorial son sumamente interesantes pero siempre dejan al espectador
preguntndose Cmo podra yo hacer eso? Es por eso que surgi esta idea de
crear una forma de ensear al pblico en general y a todo entusiasta del audio
y la tecnologa. Que mejor forma que crear contenido digerible e interesante
para aprender herramientas muy poderosas y adems free source.
INTRODUCCION
Este tutorial nos permitir crear nuestro primer generador aleatorio de sonidos
mientras que aprenderemos el uso y configuracin de la micro computadora
raspberry pi, todo esto usando el software de programacin de sonido pure
data.
Raspberry pi es un proyecto educacional el cual consiste en una micro
computadora modular del tamao de una tarjeta de crdito. La cual est
diseada para aprender a programar algunos lenguajes como Scratch y Python
pero de igual manera se conecta a un monitor va HDMI, a un teclado y mouse
con USB, a internet con un puerto Ethernet y a unas bocinas o audfonos con
una salida de audio de 3.5mm. Prcticamente tenemos una computadora
completamente funcional y a un precio muy accesible, la cual adems de
fomentar la exploracin de algunos lenguajes de programacin nos permitir
usar internet, hojas de clculo, editores de texto, ver videos y hasta correr
algunos juegos.
Raspberry pi no funcionara exactamente a como estamos acostumbrados con
los grandes sistemas operativos comerciales como son MAC OSX y Windows.
Sino que Raspberry tendr sus propios sistemas operativos, basados en Linux,
el cual es una de las distribuciones de sistema operativo open source ms
importantes. En este tutorial aprenderemos a instalar el sistema operativo de
Raspbian Wheezy.
Por otro lado Pure Data es un software open source de programacin de audio
creado por Miller Puckette con un ambiente totalmente grfico. Lo cual no solo
ofrece una interfaz sumamente amigable para el usuario sino que tambin nos
da la posibilidad de involucrarnos con la programacin de una forma muy
didctica y atractiva.
Existen diferentes versiones de Raspberry pi, pero en este tutorial estaremos
usando la Raspberry pi B+. Sin importar el modelo de tu Raspberry este tutorial
funcionara para todos los modelos siempre y cuando le instales el sistema

operativo Raspbian Wheezy ya que la versin de Pure Data para Raspberry esta
soportada para esa distribucin.
MATERIALES

Raspberry Pi (modelos A, A+,2B, 2B+)


Cable micro USB
Eliminador de 2 Amp(mximo), 5 v.
Tarjeta micro SD 4gb mnimo
Adaptador USB de micro SD (En caso de no tener entrada SD en tu
computadora)
Teclado, mouse (USB)
Monitor con entrada HDMI
Cable Ethernet

INSTRUCCIONES
Parte I
Una vez teniendo los materiales empezaremos descargando el sistema
operativo RASPBIAN WHEEZY en nuestra computadora personal. El cual se
puede
encontrar
en
la
pgina
oficial
de
Raspberry
Pi:
https://www.raspberrypi.org/downloads/raspbian/.
Una vez descargado es necesario seguir ciertas instrucciones dependiendo del
sistema operativo de nuestra computadora.
PARA WINDOWS
Descargar
e
Instalar
la
utilera
http://sourceforge.net/projects/win32diskimager/

de

Win32diskimager:

Una vez instalada conectaremos nuestro micro SD a nuestra computadora, ya


sea mediante un adaptador o directamente a nuestra computadora. Al
conectarlo es importante recordar la letra asignada a la unidad extrable. Ej.

En el caso de mi computadora la unidad se le asigno la letra (D:)


Ahora es necesario correr el programa Win32diskimager en modo
Administrador. Esto lo podremos hacer dando click derecho en el icono y
seleccionando la opcin.
Para los usuarios de Windows ser necesario descomprimir l .zip de RASPBIAN
WHEEZY con 7-ZIP el cual es un programa gratuito que nos permite
descomprimir archivos. En caso de no tenerlo instalado se puede bajar de la
pgina oficial: http://www.7-zip.org/

Al descomprimirlo obtendremos un archivo


con la terminacin .iso

Una
vez
con
todo
esto
listo
seleccionaremos la imagen para escribirla
en el SD como podemos ver a
continuacin.

Lo ms importante es corroborar que el Dispositivo efectivamente sea la letra


que le corresponde, de lo contrario podras borrar toda la informacin de tu
disco duro (en caso de seleccionar C:/, por ejemplo). Una vez confirmado
daremos click en Escribir/Write. Este proceso podra durar de 5 a 10 minutos
dependiendo de tu computadora.
Una vez terminado tendremos nuestro SD disco de arranque listo para conectar
a la Raspberry pi.

PARA MAC OS y Otra alternativa Windows (FACIL)


Una de las formar ms sencillas de instalar esta distribucin de Raspbian as
como la mayora de los otros sistemas disponibles est a nuestro alcance

mediante la opcin de NOOBS la cual se puede obtener desde la pgina oficial


de Raspberry: https://www.raspberrypi.org/downloads/noobs/
Esta es una solucin multi-plataforma, sin importar cul sea el sistema
operativo con el que vayas a configurar tu SD. Si cuando compraste tu
Raspberry Pi inclua una SD con NOOBS incluido entonces puedes saltar a la
parte II.
Si no tienes la SD con NOOBS entonces descrgalo del link anterior y de igual
forma ser necesario descargar el software de SDFormater V4.0:
https://www.sdcard.org/downloads/formatter_4/
Descomprime ambos .zip e instala SDFormater 4.0
Ejecuta el SDFormater y escoge la opcin de borrado completo como veremos
a continuacin.

Lo que sigue ser escoger la


letra con la que el sistema
asignara a tu SD (es importante
saber que letra se asigna D:/ o
E:/, etc. Ya que de lo contrario
podramos formatear alguna
unidad
extrable
que
no
deseramos)
y
finalmente
formatear.
Al finalizar el formateado de
nuestra SD abriremos la carpeta
donde descomprimimos nuestro
NOOBS y arrastraremos los
archivos hacia nuestra SD
formateada. Por default se llamara BOOT.

Una vez copiados los archivos extraeremos nuestra SD de manera segura y


procederemos a la Parte II.
Una alternativa adicional es realizar el formateo mediante el smbolo del
sistema en Windows. Para lograr esto escribiremos cmd en la barra de
bsqueda del men de Windows y se abrir nuestra terminal de smbolo del
sistema.
Una vez que tengamos
nuestra terminal de smbolo
del sistema ejecutaremos el
comando
diskpart.
Este
comando
ejecutara
otro
programa con la misma
interfaz que el smbolo del
sistema y requerir nuestro
permiso de administrador
para ejecutarse.
A continuacin ejecutaremos
un comando dentro de nuestra terminal de diskpart. Este comando list volume
nos enlistara los volmenes de almacenamiento lgicos conectados interna y

externamente

en

nuestra

computadora.

Aqu podemos ver que hay una la particin de nuestro dispositivo SD es la que
est asociada al Volume 2 entonces procederemos a enlistar nuestros discos
fsicos con el comando list dik para asegurarnos que el volumen lgico
efectivamente corresponde al disco fsico. Una vez asegurndonos de lo
anterior, ya que mi SD es de 16 Gb, procederemos a seleccionar el disco para
realizar el formateo con el comando select disk1.
Al volver a enlistar los
discos fsicos de nuestra
computadora veremos el
disco que acabamos de
seleccionar
con
un
asterisco.
Entonces
podemos
proceder para limpiar y
formatear nuestra SD.

Con los comando en el orden anterior podremos lograr el formateo completo de


nuestra SD mediante el mtodo con el smbolo del sistema. Podramos
proceder con el copiado de nuestros archivos o la escritura de la imagen de
nuestro raspbian.

Parte II
En esta seccin instalaremos y configuraremos todo lo necesario para poder
usar el sistema operativo de Raspbian con su interfaz grfica as como con la
terminal.
Raspbian Wheezy
Si decidiste usar la primera opcin de instalacin entonces tu SD tiene cargada
la imagen de Raspbian Wheezy solamente. Debers conectar tu teclado,
mouse, cable HDMI a tu monitor, cable Ethernet y cable micro USB conectado a
tu cargador de 1 - 2 Amp.
Al conectar la alimentacin del cable USB la Raspberry encender y comenzara
la instalacin automticamente. Nos mandara una pantalla que nos permitir
escoger algunas de las opciones avanzadas para la raspberry.

En esta pantalla lo nico que deberemos cambiar es la configuracin del


overclocking a moderada para poder as obtener mejor rendimiento en el
software de Pure Data. Tambin se podr configurar la regin en la que se
encuentre. Al finalizar los cambios debern ser guardados y la instalacin del
sistema continuara.

Al finalizar la instalacin veremos esta pantalla negra preguntndonos el


usuario y la contrasea. Las cuales estn configuradas por default a usuario: pi;
contrasea: raspberry
Una vez logrado el acceso tendremos una terminal como la siguiente:

A partir de aqu podemos comenzar con la parte de la programacin de nuestra


raspberry pi.
Esta es una terminal Shell la cual usa un lenguaje simple llamado comnmente
Bash. Dicho lenguaje es una compilacin de rdenes redactadas en comandos,
los cuales nos permiten dar instrucciones a la computadora.
Por ejemplo estos son algunos comandos bsicos en la terminal:
Pwd nos sirve para ubicar el directorio en el que
estamos actualmente.

Dir nos permite saber


todos los directorios (carpetas) que hay dentro del directorio en el que estamos
actualmente.

El comando cd nos servir para navegar


entre los directorios. Por ejemplo sabemos que estamos en /home/pi, sabemos
tambin que dentro del directorio /pi hay 9 directorios. De los cuales
Documents es uno de ellos por lo que al usar cd Documents nos llevara dentro
del directorio de Documents. Para regresar al directorio pi/ simplemente
usaremos cd ..
El comando hostname nos dir el nombre que
tiene la computadora que estemos usando actualmente. Esto nos ser til
posteriormente.
Puedes experimentar con estos comandos para navegar por las carpetas del
sistema.

Este es probablemente uno de los comandos ms importantes, el comando es


apt-get (Advanced Package Tool) con el modificador update. Sudo ser
necesario usarlo cuando se requieran permisos especiales para modificar
archivos o configuraciones importantes en el sistema. La mayora de los
sistemas basados en Linux usan protocolos de seguridad muy efectivos.
Al correr este comando se deber entonces correr el siguiente comando: sudo
apt-get upgrade #(tomara un tiempo).
Estos comandos nos sirven para actualizar e instalar los paquetes necesarios
para actualizar al sistema. Tambin este comando nos servir para instalar o
desinstalar programas.

Una vez listos el sistema estar actualizado con todos los paquetes necesarios,
entonces instalemos nuestro primer programa con solo agregar install y
posteriormente el nombre del programa a instalar. Siempre y cuando este
nombre este dentro del repositorio de paquetes de raspbian, pero por ahora no
es necesario preocuparse por eso.

Una vez ms es necesario usar sudo para poder instalar un programa. Primero
enlistara todos los paquetes necesarios para poder instalar el software y luego
las dependencias o los programas necesarios para que funcione
correctamente. Nos preguntara si estamos de acuerdo y le pondremos Y para
proceder.
Es hora de pasar a la parte grafica de este tutorial. Para esto pondremos el
comando startx

Como podemos observar la raspberry pi posee un ambiente grafico como otros


sistemas operativos actuales, basados en ventanas.
Ya instalado pure data podremos pasar a la parte III de este tutorial, abriendo
men y yendo a la seccin de audio y video.
Tambin
podemos
ver
otros
elementos como un browser, el
explorador de archivos, la terminal,
etc.
Puedes tomar un segundo para
buscar entre las diferentes pestaas
con los programas preinstalados en
esta distribucin de Raspbian.

NOOBS
En el caso de haber escogido la instalacin mediante NOOBS el proceso se
simplificara mucho ya que es la forma ms sencilla de instalar no solo un

sistema operativo sino que da la opcin de instalar la mayora de las


distribuciones que existen.
la

El

la

Despus de conectar
raspberry pi como se
menciona
en
al
principio
de
esta
parte II. Aparecer
esta pantalla donde
nos preguntara que
sistema
operativo
deseamos usar.
sistema
que
escogeremos ser el
de Raspbian ya que
viene precargado en
SD que creamos en la
parte I.

Escogeremos la opcin de instalar y esperaremos. El proceso dura


aproximadamente 20 minutos y nos ira dando informacin sobre las utilidades
del sistema operativo as como de la terminal.

Al finalizar aparecer esta pantalla y finalmente despus de unos minutos


cargara el ambiente grafico del sistema operativo. De lo contrario aparecer la
terminal donde escribiremos el comando: startx
Abriremos una terminal y seguiremos los pasos descritos en la Parte II con
Raspbian Wheezy ya que la terminal es un programa universal en estos
sistemas e instalaremos Pure Data.

Remote Desktop (opcional)


Una de las soluciones para poder acceder a la raspberry pi sin tener mouse,
teclado y monitor HDMI es el protocolo RPD de escritorio remoto desarrollado
por Microsoft.
Lo ms importante es tener una computadora y estar conectado a la misma
red Wi-Fi que el raspberry pi (El raspberry pi debe estar conectado a la red va
Ethernet, mouse, teclado y pantalla HDMI la primera vez que se configura esta
modalidad).
Usamos los comandos aprendidos para instalar el programa dentro de la
raspberry pi, para esto ser necesario abrir una terminal y escribir lo siguiente:
sudo apt-get install xrdp
Una vez instalado empezara a correr el servidor de escritorio remoto en
nuestra raspberry pi.
Iremos a nuestra computadora, si es Windows abriremos el Remote desktop
conection (conexin de escritorio remoto), el cual ya est preinstalado en
Windows 7, 8 y 10.
En caso de tener una
http://cord.sourceforge.net/

mac

podemos

instalar

un

cliente

de

RDP:

Escribiremos el nombre de nuestra raspberry (el default es raspberrypi, de lo


contrario podemos consultarlo con el comando hostname en la terminal de
nuestro raspberry) y nos conectaremos.
En caso de no lograr la conexin iremos a nuestro raspberry pi y pondremos el
comando ifconfig en la terminal.

En vez de escribir el nombre de raspberrypi pondremos el nmero subrayado


en rojo, el cual corresponde a la ip de nuestro raspberrypi.

Se abrir esta pantalla donde pondremos nuestras credenciales para el usuario


de la raspberry. Deben de ser las de default a menos que se hayan creado ms
usuarios
con
privilegios
suficientes para permitir el
escritorio remoto.

Y
entonces podremos controlar
la
raspberry
remotamente
desde
nuestra pc o mac, usando el teclado, monitor, mouse o track pad de nuestra
computadora mientras que el raspberry podr estar simplemente conectado al
voltaje y a la red.
Parte III
Lo primero que necesitamos es configurar nuestra salida de audio para que use
la salida analgica de 3.5 mm. Para esto daremos click derecho en el icono de
la bocina y seleccionaremos Analog.

Ahora aprenderemos a usar nuestro software de Pure Data. Iremos al men,


luego a la pestaa de audio y video y debernos encontrar nuestro programa
instalado.

Al abrirlo por primera vez veremos nuestra


consola de Pure Data donde el sistema podr
darnos informacin relevante sobre el parche
que este corriendo actualmente as como los
drivers de sonido y las conexiones de entrada y
salida.
Pure Data tiene diferentes versiones, la versin
actual ser la de vanilla. Vanilla fue la primera
versin de Pure Data creada por Puckette Miller
la cual tiene cierto nmero de libreras y objetos
para poder usar.
Posteriormente con la contribucin de muchos
entusiastas de este proyecto se public la
versin pd-extended. La cual contiene un
nmero mayor de libreras y objetos. Como su nombre lo indica extiende las
posibilidades de procesamiento y conexin para Pure Data. En este caso solo
ser necesario usar las libreras bsicas ya que este tutorial es introductorio.
(ver Apndice)
Una
vez
logrado
esto
crearemos
una
nueva
ventana. Con ctrl + n o en la
pestaa de File/New.
Tendremos un lienzo blanco
totalmente vaco. Entonces
empezaremos a crear nuevos
elementos
en
nuestro
parche.
Primero haremos un mensaje
con ctrl + 2 o en la pestaa
de
Put/Message.
Y
escribiremos
dentro
del
mensaje Hola Mundo.

Los mensajes nos permiten pasar instrucciones a los objetos. En este caso la
instruccin es un texto el cual no tiene significado concreto ms all de una
cadena
de
caracteres.
Para poder hacer que este mensaje haga algo haremos un objeto con ctrl + 1 o
en la o en la pestaa de Put/Object. Dentro de nuestro nuevo objeto
escribiremos print
este objeto nos permitir imprimir informacin
relevante en la consola de Pure Data.

Una vez logrado esto crearemos un bang con ctrl + shift + b o en la pestaa de
Put lo encontraremos como Bang.
Y como podrn suponer deberemos
conectar todos estos elementos con nuestro mouse.
Ahora es momento, pero antes de todo deberemos salir del
modo de edicin con ctrl + e o en la pestaa de Edit deshabilitar
el Edit Mode. Ahora daremos click al bang y observaremos
nuestra consola de Pure Data.

Nuesto objeto bang es indispensable para poder programar en Pure Data ya


que los bangs dominan el flujo de las instrucciones en nuestros parches.
Debido a que nuestros objetos en la mayora de los casos necesitan de un
inicializador para empezar a funcionar y la forma de interactuar entre ellos es
mediante bangs. Los cuales pueden ser visibles o invisibles.
Ahora empezaremos a crear un parche ms complejo e interesante. Para
asegurarnos que Pure Data suene conectaremos unos audfonos o unas bocinas
en la salida de 3.5mm. Pure Data se inicializa con los drivers de sonido que
tienen disponibles, pero es recomendable usar los drivers de ALSA. Esto lo
podremos cambiar en la pestaa de Media donde seleccionaremos ALSA como
nuestro dispositivo principal as como ALSA-MIDI para cualquier conexin MIDI.
Una vez configurado esto crearemos un objeto nuevo ctrl + 1, y escribiremos
osc~.
Este objeto ser diferente a los dems ya que es un objeto de
sonido, el cual no necesita un bang para funcionar sino que constantemente
est mandando una seal con los argumentos dados. Daremos doble click
sobre el objeto y le daremos un argumento de 440 precedido por un espacio.

Uno de los elementos clave para cualquier


aplicacin de audio es la amplitud. Normalmente
dentro de los softwares de edicin de audio la
representacin de este valor ser mediante un
valor flotante con un mximo de 1 (0.0 ,0.1,0.2,
,1.0) ya que a partir del 1.0 empezaremos a
escuchar un sonido con clip digital, el cual es
sumamente molesto.
Es por esto que debemos decirle a nuestro
objeto osc~ que nos d un valor especifico de
amplitud.
Esto lo lograremos mediante la multiplicacin del
objeto osc~ por un valor flotante de 0.5.
Para esto crearemos un objeto *~ con un
argumento 0.5. Lo conectaremos a la salida del
objeto osc~.
Esto es en realidad una seal a 440 Hz creada mediante un
oscilador y multiplicada por 0.5, lo cual es igual a decir que
tendremos una amplitud de de la seal original.
Ahora para hacerlo sonar debemos crear un objeto dac~. El cual es
un convertidor digital-analgico simulando la conversin que har la
computadora a continuacin para lograr hacer sonar este oscilador.
Deberemos conectarlo como se ve en la figura. El ltimo paso
para hacer sonar nuestro parche ser prender el DSP en nuestra
ventana donde est la consola de Pure Data.
No
olvides que el modo edicin se puede habilitar y deshabilitar con
ctrl + e.
Probablemente te dar un buen susto ya que los sonidos puros creados por los
osciladores digitales suelen ser sumamente molestos. Prueba bajando el
volumen a 0.3 para lograr escuchar ms cmodamente.
Si esto fuera todo sera muy aburrido. Hagmoslo ms interesante.
Seleccionemos nuestro objeto osc~ y *~. Lo duplicaremos 2 veces con ctrl + d
y cambiaremos los valores de nuestros osciladores a mltiplos de esa
frecuencia, las amplitudes las cambiaremos todas a 0.3.
No olviden conectar las salidas de los objetos *~ a las dos entradas de nuestro
dac~ (canal izquierdo y canal derecho).

Probablemente es muy molesto no poder apagarlo


entonces haremos un control de volumen. Para
esto necesitaremos dos nuevos objetos. El objeto
line~ y el objeto vslider.
Eliminen las conexiones entre los *~ y el dac~
Todos los objetos tienen propiedades, las cuales
podrn ser cambiadas dndole click derecho al
objeto. Cambiaremos algunas propiedades de nuestro vslider.
Cambiaremos la altura y los
valores mnimos y mximos
de nuestro slider. As como el
tipo, deber ser log para
poder
controlar
ms
efectivamente la amplitud.

Crearemos un nuevo objeto con ctrl + 3 este objeto de numero tambin ser
clave para poder programar con Pure Data. Nos servir para poder visualizar y
cambiar parmetros de nmero en tiempo real.
Lo conectaremos a nuestro vslider y nuestro numero al objeto line~.
Los objetos siempre tienen inlets (entradas) y outlets (salidas). Para los
objetos comunes normalmente existe un hot inlet, normalmente ser el
que este ms a la izquierda, el cual detonara la funcin del objeto
mientras que el cold inlet, el que este ms a la derecha, nos servir en
algunos casos para cambiar argumentos de nuestro objeto. Esto ser
cierto en la mayora de los objetos bsicos, para los objetos ms
complejos podremos consultar que funcin tiene el inlet dndole click
derecho y help.
Hemos creado satisfactoriamente nuestro control de volumen. Pero antes de
probarlo deberemos hacer algo con nuestros osciladores. Para poder lograr que
dos seales se sumen es necesario representarlas mediante una grfica o una
funcin matemtica. Ya sea que se logre esto sumando grficamente las
seales o matemticamente. Como vimos anteriormente en Pure Data
podemos hacer operaciones matemticas de seales como *~. Entonces de
igual forma podremos hacer un objeto de suma +~. Basta con poner una~
para especificar que se trata de una seal de audio.
Sabiendo esto entonces sumaremos nuestras 3 seales mediante objetos +~.
Es importante saber que debido a que nuestra mxima amplitud siempre ser
1.0 debemos limitar las seales que estamos sumando para que nunca
excedan ese 1.0 es por eso que cada una de ellas la multiplicamos por 0.3.

El objeto +~ solo tiene dos inlets para sumar, por


eso deberemos usar dos objetos para poder sumar
las 3 seales.
Antes de conectar esto a nuestra salida, lo
conectaremos a nuestro control de volumen. Y de
ah a nuestra salida dac~ mediante otro objeto *~.
de nuestro parche es una
tres seales con un control
que
el
sonido
es
complejo que los primeros
logramos
obtener
y
escucharas un hiss pero
mayoritariamente a que
procesa tan efectivamente
comprar
mdulos
de
Raspberry para obtener
pero por ahora no ser

Esta primera parte


sntesis aditiva de
de volumen. Notaras
ligeramente
ms
sonidos
que
probablemente
esto
se
debe
nuestro hardware no
el sonido. Es posible
sonido
a
nuestra
mejor
desempeo
necesario.

Ahora crearemos otro parche encargado de controlar los nmeros que entran a
nuestros osciladores para poder as crear diferentes sonidos.
Empezaremos creando nuevo objetos: haremos un objeto metro con un
argumento 250. El objeto metro es simplemente un metrnomo, el cual
mandara bangs a una cierta velocidad determinada por su argumento o su cold
inlet). Este objeto necesita de un switch/toogle para ser inicializado.
Despus haremos un objeto random con un argumento 127. El objeto random
nos servir para generar un nmero aleatorio entre 0 y su argumento principal.
En este caso 127 sera el mximo nmero que este objeto podr crear. El objeto
random necesitara bangs continuos para poder hacer diferentes nmeros.
A continuacin haremos un objeto toggle con ctrl + t. El objeto toggle
funcionara como un switch dndonos un on/off o un 0/1 dependiendo de si esta
clickeado o no.
Por ultimo haremos un nmero con ctrl + 3
Conectaremos todos nuestros objetos y podremos ver que hace nuestro nuevo
parche al darle click a nuestro toggle, para esto recuerden salir del modo
edicin (ctrl + e).

Se preguntaran el porqu del 127 y no desesperen. Una de las


formas ms sencillas de representar sonidos digitalmente con una
escala musical temperada como la conocemos hoy en dia (do, re,
mi, fa, sol, la, si) es mediante un cdigo o protocolo conocido
como MIDI. Entonces para cada nota tendremos un equivalente
en nmero por ejemplo para la nota La en el ndice acstico 4
(ndice acstico = altura de la escala) equivale a la nota MIDI 69,
por lo que sol equivaldr a 70 (cada 1 equivale a medio tono ms arriba, por lo
que sumarle dos equivaldra a 1 tono completo). Existen un mximo de 127
notas MIDI las cuales representan casi la totalidad de las posibles alturas que
puede haber en un instrumento musical.
Sabiendo esto podemos seguir en nuestro parche hagamos 3 nmeros y 3
objetos mtof. Este objeto realizara la conversin de nota MIDI a frecuencia ya
que nuestros osciladores solo entienden frecuencias como argumentos y no
notas MIDI.
Ahora realizaremos algunas operaciones con las notas MIDI
demostrando la practicidad del uso de notas MIDI en vez de
frecuencias.
A las dos ltimos nmeros le sumaremos 3 con un objeto de
+. Los cuales tomaran como primer argumento el nmero
anterior.
La idea de lograr esto ser crear sonidos con diferentes
timbres y sonoridades. Les recomiendo reacomodar su
parche de la siguiente forma.

Finalmente deberemos conectar nuestro generador de nmeros aleatorios a


nuestra primer caja de nmero y las salidas de nuestros convertidores de MIDI
a frecuencia las conectaremos a las entradas de nuestros osciladores.

Como podemos ver programar en Pure Data se vuelve una tarea sumamente
intuitiva y grfica.

Basta
con
entender
algunos
conceptos bsicos de sonido y
msica para empezar a crear tus
propios parches.
Hagamos este parche an ms
interesante. Crearemos 4 mensajes
(ctrl + 2) con los nmeros 2, 3, 4, 6 y
los conectaremos a los dos cold inlets
de nuestros objetos de suma.
Esto provocara que al darle click o
mandarle un bang al mensaje con los
nmeros aumentara o disminuir la
separacin entre las 3 seales de los
osciladores, cambiando as el timbre
del sonido.

Ahora puedes comprobar como el sonido cambiara al darle click


a los diferentes mensajes creados.
A continuacin crearemos un objeto de random con un
argumento 3. Despus usaremos un nuevo objeto select con
argumentos 0 1 2 3. Se debe dejar un espacio entre cada
argumento. Este objeto seleccionara y mandara un bang por
cada vez que se iguale uno de los argumentos con los nmeros en el primer
inlet.
Por cada uno de los outlets del objeto select conectaremos un bang (ctrl + shift
+ b) y conectaremos la salida del random a la entrada del selecta si como la
entrada del random al objeto metro que ya habamos creado anteriormente.
Si activamos el toggle podremos
ver como los bangs se activan de
forma aleatoria.
Para asegurar un poco ms de
aleatoriedad
cambiaremos
el
argumento de random a 4 ya que
el objeto select al tener un numero fuera de sus valores esperados (sus
argumentos) mandara un pulso al ltimo bang, el cual no corresponde a ningn
argumento. Tambin conectaremos los 4 primeros bangs a los mensajes que
habamos creado anteriormente.

Al inicializar nuestro parche con el toggle notaremos que ahora el cambio en


las distancias de nuestras notas cambiara dinmicamente.
Para demostrar la versatilidad de este
estilo de programacin en ambientes
grficos crearemos una variacin
rtmica para nuestro parche.
Seleccionaremos el objeto select, los
bangs
y
los
mensajes
para
duplicarlos. Sustituyendo los nmeros
2, 3, 4 y 6 de los mensajes por 250,
333, 500 y 1000 conectaremos todos
los outlets de estos mensajes al cold
inlet de nuestro objeto metro. Mientras que el inlet de nuestro select duplicado
se conectara al outlet de nuestro random como podemos ver a continuacin.
Esta simple modificacin logro
hacer que nuestro parche no
solo cambie dinmicamente su
timbre sino que de igual forma
cambie la duracin de las notas
aleatoriamente.
Este parche finalmente nos
permitir entender las formas
bsicas de este lenguaje de
programacin con entorno grafico as como las ventajas de este tipo de
software. El aspecto final de nuestro parche ser este.
Hemos creado al final un generador aleatorio de notas y ritmos con sntesis
aditiva y con su propio control de volumen.

Lo ms interesante de todo es que


este parche puede crecer y crecer
hasta convertirse en algo tan complejo
como el usuario quiera.
Este
tutorial
es
meramente
introductorio, no olviden revisar la
documentacin completa de este
software as como de la raspberry pi
para poder extender al mximo las
posibilidades creativas para estas
nuevas tecnologas.
El verdadero progreso es el que pone
la tecnologa al alcance de todos
Henry Ford.

Apndice
Aqu podremos aprender cmo lograr instalar pure data extended desde la
terminal de raspberry y hacer que nuestro parche funcione de forma headless
sin necesidad de hacer nada ms que conectarlo a la alimentacin de 5v y a la
salida de audio de 3.5 mm.
Antes que nada prenderemos nuestro raspberry pi y lo conectaremos con
nuestro monitor o usando el servidor de acceso remoto xrdp (ver parte II).
Abriremos una terminal, iremos al directorio raz usando cd .. y ejecutaremos
los siguientes comandos.

Este comando ejecutara un programa de edicin de texto llamado nano dentro


de nuestra terminal, el cual abrir un archivo para poder aadir un nuevo
repositorio. En Linux los repositorios nos sirven como archivadores donde
nuestro sistema operativo busca los paquetes para instalar programas,
bsicamente ah estn los datos de todos los programas que podramos
instalar en nuestra raspberry pi.

Agregaremos o quitaremos el signo de # de la lnea que se puede ver en la


pantalla. Al terminar presionaremos ctrl + o, nos preguntara si deseamos hacer
los cambios y pondremos una y. Luego presionaremos ctrl + x para salir del
editor de texto nano.

Teclearemos el siguiente comando: sudo wget https://puredata.info/downloads/pdextended-0-43-3-on-raspberry-pi-raspbian-wheezy-armhf/releases/1.0/Pd-0.43.3extended-20121004.deb

El comando wget nos permitir bajar el paquete que contiene los datos para instalar un
programa. Para poder abrir el paquete usaremos el comando dpkg.
Lo instalaremos y procederemos al
paso ms importante.

Es necesario darle los permisos de ejecucin ms elevados a este programa ya


que para poder abrir los drivers de sonido y usar una prioridad de
procesamiento en tiempo real es necesario notificar al sistema.

Con esto tendremos nuestro programa de pure data extended instalado.


Para comenzar necesitaremos abrir nuestro parche de pure data o pure data
extended donde crearemos dos nuevos objetos loadbang y delay. Estos objetos
sern de suma utilidad ya que el loadbang mandara un bang al abrir el parche
lo cual nos permite inicializar todas aquellas partes del parche que necesiten
ser inicializados. Crearemos tambin un mensaje con el siguiente contenido ;
dsp 1.
Tambin usaremos el objeto delay que tras ponerle un argumento de 500
esperara 500 ml para mandar un bang. Esto lo haremos para darle tiempo al
sistema para inicializar los drivers de sonido antes de mandar el mensaje.

Este mensaje es de suma importancia ya que al ponerle ;


como
prefijo
estaremos
mandando
instrucciones
directamente al software de pure data. En este caso
mandaremos a que prenda la salida de audio o el DSP.
Haremos las conexiones como podemos ver en nuestro
parche de la derecha donde el loadbang ira conectado al
inlet del objeto delay, mientras que del obketo delay
tendremos conectados el mensaje a pure data y el toggle
del objeto metro. Esto lograra que al abrir el parche. Y
pasados 500 milisegundos se inicializara la salida de sonido
y el objeto metro.
Una vez terminado guardaremos nuestro parche como ejemplo1.pd en el
escritorio (Desktop), cerraremos pure data y abriremos una terminal.
Usaremos el comando pwd para saber en
que
directorio
nos
encontramos,
buscaremos el directorio /home/pi. Si no
estuviramos en ese directorio usaremos cd
/home/bin para ir a ese directorio. A
continuacin crearemos una carpeta llama
bin con el comando mkdir y nos moveremos a ella con el comando cd.
Crearemos un archivo de texto en
blanco con el editor de texto nano, esto abrir un archivo en blanco.

Guardaremos y saldremos del editor con ctrl + o y ctrl + x


En caso de estar usando pure data en vez de pure data extended deberemos
sustituit pd-extended con pd.
Para lograr que nuestro
script sea ejecutable ser necesario escribir este comando.
Para comprobar que nuestro script funcione pondremos en la terminal script_pd
y deberamos ver como la terminal empieza a inicializar el software de pure
data sin interfaz grfica y luego escucharemos nuestro parche funcionado.

Escribiremos la lnea justo despus de los comentarios (#) guardaremos y lo


cerraremos.
Esta ltima instruccin provocara que al reiniciar nuestra raspberry pi
automticamente se ejecutara nuestro script donde mandaremos a abrir
nuestro parche de pure data sin interfaz grfica y se prendera la salida de
sonido sin necesidad de ms interaccin por parte del usuario.
Para poder detener la ejecucin del parche abriremos una terminal y
teclearemos sudo killall puredata o sudo killall pd-extended en caso de estar
usando pure data extended.
Esto finaliza completamente nuestro tutorial, en este punto no necesitaremos
ms que el cable de alimentacin y unos audfonos o bocinas para poder usar
nuestro generador de sonidos aleatorios.
Adis y gracias por haber completado el tutorial.