Identificación y Datos del proyecto
Titulo: Controlador MIDI basado en Arduino
Autor: Sergio López Laín
Departamento: DIAC
Tutor: Lino García Morales
Tribunal
Presidente: Antonio Álvarez Vellisco
Vocal: Lino García Morales
Vocal Secretario: Antonio Mínguez Olivares
Director: Lino García Morales
Fecha de Lectura: 20 de Junio de 2013
I
AGRADECIMIENTOS
A mis padres, que me han apoyado siempre en todas mis decisiones y me han
animado siempre a estudiar y formarme.
A todos mis compañeros que he conocido a lo largo de este viaje en la universidad,
por todos esos momentos de biblioteca, salitas y como no, fiestas, sin ellos esto no hubiera
sido posible.
A mi tutor, Lino García, por descubrirme el mundo de Arduino y todos sus consejos.
A Francisco Cestelo, por su diseño de la carcasa del controlador, a Carlos Carrillo
(π), por sus consejos y ayuda.
A la escuela por todos los profesores que he tenido y los momentos inolvidables que
he vivido, una universidad pública y de todos.
II
RESUMEN
El presente proyecto tiene como objetivo la creación de un controlador MIDI
económico que haga uso de la tecnología actual, y partiendo de la idea del instrumento
clásico, el Theremin, desarrollado por Lev Serguéievich Termen. Para ello se ha dividido el
proyecto en dos principales bloques, el primero, hardware y el segundo, software.
En la parte del hardware, se explica cual ha sido la razón de la utilización del
microprocesador Arduino Uno, sus características técnicas y el uso de sensores de
ultrasonido, ya que proporcionan la característica de poder interactuar con el controlador a
través de gestos con las manos, al igual que un Theremin clásico. Se explica el montaje de
los dispositivos que conforman el controlador, así como la mejora realizada, con la
utilización de 4 de estos sensores, para dar más capacidades de interactuación con el
controlador MIDI. También se ve en este apartado, como se programa la tarjeta de
Arduino, para que se encargue de realizar medidas con los sensores y enviarlas por el
puerto serial USB.
En el apartado del software se da una introducción al entorno de programación
Max/MSP. Se ve el plug in desarrollado con este lenguaje, para poder comunicar el
controlador MIDI con un software de audio profesional (Ableton Live) y se explica con
detalle los bloques que conforman el plug in de control de sensores y como es transformada
la información que entrega el microprocesador Arduino por el puerto USB, en datos MIDI.
III
También, se da una explicación sobre el manejo correcto del controlador a la hora de
mover las manos sobre los sensores y de donde situar el instrumento para que no se
produzcan problemas de interferencias con las señales que envían los ultrasonidos.
Además, se proporciona un presupuesto del coste de los materiales, y otro del coste del
desarrollo realizado por el ingeniero.
IV
ABSTRACT
The aim of this Project is the creation of an economical MIDI controller that uses
nowadays technology and that is based on the idea of the Theremin, a classical instrument
conceived by Lev Serguéievich Termen. In order to accomplish this, the project has been
divided into two sections: hardware and software.
The hardware section explains why the microprocessor Arduino Uno has been chosen,
sets out its technical specifications and the use of ultrasonic sensors. These sensors enable the
user to interact with the controller through hand gestures like the Theremin. The assembly of
the devices is exposed as well as the improvements made with the use of four of these
sensors to offer more interactive capabilities with the MIDI controller. The Arduino single-
board programming that performs the measurements with the sensors and sends these
measurements through the USB serial port is also explained here.
The software section introduces Max/MSP programming environment as well as the
plug in developed with this language that connects the MIDI controller with professional
audio software (Ableton Live). The blocks that build the sensor controller plug in are
explained in detail along with the way the Arduino delivers the information through the USB
port into MIDI data.
In addition, an explanation of the correct handling of the MIDI controller is given
V
focusing on how the user should move his hands above the sensors and where to place the
instrument to avoid interference problems with the signals sent. Also, a cost estimation of
both materials and engineering is provided.
VI
ÍNDICE GENERAL I. PLANTEAMIENTO DEL PROYECTO
1 Capitulo 1: Introducción…………...…………………………………………………….. 2
1.1 Introducción general, motivación y objetivo del proyecto…………………………… 2
1.2 Herramientas de trabajo……...……………………………………………………… 3
1.3 Estado del arte………………………………………………………………………. 3
1.3.1 Historia………………………………………………………...……………. 3
1.4 Tecnologías actuales………………………………………………………………… 5
II. HARDWARE Y SOFTWARE
2 Capitulo 2: Hardware…………………...………………………………………………... 9
2.1 Justificación del material utilizado………………………………………………....… 9
2.2 ¿Qué es Arduino? …………………………………………………………………..10
2.2.1 Modelo de placa de Arduino……....………………………………………... 11
2.2.2 Entradas y salidas………………………………………………………...… 14
2.3 Programación……………………………………………………………………..... 16
2.4 Montaje del hardware……………………………………………………………..... 19
2.4.1 Material del controlador……………………………………………………. 19
2.4.2 Esquema del montaje de los componentes…………………………………. 20
2.5 ¿Cómo programar Arduino? ………………………………………………………. 21
2.6 Funcionamiento sensores de ultrasonido………………...……………………….… 24
3 Capitulo 3: Software………...…………………………………………………………... 28
3.1 Introducción……………………………………………………………………..… 28
3.2 Justificación del software elegido………………………………………………….... 29
VII
3.3 Max/MSP………………………………………………………………………….. 30
3.3.1 Historia y precedentes…………………………………………………….... 30
3.3.2 Interfaz e introducción al manejo de Max/MSP………………………….… 32
3.3.3 Programación orientada a objetos……....………………………………...… 34
3.4 MIDI en Max/MSP………..………………………………………………………. 34
3.4.1 ¿Qué es el MIDI? ………………………………………………………….. 34
3.4.2 Objetos MIDI en Max/MSP……………………………………………….. 35
3.5 Plug in de control para los sensores de ultrasonido……………...…………………. 37
3.6 Importar el plug in a Ableton Live……………………………………………….… 49
3.7 Instrumentos Virtuales……………………………………………………………... 52
3.7.1 Configuración envolvente de onda en un instrumento virtual…..…………... 53
4 Capitulo 4: Manejo del controlador…………………………………………….……….. 56
4.1 Introducción……………………………………………………………………….. 56
4.2 Conexión y manejo del controlador MIDI…………………………………………. 56
III. CONCLUSIONES Y LINEAS FUTURAS
5 Capitulo 5: Conclusiones y líneas futuras……………………………………………...… 61
5.1 Conclusiones finales del controlador MIDI con Arduino…………………………... 61
5.2 Líneas futuras de desarrollo……………………………………………………….... 63
IV PRESUPUESTOS
6 Capitulo 6: Presupuestos……………………………………………………………...… 66
6.1 Costes económicos del proyecto………………………………………………….... 66
6.1.1 Costes de materiales………………………………………………………... 67
6.1.2 Costes de personal…………………………………………………………. 68
6.1.3 Presupuesto total………………………………………………………….... 68
VIII
ANEXOS
ANEXO I: Ficha técnica sensor HC-SR04…………………………………………....… 70
ANEXO II: Normativa código abierto…………………………………………………. 72
ANEXO III: Código Arduino…………………………………………………………... 73
ANEXO IV: Montaje controlador MIDI e imágenes reales…………………………….. 75
ANEXO V: Controlador con carcasa….………………………………………………... 77
ANEXO VI: Activación del bus IAC Driver……………………………….………….... 79
ANEXO VII: Introducción a Ableton Live y su configuración…………………………. 81
ANEXO VIII: Tabla de numeración de notas MIDI……………………..…………….. 87
REFERENCIAS
Referencias………………………………………………………..…………………….. 89
IX
ÍNDICE DE FIGURAS
Figura 1: León Théremin con su invento……………………………………………………. 4
Figura 2: Diseño básico de Lev Serguéievich Termen……………………………………….. 5
Figura 3: Theremin óptico…………………………………………………...………………... 6
Figura 4: D-Bean de Roland………………………………………………………………..... 6
Figura 5: Cámara Kinect…………………………………………………………………..… 6
Figura 6: Captación de movimiento Ableton Live………………………………………....… 6
Figura 7: Theremin por ultrasonido………………………………...…………………………. 7
Figura 8: Imagen esquemática de Arduino y sus partes……………………………………... 12
Figura 9: Imagen real de Arduino Uno y sus partes…………………………………………. 13
Figura 10: Icono Arduino………………………………………………………………..… 16
Figura 11: Hoja de trabajo en blanco Arduino…………………………………………....… 16
Figura 12: Elegir la tarjeta………………………………………………………………….. 17
Figura 13: Elegir puerto serial…………………………………………………………….... 17
Figura 14: Sensor HC-SR04………………………………………………………………... 19
Figura 15: Led Rojo……………………………………………………………………...… 19
Figura 16: Led Verde…………………………………………………………………….… 19
Figura 17: Resistencia 1 KΩ………………………………………………………………... 19
Figura 18: Resistencia 220 Ω……………………………………………………………….. 19
Figura 19: Interruptor on-on…………………………………………………………..…….. 20
Figura 20: Placas protoboard…………………………………………………………………. 20
Figura 21 : Montaje del controlador, diseñado con Fritzing…………………………....…… 20
Figura 22: Compilación en Arduino…………………………………………………...…… 22
X
Figura 23: Mensaje de compilación correcta………………………………………………... 22
Figura 24: Cargar código en la tarjeta Arduino…………………………………………...… 22
Figura 25: Monitor de Arduino…………………………………………………………….. 23
Figura 26: Dimensiones sensor HC-SR04………………………………………………..… 24
Figura 27: Incertidumbre angular…………………………………………………………... 25
Figura 28: Efecto Crosstalk…………………………………………………………………. 26
Figura 29: Gráfico cliente-servidor………………………………………………………… 28
Figura 30: Max/MSP, documento en blanco……………………………………………..… 32
Figura 31: Menú herramientas gráficas Max/MSP…………………………………………. 32
Figura 32: Empezando por la izquierda, el primer icono (forma de candado o cerrojo) cambia a
modo edición. El tercer icono (forma de pantalla con gráfica) cambia a modo presentación.. 33
Figura 33: Ventana MIDI Setup…………………………………………………………..... 36
Figura 34: Plug in para Ableton Live, desarrollado con Max/MSP y Max4Live en modo
presentación……………………………………………………………………………….. 38
Figura 35: Patch completo del plug in en modo edición…………………..………………..… 40
Figura 36: Bloque A del patch en modo edición…………………………………………….. 41
Figura 37: Bloque B del patch, en modo edición……………………………………………. 43
Figura 38: Bloque C del patch, en modo edición……………………………………………. 48
Figura 39: Carpeta Max MIDI Effect de Ableton Live………………………………………. 49
Figura 40: Canal MIDI, con plug in de Max4Live en blanco insertado……………………..... 50
Figura 41: Interfaz de trabajo Max4Live…………………………………………………… 50
Figura 42: Presentación del plug in en Max4Live……………………………………………. 51
Figura 43: Interfaz Ableton Live con plug in de Sensores………………….……………...… 52
Figura 44: Envolvente de onda………………....…………………………………………... 53
XI
Figura 45: Envolvente óptima para el uso de sensores ultrasonido…………………………. 54
Figura 46: Suma de envolventes y en rojo envolvente virtual………………………………. 55
Figura 47: Cara frontal de la ficha técnica del sensor HC-SR04…………………………….. 70
Figura 48: Cara trasera de la ficha técnica del sensor HC-SR04…………………………….. 71
Figura 49: Montaje del controlador, imagen de mayor tamaño……………………………... 75
Figura 50: Imagen frontal del controlador MIDI de ultrasonidos………………………...… 76
Figura 51: Imagen trasera del controlador MIDI de ultrasonidos…………………………... 76
Figura 52: Imagen frontal controlador con carcasa………………………………………..... 77
Figura 53: Imagen detalle controlador con carcasa……………………………………...….. 77
Figura 54: Imagen vertical controlador con carcasa……………………………………….... 78
Figura 55: MIDI window………………………………………………………………...… 79
Figura 56: Activar IAC Dirver…………………………………………………………….... 80
Figura 57: Interface Ableton Live………………………………………………………….. 81
Figura 58: Ventana de Dispositivos……………………………………………………….... 82
Figura 59: Canales………………………………………………………………………..… 82
Figura 60: Preferencias Ableton Live………………………………………………………. 83
Figura 61: Cargar plug ins en canales MIDI…………………………………………………. 84
Figura 62: MIDI to IAC Driver……………………………………………………………. 85
Figura 63: Massive recibe señal del canal Sensors…………………………………………… 85
Figura 64: Ruteo de mensajes CC de los sensores de ultrasonido…………………………... 86
XII
ÍNDICE DE TABLAS Tabla 1: Características técnicas Arduino Uno……………………………………………… 14
Tabla 2: Costes de los Materiales………………………………………………………….... 67
Tabla 3: Costes de Personal…………………………………………………………...…… 68
Tabla 4: Costes totales……………………………………………………………………... 68
Tabla 5: Numeración correspondiente a la nota MIDI…………………………………...… 87
PARTE I
Planteamiento del proyecto
2
Capitulo 1
Introducción
1.1 Introducción general, motivación y objetivo del proyecto.
La música es una rama del arte que ha ayudado al ser humano a reflejar sus
emociones, estados de animo e incluso a representar paisajes.
Un instrumento muy característico a la hora de crear un ambiente de suspense y, por
que no, futurista, era y es el utilizado Theremin, instrumento inventado por el físico y
músico Lev Serguéievich Termen (también conocido como León Théremin) en 1919[1]. Su
apariencia es la de un dispositivo con dos antenas, una vertical, situada a la derecha, y otra
horizontal, situada a la izquierda, la forma de tocar éste instrumento es por medio de las
dos manos, acercándolas y alejándolas de las antenas sin tocarlas. Dicho instrumento fue
utilizado tanto en orquestas, como en películas de terror y ciencia ficción de los años 40 y
50. Posteriormente muchos grupos de música han hecho uso de sus características sonoras.
La finalidad de este proyecto, es la creación de un Theremin mediante la tecnología
actual y económico. Que sea un controlador digital, y conectado por USB a un ordenador
permita controlar un instrumento virtual (VST) a través de un plug in de síntesis, usando el
Parte I: Planteamiento del proyecto Capitulo 1 Introducción
3
protocolo de comunicación MIDI (Musical Instrument Digital Interface), y al igual que con
un Theremin, se pueda interactuar en la creación musical, por medio de gestos con las
manos.
1.2 Herramientas de trabajo.
La principal herramienta es el microprocesador Arduino, del cual veremos más
adelante sus características y para ampliar toda la información que se desee en [2]. La
captación de la posición de nuestras manos, lo hacen unos sensores de ultrasonido. Y para
interpretar la información MIDI que llega al ordenador, se usa un software profesional de
audio, que tiene un plug in de síntesis que es el encargado de traducir los datos MIDI en
sonidos.
1.3 Estado del arte.
1.3.1 Historia.
El Theremin, originariamente denominado eterófono, inventado por el físico y músico
Lev Serguéievich Termen (también conocido como León Théremin) en 1919 y que
posteriormente después de estallar la guerra civil Rusa, Lev fue a Estados Unidos donde en
1928 patentó el instrumento y concedió derechos de producción a RCA1. Aquí es donde
conoce a Clara Rockmore, quien se convertirá en una de las mejores Thereministas, que
encuentra en el Theremin como satisfacer el poder hacer música, ya que ella era ex
violinista, que debido a una lesión en las articulaciones dejó de tocar[3].
1RCA[4]: Radio Corporation of America, es una empresa fundada en 1919, que se encarga de la fabricación de productos electrónicos, tales como televisores, DVD e innovaciones tecnológicas.
Parte I: Planteamiento del proyecto Capitulo 1 Introducción
4
Fue el primer instrumento musical electrónico con
grandes interpretes y repertorios para conciertos escritos
únicamente para él, además de su gran repercusión en el cine
de ciencia ficción y de terror.
A continuación, se explica su funcionamiento de una
forma sencilla y sin profundizar en cuestiones o apartados
técnicos, ya que para el entendimiento del proyecto no es
necesario estos conocimientos de un Theremin.
El sonido del Theremin se produce entre circuitos
electrónicos de alta frecuencia que emplean osciladores. Uno
de los circuitos opera con una frecuencia constante, en tanto
que otro circuito oscilador es excitado por los movimientos
de la mano derecha del ejecutante al ser captados por la
antena del tono, que emite un campo electromagnético.
La diferencia entre ambas oscilaciones produce un fenómeno llamado heterodino2.
Del cual resulta una señal que es amplificada y llevada a un sonido audible, para luego ser
procesada por el circuito controlador de volumen que funciona de forma similar.
Cuando la mano del ejecutante se acerca gradualmente a la antena, afecta el campo
magnético, haciendo que las oscilaciones sean cada vez más rápidas, por lo que se hace
más agudo el sonido del instrumento; a medida que la mano retrocede, disminuye la
capacidad eléctrica y el sonido se torna más grave hasta desaparecer por completo.
Moviendo la mano hacia delante o hacia atrás, en una distancia aproximada de 60 cm a lo
largo de un teclado imaginario suspendido en el aire (que comprende el campo
electromagnético de la antena), puede lograrse un rango alrededor de cinco octavas,
dependiendo de la afinación del instrumento.
2 Heterodino[5]: En telecomunicación el término heterodino tiene los siguientes significados: 1. Generar nuevas frecuencias mediante la mezcla de dos o más señales en un dispositivo no lineal, tal como un diodo, una válvula termoiónica un transistor. 2. La frecuencia producida por la mezcla de dos o más señales en un dispositivo no lineal se denomina heterodina.
Figura 1: León Théremin con su invento.
Parte I: Planteamiento del proyecto Capitulo 1 Introducción
5
Existen Theremines con distinto tipo de timbre o sonido. Pero el mas característico y
reconocido es una mezcla entre el violín, violonchelo y la voz humana dependiendo mucho
de la forma de ejecución y el vibrato dado por el ejecutante (las vibraciones rápidas y
cortas de la mano hacen producir un singular sonido de voz femenina o violín).
El volumen varía por el movimiento de la mano izquierda del instrumentista sobre la
segunda antena; decrece cuando se comienza a acercar, aproximadamente a 30 cm , hasta
hacerlo inaudible. Movimientos rápidos con ambas manos permiten cambios de una nota a
otra sin deslizamientos a través de las frecuencias intermedias[6].
Figura 2: Diseño básico de Lev Serguéievich Termen.
1.4 Tecnologías actuales.
La industria de los instrumentos electrónicos ha avanzado desde entonces de una
manera asombrosa, un hermano del Theremin se podría decir que es el sintetizador, pero
vamos a centrar el estudio en instrumentos electrónicos en que la manera de interactuar con
ellos, sea mediante el movimiento de las manos sin tocar nada físico.
Parte I: Planteamiento del proyecto Capitulo 1 Introducción
6
• Theremin óptico:
Éste Theremin es muy simple y básico, dispone de una
fotorresistencia, en sustitución de la antena que tiene el original a la
hora de hacer que oscile la frecuencia, por lo que si la
fotorresistencia recibe más luz, se obtendrá una nota más aguda, de
lo contrario será más grave.
• D-Beam de Roland:
El controlador D-Beam esta integrado en algunos
dispositivos de la gama Roland, está compuesto por dos
sensores de infrarrojos independientes, denominados Beam-L y
Beam-R, al mover la mano sobre estos sensores se varia su
rango de captación y el usuario puede modificar valores de unos
efectos que pueden ser seleccionados en un panel de control.
• Kinect:
Éste modelo hace uso de la cámara desarrollada por
Microsoft, Kinect, que es capaz de reconocer los espacios en
tres dimensiones, es decir, alto, ancho y profundo, o , x, y, z,
de una forma más matemática. Con esto, el
programador pode registrar el movimiento de la mano
o cualquier parte del cuerpo y asignarlo a un
instrumento, y dependiendo de las coordenadas en las
que se mueva la mano, producirá un efecto sonoro.
Figura 6: Captación de movimiento Ableton Live.
Figura 3: Theremin óptico.
Figura 4: D-Beam de Roland.
Figura 5: Cámara Kinect.
Parte I: Planteamiento del proyecto Capitulo 1 Introducción
7
• Theremin por ultrasonido:
Aquí es donde se basa la idea del proyecto, mediante el
uso de sensores de ultrasonidos, al mover la mano sobre estos,
obtendrán las medidas de la distancias y con ello datos para
poder producir efectos sonoros, como el cambio de notas y/o
volumen. Figura 7: Theremin por ultrasonido.
En internet se pueden encontrar cantidad de comunidades de aficionados al
instrumento Theremin, exponiendo modificaciones sencillas del modelo de León Théremin,
con sus planos y dispositivos electrónicos necesarios para su construcción y manejo.
Una vez visto todo esto, se ha hecho uso de la tecnología de Arduino, ya que al ser un
microprocesador que se programa con código libre y de un precio económico, se ajusta a
las necesidades del proyecto, y con sensores de ultrasonido se consigue poder imitar la
forma de manejar nuestro instrumento a la de un Theremin; dotándole de más de un sensor
se consigue poder controlar más parámetros que las del modelo básico de León Théremin.
En cuanto al software que se encargará de traducir las medidas que hagan los sensores en
MIDI, en el capitulo 3 se explicará con detalle la elección de éste, y la configuración para
su uso con el controlador.
PARTE II
Hardware y Software
9
Capitulo 2
Hardware
2.1 Justificación del material utilizado.
Para este proyecto se ha decido la utilización del microprocesador Arduino, debido a
su bajo coste y grandes prestaciones que ofrece. La forma de programar dicho
microprocesador, se realiza con un lenguaje sencillo y flexible tanto para principiantes
como para personas con conocimientos avanzados, y está basado en el lenguaje de
Processing3. El software Arduino está publicado bajo una licencia libre y preparado para
ser ampliado tanto por programadores principiantes como experimentados. El lenguaje
puede ampliarse a través de librerías de C++.
El entorno es multiplataforma, es decir, soporta los sistemas operativos Windows,
Macintosh OSX y Linux.
3 Processing [7]: Lenguaje de programación sencillo y de código abierto basado en Java.
Parte II: Hardware y Software Capitulo 2 Hardware
10
El hardware es ampliable y de código abierto, los usuarios pueden acceder a los
planos del módulo y pueden desde, ampliarlo, hasta construirse su placa propia u
optimizarlo. En el siguiente punto se explica con mayor detalle, el modelo de placa
Arduino utilizada y sus partes.
La placa Arduino por sí sola no es suficiente para interactuar con el mundo real. En
este proyecto se utilizan sensores de ultrasonido; en este caso se ha usado el modelo HC-
SR04, que por su bajo coste y capacidades físicas del dispositivo, se ajusta a las
necesidades del proyecto. En anexos se adjunta su ficha técnica.
El resto del material utilizado son diodos, resistencias, interruptores y cable de
corriente y señal, que se ve en este capitulo 2, en el apartado 2.4 de montaje el dónde y
cómo van situados.
2.2 ¿Qué es Arduino?
“Arduino es una herramienta para hacer que los ordenadores puedan
sentir y controlar el mundo físico a través de tu ordenador personal. Es una
plataforma de desarrollo de computación física (physical computing) de
código abierto, basada en una placa con un sencillo microcontrolador y un
entorno de desarrollo para crear software (programas) para la placa.
Puedes usar Arduino para crear objetos interactivos, leyendo datos de
una gran variedad de interruptores y sensores y controlar multitud de tipos de
luces, motores y otros actuadores físicos. Los proyectos de Arduino pueden
ser autónomos o comunicarse con un programa (software) que se ejecute en
tu ordenador (ej. Flash (Adobe), Processing, MaxMSP, PureData, Python,
etc.) formando complejas arquitecturas cliente-servidor. La placa puedes
montarla tu mismo (DIY, DoItYourself) o comprarla ya lista para usar, y el
software de desarrollo es abierto y lo puedes descargar gratis e instalarlo en
cualquier plataforma.
Parte II: Hardware y Software Capitulo 2 Hardware
11
El lenguaje de programación de Arduino es una implementación de
Wiring, una plataforma de computación física parecida, que a su vez se basa
en Processing, un entorno de programación multimedia.”[8]
Aunque hereda ciertas características del lenguaje C está diseñado para que sea una
herramienta de aprendizaje y prototipado simple y potente.
2.2.1 Modelo de Placa de Arduino.
Existen diferentes versiones del mismo proyecto (Véase [2] donde se puede encontrar
toda la información, las diferentes versiones y modelos de Arduino). En este proyecto se
utiliza el modelo Uno: la tarjeta más popular de Arduino hoy día. Esta placa está basada en
el microcontrolador ATmega328 de Atmel. Tiene 14 pines de entrada/salida digital (de los
cuales 6 pueden ser usados como salidas Pulse-width modulation (PWM)), 6 entradas
analógicas, un oscilador de cuarzo a 16 MHz, una conexión USB estándar, un conector
para alimentación, una cabecera In Circuit Serial Programming4 (ICSP), y un botón de
reset. Simplemente se conecta a un ordenador con un cable USB o enchufar con un
adaptador AC/DC o batería para comenzar[9].
4 In Circuit Serial Programmin: Es el método de acceso a toda memoria de un programa de un procesador atmel. Sirve para poder programar el bootloader de Arduino. El bootloader es el programa básico que escucha el puerto serie y así poder descargar[5].
Parte II: Hardware y Software Capitulo 2 Hardware
12
Contiene todo lo necesario para realizar proyectos de bajo coste y con gran
efectividad, puede ser ampliada con multitud de complementos; a continuación se ven sus
partes:
Figura 8: Imagen esquemática de Arduino y sus partes.
Comenzando por la parte superior y en sentido de las agujas del reloj de la placa
observamos:
• AREF. Referencia de voltaje para las entradas analógicas.
• Tierra digital.
• Terminales digitales 2-13.
• Terminales digitales 0-1/ E/S serie - TX/RX, Estos pines no se pueden utilizar como
e/s digitales si se utiliza comunicación serie.
• Reset S1. Pon esta línea a low para resetear el microcontrolador. Utilizada típicamente
para añadir un botón de reset a shields5 que bloquean el de la placa principal.
• Programador serie en circuito, In-circuit Serial Programmer (ICSP).
• Microcontrolador ATmega328 (utilizado en la mayoría de las placas Arduino).
5 Shields: Las shields son placas que pueden ser conectadas encima de la placa Arduino extendiendo sus capacidades. Las diferentes shields siguen la misma filosofía que el conjunto original: fáciles de montar, y baratas de producir [29].
Parte II: Hardware y Software Capitulo 2 Hardware
13
• Terminales de entrada analógica 0-5.
• Terminales de alimentación y tierra.
• Entrada de alimentación externa.
• Selector de alimentación externa o por USB (coloca un jumper en los dos pines mas
cercanos de la alimentación que se quiera) - SV1.
• USB (utilizado para subir programas a la placa y para comunicaciones serie entre la
placa y el ordenador; puede utilizarse como alimentación de la placa).
A continuación se muestra una imagen real de la tarjeta Arduino Uno, usada en este
proyecto:
Figura 9: Imagen real de Arduino Uno y sus partes.
Parte II: Hardware y Software Capitulo 2 Hardware
14
En la tabla 1 se muestran los valores técnicos de Arduino Uno:
Tabla 1: Características técnicas Arduino Uno .
Característica Descripción
Microcontrolador ATmega328
Voltaje de operación 5 V
Tensión de entrada (recomendada) 7 – 12 V
Tensión de entrada (límite) 6 – 20 V
Pines digitales de E/S 14 (de los cuales 6 proveen salidas PWM)
Pines de entrada analógicos 6
Corriente DC por pin E/S 40 mA
Corriente DC para pin 3.3 V 50 mA
Memoria Flash 32 KB (de los cuales 0.5 KB usados para bootloader)
SRAM 2 KB
EEPROM 1 KB
Frecuencia de reloj 16 MHz
2.2.2 Entradas y Salidas.
Cada uno de los 14 pines digitales del Uno puede ser usado como entrada o salida,
usando funciones pinMode(), digitalWrite() y digitalRead()6. Operan a 5 voltios. Cada pin
puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia interna
(desconectada por defecto) de 20-50 KΩ. Además, algunos pines tienen funciones
especiales:
6 Son funciones usadas en el lenguaje de programación de Arduino, se puede encontrar toda la información en [11].
Parte II: Hardware y Software Capitulo 2 Hardware
15
Serial: 0 (Rx) y 1 (Tx). Usados para recibir (Rx) y transmitir (Tx) datos TTL en
serie. Estos pines están conectados a los pines correspondientes de ATmega8U2 USB-a-
TTL Serie.
Interruptores externos: 2 y 3. Estos pines pueden ser configurados para disparar un
interruptor en un valor bajo, un margen creciente o decreciente, o un cambio de valor.
PWM: 3, 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la función
analogWrite()7.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan comunicación
SPI8, la cual, aunque proporcionada por el hardware subyacente, no está actualmente
incluida en el lenguaje Arduino.
LED: 13. Hay un led empotrado conectado al pin digital 13. Cuando el pin está a
valor high, el led está encendido, cuando el pin está a low, está apagado.
El Uno tiene 6 entradas analógicas, cada una de las cuales proporciona 10 bits de
resolución (por ejemplo 1024 valores diferentes). Por defecto miden 5 voltios desde tierra,
aunque es posible cambiar el valor más alto de su rango usando el pin ARF y algún código
de bajo nivel. Además, algunos pines tienen funcionalidad especializada:
Reset: Pone esta línea a low para resetear el microcontrolador. Típicamente usada
para añadir un botón de reset a dispositivos que bloquean a la placa principal.
Toda esta información se ha obtenido de [2].
7 Función usada en el lenguaje de programación de Arduino, se puede encontrar toda la información en [11]. 8 El Bus SPI o Serial Peripheral Interface es un estándar de comunicaciones, usado principalmente para la transferencia de información entre circuitos integrados en equipos electrónicos. El bus de interfaz de periféricos serie o bus SPI es un estándar para controlar casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie regulado por un reloj [12].
Parte II: Hardware y Software Capitulo 2 Hardware
16
2.3 Programación.
El microcontrolador se programa por medio del lenguaje de Arduino, cuyo software
puede descargarse de forma gratuita de [13], la última versión, donde dependiendo del
sistema operativo que se use, ofrece distintos enlaces de descarga del software. Una vez
descargado el archivo para el entorno de trabajo del ordenador, se instalará siguiendo las
indicaciones que da el instalador. Si existe algún tipo de duda en [2], se puede obtener toda
la información necesaria. Una vez completados todos los pasos, conectaremos la placa a la
computadora por el puerto USB y veremos el led on encenderse; a continuación se abre el
programa haciendo click en el icono de Arduino:
Figura 10: Icono Arduino.
El entorno de trabajo de Arduino es muy similar al de Processing, seguidamente en la
figura 11, se ve lo que al abrir el programa se encuentra el usuario, una hoja en blanco de
trabajo:
Figura 11: Hoja de trabajo en blanco Arduino.
Parte II: Hardware y Software Capitulo 2 Hardware
17
El siguiente paso para empezar a trabajar con la placa Arduino Uno, es configurar el
software para que sea capaz de leer nuestro microcontrolador y elegir el puerto de
comunicación, que en este caso es el puerto USB del ordenador. En la figura 12, se ve
como se elige la tarjeta, la cual se hace uso en el proyecto:
Figura 12: Elegir la tarjeta.
Y seguidamente elegir el puerto serial de comunicación entre, la placa Arduino y el
ordenador, tal y como muestra la figura 13, que se muestra a continuación:
Figura 13: Elegir puerto serial.
Parte II: Hardware y Software Capitulo 2 Hardware
18
Una vez hecho esto, se necesita de una biblioteca9 especial para poder leer las
medidas que hacen los sensores de ultrasonido que están en el montaje del controlador. La
biblioteca que se necesita para el proyecto se llama NewPing, la cual ha sido desarrollada
por Tim Eckel, usuario de Arduino, y al ser código abierto ha ido siendo mejorada por
otros usuarios, y pudiéndose hacer uso de esta biblioteca libremente, para el trabajo de
cualquiera. Siempre y cuando se cumplan las normas del código abierto, que en los anexos
se adjuntan dichas normas. La biblioteca se puede descargar de [14].
Se descarga la biblioteca y se descomprime. Debería localizarse en una carpeta
propia, y normalmente, contener dos archivos, uno con extensión .h y otro con extensión
.cpp. Se abre la carpeta sketchbook de Arduino, si ya existe una carpeta llamada libraries,
se coloca la carpeta de la biblioteca ahí dentro. Reiniciar el IDE10 de Arduino (reiniciar el
programa), para encontrar la nueva biblioteca, en el menú Sketch > Import Library[15].
Entonces, ya se ha puesto a punto el entorno de trabajo para programar el
microcontrolador Arduino. Pero antes de comenzar a introducir código se tiene que hacer el
montaje de todo el hardware, para que una vez se conecte por el puerto serial y se cargue el
código en la tarjeta, se pueda visualizar en el monitor de Arduino las medidas de las
distancias que realizan los sensores de ultrasonido del controlador. En el siguiente punto
del capitulo 2, se ve como realizar el montaje con los sensores de ultrasonido, la placa de
Arduino y demás componentes que forman el controlador.
9 Bibliotecas Arduino: Proveen de funcionalidad a el código de programación, por ejemplo cuando se usa un hardware o al manipular datos [15]. 10 IDE: siglas del término inglés Integrated Development Environment que se traduce como Sistema de Desarrollo Integrado. En programación un IDE es un programa usado para desarrollar otros programas.
Parte II: Hardware y Software Capitulo 2 Hardware
19
2.4 Montaje del hardware.
2.4.1 Material para el controlador.
En primer lugar, se va a presentar el material utilizado para la construcción del
controlador; es el siguiente:
• Tarjeta Arduino Uno.
• 4 sensores de ultrasonido HC-SR04.
Figura 14: Sensor HC-SR04.
• 6 diodos led. 2 rojos 4 verdes.
• 6 resistencias, 2 de 1 KΩ y 4 de 220 Ω.
Figura 15: Led Rojo. Figura 16: Led Verde.
Figura 17: Resistencia 1 KΩ. Figura 18: Resistencia 220 Ω.
Parte II: Hardware y Software Capitulo 2 Hardware
20
• 4 interruptores on-on.
Figura 19: Interruptor on-on .
• 2 placas protoboard.
Figura 20: Placas protoboard .
• Cable fino de cobre.
• Estaño y soldador.
2.4.2 Esquema del montaje de los componentes.
En la figura 21, se puede ver el montaje del controlador realizado con el software
gratuito Fritzing, el cual se puede descargar de [16]:
Figura 21 : Montaje del controlador, diseñado con Fritzing.
Parte II: Hardware y Software Capitulo 2 Hardware
21
Aquí se observa la disposición de los 4 sensores, que harán la función de antenas de
un Theremin clásico, con la ventaja de que aquí son 4 posibles antenas y no sólo una. la
tarjeta Arduino va situada en el centro para que la distancia de conexionado y el envío de
corriente sea simétrico en el controlador. Los leds rojos, indican que el controlador está
conectado a el ordenador y listo para su uso, los leds verdes indican que ese sensor está
encendido, el usuario puede apagarlo con los interruptores situados bajo cada sensor.
En anexos se adjuntan unas imágenes del controlador real, una imagen frontal y una
trasera, donde se pueden observar las soldaduras realizadas, y listo para la presentación
final e introducir dentro de su carcasa, además de una imagen de mayor tamaño de la figura
21.
2.5 ¿Cómo programar el microprocesador Arduino?
Cuando se tiene el montaje de los componentes del controlador, el siguiente paso es
conectarlo vía serial, es decir, por el puerto USB al ordenador, así se puede cargar el código
en el microprocesador, para que Arduino sepa interpretar e interactuar con sus
componentes con el medio exterior que le rodea. El lenguaje de programación es sencillo, y
se asemeja mucho a Processing. Una vez se ha instalado la biblioteca NewPing, visto en el
punto 2.3, se abre el entorno de programación Arduino y en Archivo > Ejemplos >
NewPing, se tiene una gran variedad de códigos de ejemplo realizados por el autor de la
biblioteca, y muy útiles para los usuarios. Para el código utilizado en el proyecto, se ha
basado en uno que ofrece la biblioteca NewPing como ejemplo, pero con varias
modificaciones para conseguir que se ajuste en el número de sensores de ultrasonido que se
usa (un total de 4), que envíe por serial las medidas realizadas (entre un objeto y el sensor),
sin ningún otro tipo de caracteres, que no sean salvo números enteros, y el alcance
máximo sea de 30 cm. valor óptimo para que no se crucen las señales impulsivas de los
sensores próximos. El código se adjunta en los anexos, con las explicaciones de las
funciones utilizadas.
Parte II: Hardware y Software Capitulo 2 Hardware
22
Para cargar el código hay que seguir los siguientes pasos:
• En primer lugar verificar que no hay error alguno en el código, esto se hace
dado click en el icono que en la figura 22 se ha marcado en rojo:
Figura 22: Compilación en Arduino.
Seguidamente si no hay ningún error en el código, se obtiene en la parte
inferior de la interface de programación, el siguiente mensaje de Arduino:
Figura 23: Mensaje de compilación correcta.
• Ahora está todo listo para subir el código al microprocesador, para ello se
hace click en el icono marcado en rojo en la figura 24:
Figura 24: Cargar código en la tarjeta Arduino.
Parte II: Hardware y Software Capitulo 2 Hardware
23
Si Arduino no muestra ningún mensaje de error, el código ya está almacenado
en el microprocesador de la tarjeta y listo para trabajar con las mediciones que
realicen los 4 sensores que tiene el controlador.
• Para poder visualizar las medidas en tiempo real que realizan los sensores con
un objeto, que en este caso serán las manos del usuario, se tiene que abrir el
monitor de Arduino, en la figura 25 se muestra donde se debe hacer click
marcado en rojo, y la ventana del monitor de Arduino con las medidas que
están siendo enviadas, tener en cuenta que las indicaciones del número de
sensor han sido sobrepuestas en la imagen para un mejor entendimiento y no
aparecerán en ningún caso real:
Figura 25: Monitor de Arduino.
Completada esta fase, se tiene preparado el dispositivo para hacer mediciones en
tiempo real con los 4 sensores funcionando al unísono, pero antes de terminar el capitulo 2,
y comenzar con el software que interpretará estas medidas para convertirlas en MIDI, se
verá el funcionamiento de los sensores de ultrasonidos en el siguiente punto.
Parte II: Hardware y Software Capitulo 2 Hardware
24
2.6 Funcionamiento sensores de ultrasonido.
Para un mejor entendimiento de las capacidades que tiene el controlador MIDI por
sensores de ultrasonidos que presenta este proyecto, es necesaria la comprensión de la
forma de trabajar de los sensores de ultrasonido. Y en particular el modelo utilizado, los
HC-SR04.
Figura 26: Dimensiones sensor HC-SR04.
La mayoría de los sensores de ultrasonido de un coste económico, se basan en la
emisión de un pulso de ultrasonido en el que la zona de acción tiene forma de lóbulo o
cónica. Midiendo el tiempo que transcurre desde que fue emitido el sonido y la recepción
del eco, se puede concretar la distancia a la que se encuentra el objeto, en el que se ha
producido la reflexión de la onda sonora. Gracias a la siguiente fórmula (2.1) se obtiene la
distancia:
𝑑 =12𝑉𝑡 𝑚. (2.1)
En donde V es la velocidad del sonido en el aire y t es el tiempo que transcurre desde
la emisión y la recepción de la onda sonora. El modelo HC-SR04 emite un ultrasonido con
una frecuencia de 40 KHz. en el instante 0, posteriormente es reflejada por algún objeto, y
el sensor recibe la onda que es convertida en impulsos eléctricos. Este periodo de tiempo es
llamado cycle period. Y el fabricante indica que esta emisión es aconsejable que se
produzca en intervalos menores de 50 ms. Para el controlador MIDI se ha utilizado por
sensor periodos de 33 ms. Este periodo es aconsejado por [14], y el resultado es óptimo.
Pero hay tener en cuenta diversos factores intrínsecos en los sensores de ultrasonido y en el
mundo real que los rodea, que influyen en el resultado de las medidas y en su efectividad.
Parte II: Hardware y Software Capitulo 2 Hardware
25
Los factores que más pueden influir, orientados al controlador MIDI, pueden ser los
siguientes:
• El campo de acción de los sensores HC-SR04 tiene forma cónica, con un ángulo
de efectividad menor de15º y un máximo de 30º. El eco que se recibe cuando se
refleja el sonido, se debe a que hay un objeto dentro de ese cono acústico, pero
no nos indica la situación angular de dicho objeto. Para el controlador, la
máxima probabilidad es que el objeto (la mano), esté sobre el eje central del
cono, pero hay que tener encuentra a la hora de interactuar con dispositivo está
posibilidad en el momento de posicionar las manos. En la figura 27 se ve lo que
se llama incertidumbre angular[17].
Figura 27: Incertidumbre angular.
• Los sensores de ultrasonido de bajo coste, tras la emisión del ultrasonido
permanecen en un tiempo de espera, para que desaparezcan las vibraciones en el
sensor y esté listo para la recepción del eco. Esto implica que hay una distancia
mínima (proporcional a este tiempo de relajación) en la que el sensor mide con
precisión. Normalmente, los objetos que estén por debajo de esta distancia, serán
medidos como si estuvieran situados a la distancia mínima. Para el modelo HC-
SR04 esta distancia son 2 cm.
• Un factor muy influyente en el controlador MIDI es el conocido como falsos
ecos. Éstos se pueden producir por las siguientes razones: Puede ocurrir que la
onda emitida se refleje varias veces en distintas superficies antes de volver al
sensor la reflexión. Esto es llamado reflexiones múltiples e implica que las
medidas del sensor perciben la presencia de un obstáculo a una distancia
Parte II: Hardware y Software Capitulo 2 Hardware
26
proporcional al tiempo transcurrido en el viaje de la onda. Esto quiere decir que
se obtendrá una medida mayor que la está en realidad el objeto más cercano al
sensor, que pudo producir la primera reflexión. Otro caso de falsos ecos, y que
para este proyecto es importante a tener en cuenta, es la conocida como
crosstalk, y que ocurre cuando se tienen varios sensores de ultrasonido y
trabajando al mismo tiempo, se produce que un sensor emita una onda y sea
recibido por otro sensor que esté esperando un eco, que él había emitido con
anterioridad (o viceversa).
Figura 28: Efecto Cross ta lk .
• Para el dispositivo MIDI por sensores de ultrasonido, no hay que pasar por alto
que las ondas emitidas obedecen las leyes de reflexión de las ondas. Entonces
una onda de ultrasonido tiene el mismo ángulo de incidencia y de reflexión
respecto a la normal a la superficie. Por consiguiente, si la orientación de la
mano respecto del eje del sensor es mayor que un cierto umbral, el sensor de
ultrasonido no recibirá el pulso que emitió [18].
Además de todos estos posibles factores que pueden influir a la hora de interactuar
con el controlador MIDI, hay que recordar, que los sensores mandan impulsos cada 33 ms.
por lo que la hora de crear un sonido con el instrumento virtual (VST), se debe tener en
cuenta la envolvente de onda del sonido, es decir, el atack, decay, sustain, release,
Parte II: Hardware y Software Capitulo 2 Hardware
27
(ADSR). Esto será desarrollado con mas profundidad en el capitulo 3, cuando se hable del
manejo del controlador MIDI con el VST utilizado.
En resumen del capitulo 2, se han visto las características de Arduino y de los
dispositivos que se han instalado en él para poder crear el controlador MIDI, además de
cómo configurar el software para poder comunicarse vía serial (USB) y programar el
microprocesador, y así, hacer funcionales los 4 sensores de ultrasonido que harán las
funciones de antenas que tiene el modelo de Theremin, de León Théremin. Así como del
funcionamiento de los ultrasonidos y de los factores que pueden influir en su efectividad de
funcionamiento.
28
Capitulo 3
Software
3.1 Introducción.
El hardware diseñado permite capturar información gestual del intérprete, es un
controlador. Sin embargo, para que la información de control generada por el hardware
gobierne un motor de síntesis que produzca sonido es necesario crear una pasarela entre un
software de síntesis y el controlador en una arquitectura cliente-servidor donde el servidor
es el controlador y el cliente es el motor de síntesis. La información que trasiega entre
ambos debe corresponder a determinado protocolo y formato de datos que, de hecho,
permitirán que se ajuste con facilidad a otros escenarios.
Figura 29: Gráfico cliente-servidor.
Parte II: Hardware y Software Capitulo 3 Software
29
En este capítulo, se a aborda la elección y desarrollo del software que se usa para
recibir la información que envía la tarjeta Arduino a través del puerto USB. Así como una
introducción a los datos MIDI y su interpretación que realiza el software que actúa como
motor de síntesis en el programa de audio profesional Ableton Live. También, se hace un
inciso sobre los tipos de plug in de síntesis (instrumentos virtuales), que se usan y se
pueden usar como esclavos en el controlador MIDI, del que es objeto esta memoria, para
poder crear cualquier tipo de sonido al gusto del usuario, y que se ajuste a unas
características su envolvente (ADSR), ya que como se ha comentado y se especifica al final
del capítulo, el funcionamiento de los sensores de ultrasonido obliga a crear sonidos
específicos para su uso.
3.2 Justificación del software elegido.
En la arquitectura seleccionada cliente-pasarela-servidor, se utiliza Ableton Live
como cliente, Max/MSP como pasarela y Arduino como servidor. El primero debe generar
sonido controlado por la información gestual capturada y procesada por Arduino. El
segundo debe garantizar el trasiego de información desde el conector físico (USB) hasta el
cliente. Mientras que el último envía la información de control según determinado
protocolo y formato por la conexión serie USB.
La elección del software que interpreta los datos que llegan por vía serial (USB), se
ha hecho, con la intención de crear un plug in que otorgue de más autonomía al controlador
MIDI, así, como de nuevas funcionalidades que un Theremin clásico no tiene, con el
consiguiente objetivo de crear y dar mejoras a este dispositivo. Un software que se ajustaba
a estas necesidades es Max/MSP. Entre Arduino y Max/MSP existen muchas posibilidades
de interacción entre ellos, incluida una gran variedad de posibilidades a la hora de trabajar
con MIDI. Así, como de su sencillez de manejo, ya que es un lenguaje de programación
que ofrece una interfaz gráfica muy amigable y comprensible, para creadores multimedia.
Esto lleva a que Max/MSP tiene una modalidad de trabajo llamada Max4Live, que ofrece
al usuario la libertad de crear un plug in que tendrá manejo en el software de audio
profesional Ableton Live. Lo que impulsa a la siguiente elección de software para trabajar,
Parte II: Hardware y Software Capitulo 3 Software
30
que es el uso del software de audio Ableton Live, programa de edición y producción de
audio, muy manejable y sencillo.
De estos programas se habla más adelante profundizando en su manejo y
configuración para el uso del controlador MIDI. Al igual que se explica la comunicación
con Arduino, en la creación y manejo del plug in de Max/MSP, en su modalidad de
Max4Live, para así comunicarse con Ableton Live.
3.3 Max/MSP.
3.3.1 Historia y precedentes.
El uso de computadoras para la creación sonora puede empezar a estudiarse en la
década de 1950, con los primeros trabajos del músico e ingeniero electrónico Max
Mathews en AT&T Bell Telephone Laboratories. La primera plataforma de programación
musical fue creada y desarrollada allí en 1957 para ser utilizada en una computadora IBM
704 y se llamaba MUSIC I. Este lenguaje se fue perfeccionando junto a los avances que
experimentaba el hardware existente y así surgieron MUSIC II, III, IV y V. Con MUSIC III
fue introducido el concepto de unidad de generación o UGen, que consiste en bloques de
programación predefinidos utilizados para la generación o procesamiento de señales de
audio. MUSIC V fue implementado en 1968 en lenguaje FORTRAN, lo que brindaba gran
portabilidad al sistema y permitía, por un lado, la difusión de estas tecnologías dentro de la
comunidad de compositores que hacía uso de un ordenador para crear sonidos y por el otro,
a su sostenido desarrollo [19].
Otros lenguajes fueron desarrollados más tarde por compositores/programadores
como John Chowing y Andy Moorer (MUSIC 10, SCORE), F. Richard Moore (Cmusic) y
Paul Lansky (Cmix), basados en el lenguaje C; Bill Schottstaedt (Common Lisp Music),
basado en el lenguaje LISP, etc. Pero quizá la plataforma de programación musical basda
Parte II: Hardware y Software Capitulo 3 Software
31
en C más difundida y utilizada ha sido CSound11 , desarrollada por Richard Boulanger,
Barry Vercoe, Dan Ellis y Bill Gardiner, entre otros. CSound trabaja con UGens que
pueden ser encadenados como si se tratase de diferentes instrumentos, formando de esta
manera una orquesta que interpreta los comandos almacenados en la partitura. Este
lenguaje, si bien es muy poderoso e incorpora desde hace tiempo procesamiento en tiempo
real, puede ser un tanto complejo para aquellos creadores que no están habituados a escribir
código.
Max/MSP ofrece una alternativa a este problema, ya que posee todas las funciones de
procesamiento que brindan otros lenguajes pero utilizando una interfaz gráfica más
amigable y comprensible para los compositores y programadores multimedia.
Max fue creado por Miller Puckette12 en el Institut de Recherche et Coordination
Acoustique / Musique (IRCAM) a comienzos de 1986, con el objetivo inicial de controlar
un sintetizador llamado 4X que era capaz de trabajar con sofisticados sistemas de síntesis
de sonido. Más tarde, Max fue implementado por la plataforma Macintosh con el objetivo
de controlar y manipular información MIDI, ya que podía ser modificada de diversas
maneras. La versión actual, desarrollada por Miller Puckette y David Zicarelli, cuenta con
la incorporación MSP (tratamiento de audio digital) y Jitter (tratamiento de video) y es
publicada por Cycling 7413.
Max/MSP está programado en lenguaje C, pero la interfaz de usuario utilizada en el
lenguaje gráfico que consta, como se comentó antes, de objetos (pequeñas cajas que
realizan funciones determinadas) que pueden ser interconectadas a través de cables
virtuales, facilitando la comprensión de los diferentes diagramas (patches)[21].
11 CSound: se puede encontrar más información en [20]. 12 Miller Puckette: Bio en http://crca.ucsd.edu/~msp/bio.htm 13 Cycling 74: mas información en [22].
Parte II: Hardware y Software Capitulo 3 Software
32
3.3.2 Interfaz e introducción al manejo de Max/MSP.
Al abrir Max/MSP se tiene que crear un nuevo documento, desde File > New
Patcher, y se abrirá una nueva ventana tal y como indica la figura 30, y aquí es donde se
trabaja con objetos que se interconectan creando un patch. Si se hace doble click en
cualquier parte del patcher, se abrirá un menú de herramientas gráficas (figura 31), que son
los objetos que el programador utiliza.
Figura 30: Max/MSP, documento en blanco.
Figura 31: Menú herramientas gráficas Max/MSP.
Parte II: Hardware y Software Capitulo 3 Software
33
Para colocar un nuevo objeto se tiene que trabajar en modo edición, al que se accede
desde view > edit, o en el documento en blanco en la parte inferior izquierda, haciendo
click en el icono con forma de cerrojo o candado (figura 32). En este modo, se pueden
mover los objetos dentro del patcher, o conectar un objeto con otro. Así se puede ir
creando el patch, y para poder ejecutar el patch, se ha de cambiar a modo ejecución, para
ello se hace click en el candado, y cuando está cerrado significa que se está en modo
ejecución y se puede manejar el programa realizado.
Otro modo de trabajo es el modo presentación, que permite cambiar la ubicación y
el tamaño de los objetos independientemente de cómo se encuentren dispuestos en el modo
ejecución. Tanto el modo presentación, como el modo ejecución tienen su modo edición
propio. Se puede cambiar al modo presentación a través de view > presentation, o click en
el botón de la parte inferior izquierda con forma de pantalla con una gráfica, figura 32.
Figura 32: Empezando por la izquierda, el primer icono (forma de candado o cerrojo)
cambia a modo edición. El tercer icono (forma de pantalla con gráfica) cambia a modo presentación.
Hay que aclarar que el modo presentación permite manejar los objetos que hayan
sido incluidos en él, para hacer esto, se selecciona un objeto, y click en botón derecho del
ratón sobre el objeto y se selecciona la opción add to presentation, ese objeto se iluminará
de forma rojiza en su periferia. De esta manera al pasar al modo presentación, los objetos
que hayan sido añadidos previamente, aparecerán para poder trabajar con ellos en este
modo.
Esto ha sido una pequeña introducción al entorno de programación de Max/MSP,
para ampliar conocimientos y perfeccionar su manejo es aconsejable hacer uso de [21], que
es de donde se ha basado toda la información expuesta aquí.
Parte II: Hardware y Software Capitulo 3 Software
34
3.3.3 Programación Orientada a Objetos (POO).
“Se puede definir a la Programación Orientadas a Objetos como la técnica o
estilo de programación que utiliza objetos como bloque esencial de construcción
[21]”.
Un patch de Max/MSP se construye a partir de la interconexión de bloques de
programas (objetos) que realizan tareas específicas a partir de mensajes y atributos dados.
Esta interconexión posibilita crear rutinas complejas combinando varias rutinas simples
que pueden ser aisladas y comprendidas con facilidad. Estos bloques realizan tareas que
están ocultas al programador. El usuario no necesita saber como un determinado objeto
hace una función, simplemente sabe cual es la función que realiza y como puede
interactuar con otros objetos. Cada objeto tiene parámetros que pueden modificarse y hacer
que su comportamiento sea diferente al de otro objeto con el mismo nombre[21].
3.4 MIDI en Max/MSP.
Max posee diversos objetos para enviar y recibir mensajes MIDI, desde y hacia
diferentes dispositivos (sintetizadores, samplers, o en el caso de este proyecto
controladores). También es posible enviar este tipo de mensajes a distintos software que lo
soporten, como se hace aquí, enviándolo a Ableton Live. Pero antes se tiene que ver una
breve introducción a el concepto de MIDI.
3.4.1 ¿Qué es el MIDI?
MIDI es la sigla en ingles de Musical Instrument Digital Interface, nace en 1980 con
la necesidad de crear un lenguaje común para comunicar instrumentos musicales digitales,
por lo tanto el MIDI es un lenguaje de transmisión de datos entre dispositivos. Estos datos
se transmiten de un dispositivo a otro a través de un cable (cable MIDI o USB). Los datos
se transmiten de forma serial utilizando paquetes de información de 8 bits (un byte), es
Parte II: Hardware y Software Capitulo 3 Software
35
decir que éstos se suceden unos a otros en forma de secuencia (byte1, byte2, byte3,
etc.)[23].
La información MIDI es transmitida a través de 16 canales, aunque en realidad
depende del dispositivo, estos pueden funcionar al mismo tiempo, por los cuales enviar o
recibir información. En la transmisión de eventos musicales, por ejemplo las alturas, por
cada canal MIDI es posible enviar al mismo tiempo una o varias notas que utilizarán un
programa determinado para ser reproducidas, en el caso de este proyecto es un instrumento
virtual VST; sin embargo, no es posible tener más de un programa a la vez en cada canal.
Esto quiere decir que se puede decir a un software determinado que toque un DO con un
sonido de piano en el canal 1, un RE con sonido de bajo en el canal 2.
3.4.2 Objetos MIDI en Max/MSP.
A continuación, se explica una serie de objetos MIDI más importantes que se hacen
uso en el patch realizado para la interpretación de datos (números enteros, medidas), que
envía Arduino a la computadora por USB, para transfórmalos en datos MIDI y
posteriormente ser enviados a través de un puerto virtual a Ableton Live.
• Noteout.
Este objeto permite enviar a un determinado dispositivo MIDI (hardware o software)
mensajes de note on, al iniciar la nota y note off, al finalizar la nota. En Max el tipo de
mensaje MIDI que se envía esta dado por el objeto que se use, y en este caso, el objeto
acepta variables de canal, la nota y la velocity.
- Nota: indica la nota que se está iniciado/finalizando. Se tiene en cuenta diez
octavas, asignándole a cada nota un numero de 0-127. indica la nota que se está
iniciado/finalizando. Se tiene en cuenta diez octavas, asignándole a cada nota un
numero de 0-127.
- Velocity: es la fuerza o volumen que va a tener dicha nota, ya sea al iniciarse o al
apagarse (también entre 0-127).
Parte II: Hardware y Software Capitulo 3 Software
36
- Canal: para permitir la interpretación de varios instrumentos al mismo tiempo, la
especificación ofrece 16 canales. Como se ha explicado en el punto 3.4.1.
Aquí hay que hacer un inciso muy importante, noteout envía mensajes de nota
activada o nota apagada, pero ¿cómo indicar a Max cual será el dispositivo o software que
recibirá dicha información? Para ello se accede a la configuración MIDI, que se encuentra
en Options > MIDI Setup, se abre una ventana que nos indica los diferentes dispositivos
conectados a la computadora y, en el caso de OS X los diferentes software que pueden
comunicarse con Max/MSP a través de puertos virtuales (figura 32): to Max/MSP 1, to
Max/MSP 2, AU DLS Synth 1, from Max/MSP 1, from Max/MSP 2, IAC Driver Bus14[21].
Figura 33: Ventana MIDI Setup.
• Makenote.
Este objeto envía, después de transcurrido un tiempo configurable por el usuario, un
note off por cada note recibido. Esta cualidad es muy útil cuando estamos generando notas
desde un patch de Max y no desde un controlador externo, que es el caso, ya que el
controlador de este proyecto, hace medidas con los sensores que son enviadas al ordenador
14 IAC Driver Bus: Puerto virtual genérico de OS X, que se hace uso en este proyecto para la comunicación entre Max/MSP y Ableton Live, en anexos se explica como activarlo.
Parte II: Hardware y Software Capitulo 3 Software
37
para que las interprete Max/MSP, y las convierta en MIDI y así generar las notas. Se le
puede ajustar la velocity como variable (entre 0-127), si no por defecto aplica 100 [21].
• Ctlout.
Este objeto permite enviar mensajes de cambio de control (control change o CC)
MIDI. Estos mensajes se utilizan, como su nombre indica, para controlar algún parámetro
involucrado en la producción de sonido. Algunos de estos parámetros pueden ser la
amplitud, la posición en el espacio, el vibrato, la frecuencia de corte de un filtro, el sustain,
etc. Cada controlador está asociado a un valor de 0 a 127, en este caso el controlador
asociado es uno o varios de los sensores de ultrasonido, del controlador MIDI; esto es
configurable gracias al plug in que se muestra más adelante con más detalle.
Esta posibilidad dota a el controlador de ultrasonidos de una posibilidad totalmente
novedosa en un Theremin de ultrasonidos, y es la posibilidad de poder usar los sensores no
solo para generar sonido, si no también para poder controlar con las manos cualquier
parámetro que se configure previamente.
Estos 3 objetos son los principales en generar los mensajes MIDI que se envían a
Ableton Live, donde un instrumento virtual de síntesis, los interpreta para generar el
sonido, en el siguiente punto se ve el plug in desarrollado con Max/MSP, pero orientado a
Ableton Live gracias a Max4Live15, que es una posibilidad que ofrece Max/MSP para
poder usar los programas desarrollados en él, para el software de audio Ableton Live.
3.5 Plug in de control para los sensores de ultrasonido.
En este punto se analiza el patch creado para recibir los datos que envía Arduino por
el puerto serial (USB), y como son convertidos a datos MIDI y manipulados para que
realicen distintas funciones, que harán más funcional el controlador que un simple
Theremin clásico, y como son enviados por un puerto virtual, utilizando el driver IAC
Bus, para llegar a Ableton Live.
15 Max4Live: Se puede encontrar toda información de Max4Live en [22] y [24].
Parte II: Hardware y Software Capitulo 3 Software
38
En primer lugar se presenta el plug in en su modo de presentación para el usuario en
la figura 34, y se analiza su funcionamiento, la figura 35 muestra el patch en su modo
edición al completo, y se divide en bloques para un mejor entendimiento; se van
presentando los bloques en las imágenes siguientes con sus respectivas explicaciones
detalladamente.
Figura 34: Plug in para Ableton Live, desarrollado con Max/MSP y Max4Live en modo presentación.
Analizando de izquierda a derecha el plug in se tiene que:
• Sensor 1 y sensor 2: Donde se puede visualizar el nivel de acercamiento al
que están las manos del sensor (rectángulos amarillo y verde), encima los
botones para activar o desactivar los sensores.
• Active MIDI Notes: Si está activado, se tiene el sensor correspondiente con
la función de reproducir 3 notas por sensor. Active MIDI Notes se explica con
detalle más adelante, su funcionamiento y manejo. Si está desactivado, el
sensor funciona como control change o CC; en anexos, en el apartado de
Ableton Live, se explica como programar parámetros con los sensores para
usarlos como CC.
• Lenght: Potenciómetro que alarga el tiempo de las notas en milisegundos, si
estuviera a 0 ms. ese sensor no sonaría.
• On/Off: Botón de control para activar o desactivar por completo el plug in.
• Cuadro de escalas musicales: Cuadro de control para poder visualizar la
nota que se está tocando en ese momento. Se puede cambiar la escala en la
pestaña Modes, al igual que la tónica en la pestaña Tonic.
Parte II: Hardware y Software Capitulo 3 Software
39
• Special Mode: Cuando está desactivado MIDI Notes del sensor 4 (botón
color azul figura 34), y Special Mode está activado, entonces y sólo entonces,
el sensor 4 actúa como la antena derecha de un Theremin clásico, es decir,
hace una escala cromática, siendo grave cuando está cerca la mano y más
agudo cuando se aleja la mano del sensor.
• Sensor 3 y sensor 4: Por simetría su funcionamiento es igual al primer punto,
sensor 1 y sensor 2.
• Humanize: Cuando Special Mode está activado, Humanize hace que el
cambio de notas en la escala sea más natural, ajustar a gusto del usuario.
En el capitulo 4, se ve el manejo adecuado del controlador MIDI con las manos, y
otras posibilidades que tiene el plug in en su uso. A continuación, se ve el patch en modo
edición (figura 35). Decir, que el compilador de Max/MSP lee de derecha a izquierda.
Parte II: Hardware y Software Capitulo 3 Software
40
Fig
ura
35: P
atch
com
plet
o de
l pl
ug i
n en
mod
o ed
ició
n.
Parte II: Hardware y Software Capitulo 3 Software
41
• Bloque A:
Figura 36: Bloque A del patch en modo edición.
El Bloque A es donde llegan los valores que Arduino está enviando por el puerto
serial, y son divididos según el sensor y enviados a su correspondiente patch de control. De
arriba hacia abajo, se analiza la figura 36:
- Botón de on/off: Éste activa o desactiva todo el patch, es decir corta la
lectura del puerto serial o la inicia, se puede ver que su periferia es rojiza, por
que está incluido en el modo presentación; corresponde al botón de ON/OFF
de activar o desactivar el plug in (figura 34).
- Toggle: El cuadrado rojo, envía un 1 si en su inlet16 superior recibe un
impulso, si seguidamente recibe otro impulso envía un 0 y cambia de color a
gris.
- Qmetro: al recibir un 1 inicia un contador de 10ms. que envía un impulso al
objeto serial a.
16 Inlet: entrada o entradas que tiene un objeto de Max/MSP.
Toggle
Parte II: Hardware y Software Capitulo 3 Software
42
- Serial a: Lee los puertos serie del ordenador en busca de los que estén
recibiendo datos, se activa cuando recibe un impulso en su inlet. 115200
indica los baudios a los que lee el puerto serial.
- Select: Selecciona sólo lo que se le indique, en este caso los valores ASCII17
10 y 13, que corresponden a nueva línea y retorno de carro
respectivamente. Con esto se consigue obtener por separados las medidas que
envía Arduino, ya que están llegando seguidas, con un salto de línea entre
medición y medición.
- Zl group: Agrupa las medidas en paquetes, en este caso se indica que son de
4.
- Itoa y fromSymbol: son objetos necesarios para el manejo de los datos, en
Max/MSP cuando lee por el puerto serial, itoa convierto enteros a ASCII y
fromsymbol ASCII a símbolos.
- Cycle: envía los datos por 4 (que se indica en el objeto como variable)
outlets,18 repartiendo las medidas de cada sensor y enviándolas al bloque de
control del patch de cada sensores.
Una vez han pasado este proceso los datos que llegan por serial, estos se reparten por
separado a sus bloques correspondientes; a continuación se analiza el bloque B, y sólo este
bloque, ya que los otros son exactamente igual en su funcionamiento, y el B además, tiene
añadido la función de Special Mode explicada anteriormente y ahora se ve como ha sido
ensamblada.
17 ASCII: El código ASCII (siglas en ingles para American Standard Code for Information Interchange), Estándar para el intercambio de Información. Fue creado en 1963 por el Comité Estadounidense de Estándares o ASA, este organismo cambio su nombre en 1969 por Instituto Estadounidense de Estándares Nacionales o ANSI como se lo conoce desde entonces. Este código nació a partir de reordenar y expandir el conjunto de símbolos y caracteres ya utilizados en aquel momento en telegrafía por la compañía Bell [25]. 18 Outlets: salida o salidas que tiene un objeto en Max/MSP.
Parte II: Hardware y Software Capitulo 3 Software
43
• Bloque B:
Figura 37: Bloque B del patch , en modo edición.
El Bloque B representa el control virtual de un sensor, en concreto éste es como
indica la figura 37, el 4, pero tanto el 1, 2 y 3 son exactamente iguales, salvo por una
particularidad que tiene el 4, y es la función Special Mode por eso se ha elegido explicar
este patch de control.
Parte II: Hardware y Software Capitulo 3 Software
44
La medida del sensor llega desde el objeto del bloque A, cycle, este dato corresponde
al sensor de ultrasonido situado en el controlador MIDI más a la derecha (figura 21).
Recorriendo el bloque B de arriba hacia abajo, se tiene que:
- Boton de activación y gate: este botón sirve para activar el sensor por
completo, es decir el bloque B entero hacerlo funcional. El gate recibe el dato
de la medida del sensor y da paso sólo y sólo si, llega dato y el botón de
activación manda un impulso, está conectado. Este botón está rojizo, por lo
que va incluido en el modo presentación; corresponde al botón de activar el
sensor (figura 34).
- Control Value: Este objeto es un punto de control para poder visualizar el
valor de la medida que llega al patch 4, del sensor de ultrasonido del
controlador MIDI. De aquí se divide la señal a dos objetos; MultiSlider y
gswitch2.
- MultiSlider: Es el objeto de color azul cuadrado, éste imita a un vúmetro, es
decir muestra la medida del sensor de manera que, cuanto más cerca esté la
mano o un objeto del sensor, el display sube hasta casi cubrirlo, según se aleja
del sensor la mano o el objeto, el display va bajando. También está incluido
en el modo presentación (figura 34).
- Gswith2: Este objeto actúa como un bifurcador de la señal, tiene dos inlets y
dos outlets; un inlet (derecha) recibe la medida del sensor, y el otro
(izquierda) un botón de activación, si este botón no esta activo la medida del
sensor saldrá por el outlet de la izquierda, si este botón está activo la medida
sale por el outlet de la derecha. Este botón de activación esta incluido en el
modo presentación y corresponde al botón que activa el modo de MIDI
Notes, por lo que, si está activo coge el camino que lleva donde se encuentra
la implementación de MIDI Notes, si no esta activo su camino es hacia otro
objeto, gswitch2 B.
Parte II: Hardware y Software Capitulo 3 Software
45
Camino de la derecha del gswitch2:
Aquí el dato entra en 5 objetos de control, que divide el alcance máximo del sensor
de ultrasonido (30 cm.) y compara la medida con 5 valores, que corresponden a <=9, >9
&& <=17, >17 && <=26. Los sensores han sido programados para que realicen medidas
con un alcance máximo de 30 cm. este dato se introduce en el código de Arduino, que en
anexos viene incluido y explicado.
- <=9: Si la medida que realiza el sensor de ultrasonido es menor o igual a
nueve el dato toma este camino, entra en el objeto select 1, que manda un
impulso el objeto botton, que sirve de control para que el programador vea
que toma el camino correcto al iluminarse en amarillo, botton a su vez envía
otro impulso al objeto message, que la función de message es enviar por su
outlet el valor que tenga en su interior, en la figura 37 es 76, que corresponde
a la nota MIDI de la octava 5 MI. De aquí el valor 76 pasa a un objeto control
value, y después al inlet de la izquierda al objeto makenote (explicado en el
punto 3.4.2) programado con una velocity de 90 fija.
- >9 && <=17: Si la medida que llega cumple esta condición, el dato toma este
camino, entrando en el objeto select 1, de aquí al botton (se iluminará en
amarillo para indicar que todo va correctamente), y seguidamente al objeto
message que esta vez tiene el valor de 77, que en MIDI es la nota de la
octava 5 FA. Después 77 entra en un control value y luego en el inlet de la
izquierda del objeto makenote.
- >17 && <=26: Cuando la medida cumple esta condición, el dato toma este
camino, y realiza un recorrido igual que el del >9 && <=17, pero esta vez el
valor que entra en makenote es de 79, la nota de la octava 5 SOL.
- >26: No envía nada a makenote, por lo que este objeto envía por su outlet de
la derecha una velocity de 0, que corresponde a note off. Así deja el sensor de
ultrasonido de reproducir una nota, es decir, se han reservado 4 cm. de los 30
cm. de alcance máximo para realizar un note off.
Parte II: Hardware y Software Capitulo 3 Software
46
Cuando llega por el inlet de la izquierda uno de los 3 valores a makenote, 76, 77 o 79,
entonces sale por el outlet de la izquierda la nota correspondiente en MIDI, que va a el
objeto de cuadro de escalas musicales, y por su outlet de la derecha la velocity marcada de
90. Este makenote también recibe en su primer inlet de la derecha una señal del
potenciómetro Lenght 3, que lo que hace es alargar la nota en duración en milisegundos;
este Lenght 3, va marcado en rojo, luego está incluido en el modo presentación del plug in
y es un objeto especial y único de Max4Live.
Camino de la izquierda del gswitch2:
Cuando gswitch2 no recibe la activación del botón por su inlet de la izquierda, el dato
de la medida sale por el outlet de la izquierda y aquí vuelve a entrar a otro gswitch2, otra
bifurcación, para entender la explicación se llama gswitch2 B. Al igual que el anterior en
su inlet de la izquierda tiene un botón de activación, que corresponde a activar el Special
Mode, este botón está incluido en el modo presentación. Si no está activo la medida
realizada por el sensor de ultrasonido toma el outlet de la izquierda, y entonces el sensor
funciona como un control change, CC.
Camino de la derecha del gswitch2 B:
Tomar este camino hace que el sensor de ultrasonido situado más a la derecha del
controlador (figura 21), funcione como un Theremin, Aquí la medida es enviada al objeto
scale y a una zona para comparar la medida con 2 valores.
- Scale: este objeto escala los valores comprendidos ente 0 y 26, con 24 a 108,
para tener valores MIDI. Se ha escogido de 24 a 108, ya que al reproducir
notas MIDI por debajo de 24 o superior a 108 no son muy audibles o
agradables al usuario. De aquí pasa el valor escalado, entre 24 a 108, al objeto
makenote en su inlet de la izquierda
- Zona comparativa: la medida es comparada con valores de <=26 y >26, el
proceso es igual que la explicación anterior, pero esta vez el mensaje que
envía es:
Parte II: Hardware y Software Capitulo 3 Software
47
• <=26: envía el valor de 75 al inlet del medio de makenote, que
corresponde a la velocity.
• >26: envía el valor de 0 al inlet del medio de makenote, que
corresponde a la velocity y es un note off, así se reserva 4 cm. de
los 30 cm. de alcance máximo, para que el sensor pueda dejar de
sonar cuando funciona en Special Mode.
Una vez llega al makenote, en su inlet de la izquierda el valor escalado, pasará a ser
una nota MIDI, y en su inlet del medio la velocity a la que ha de sonar, y por su outlet de la
izquierda sale la nota MIDI hacia cuadro de escalas musicales, para que muestre aquí la
nota que suena. Este makenote también recibe en su inlet de la derecha la señal de Lenght
3.
Camino de la izquierda del gswitch2 B:
La medida hecha por el sensor de ultrasonido toma este camino y es escalada en el
objeto scale, esta vez los valores a escalar son de 0 a 127, todos los valores que puede
tomar MIDI, ya que ahora no va reproducir una nota musical, si no que se utiliza para
enviar mensajes CC, por lo tanto se necesitan y son útiles los 128 valores. Para enviar los
valores escalados como datos CC se usa el objeto ctlout explicado en el punto 3.4.2.
En el cuadro de escalas musicales llegan para resumir, las notas de Special Mode, y
las 3 notas que se reproducen cuando se elige la opción de MIDI Notes. Hay que resaltar,
que el mensaje de 3 notas, también llegan aquí, el de los patch de control de los sensores 3,
2, y 1. El objeto cuadro de escalas musicales que está incluido en el modo presentación,
da la posibilidad de visualizar la nota que se toca al iluminarse el display, y además da la
opción al usuario de cambiar la escala, ya que los patch de control de los sensores por
defecto hacen notas mayores y en la escala de DO. Empezando por el patch de control 1,
que corresponde al sensor de ultrasonido del controlador situado a la izquierda (ver figura
21) al elegir el modo MIDI Notes, reproduce las notas MIDI 60, 62 y 64, que corresponde
respectivamente a la octava 4 de DO, RE, MI. El patch de control 2 que corresponde al
sensor de ultrasonido segundo empezando por la izquierda (ver figura 21), que reproduce
las notas MIDI 65, 67, 69, que son respectivamente la octava 4 de FA, SOL, LA. El patch
Parte II: Hardware y Software Capitulo 3 Software
48
de control 3 que corresponde al sensor tercero empezando por la izquierda (ver figura 21),
reproduce las notas MIDI de 71, 72 y 74, que son respectivamente la octava 4 de SI, octava
5 DO, RE.
El outlet del objeto cuadro de escalas musicales va hacia el inlet izquierdo del
objeto noteout, explicado en 3.4.2, al igual que llega el valor de la velocity con que tiene
que sonar la nota, por su inlet central. Así se tiene, que se puede enviar dos tipos de
mensajes MIDI, o desde ctlout, o desde noteout, estos datos se envían a través del puerto
virtual driver IAC Bus, para comunicarse con Ableton Live. El como activar este driver se
explica en los anexos.
• Bloque C:
Figura 38: Bloque C del patch , en modo edición.
Este bloque corresponde al objeto Panel, que su utilidad es meramente estética. Su
funcionalidad es estar en el modo presentación (se ve en la figura 38 que esta rojiza su
periferia) de fondo en el plug in, a modo decorativo, y tiene conectado en su inlet una serie
de objetos que provocan que el difuminado de gris a blanco se vaya moviendo de lado a
lado cada un cierto tiempo programado. En la figura 35 en la parte izquierda se puede
Parte II: Hardware y Software Capitulo 3 Software
49
observar que hay dos objetos rectangulares verdes con la misma estructura que este bloque
C, su función es exactamente la misma pero esta vez están situados en el fondo de la zona
de control de los sensores 1 y 2 al igual que en la zona de sensores 3 y 4 (figura 34).
Es conveniente para el entendimiento de estas explicaciones ir visualizando las
figuras 34 y 35, así se puede ir haciendo el recorrido que hacen los datos que envía Arduino
a Max/MSP.
3.6 Importar el plug in a Ableton Live.
Una vez se ha desarrollado el plug in en Max/MSP, hay que hacerlo funcional en el
software de audio Ableton Live usando Max4Live, para ello hay que seguir una serie de
pasos. En primer lugar se abre el programa Ableton Live, y en la barra de Lista de
Dispositivos (figura 39), se busca la carpeta Max MIDI Effect, se pincha y arrastra a un
canal MIDI de Ableton Live (en anexos se da una introducción al manejo de Ableton Live).
Figura 39: Carpeta Max MIDI Effe c t de Ableton Live.
De esta manera se abre un plug in en blanco de Max4Live (figura 40), en Ableton
Live, ahora todo lo que hay que hacer es copiar el patcher desarrollado en Max/MSP en
este plug in en blanco.
Parte II: Hardware y Software Capitulo 3 Software
50
Figura 40: Canal MIDI, con plug in de Max4Live en blanco insertado.
Para ello hay que hacer click en el icono marcado en rojo del Max MIDI Effect, en la
figura 40, y se abre el entorno Max/MSP pero esta vez orientado a Max4Live. Se puede ver
que la hoja de trabajo es gris (figura 41) y no blanca (figura 30), es aquí donde hay que
copiar todo el patcher para que funcione en Ableton Live.
Figura 41: Interfaz de trabajo Max4Live.
Hay una línea que delimita lo que se va a presentar al usuario en Ableton Live, es
decir, cuando se añaden los objetos al modo presentación, hay que ponerlos por encima de
Parte II: Hardware y Software Capitulo 3 Software
51
esta línea para que se visualicen a la hora de trabajar en Ableton Live. Una vez copiado el
patcher del plug in en esta hoja de trabajo (en el documento de Max/MSP edit > select all,
luego edit > copy, después en el documento de Max4Live edit > paste), tenemos el modo
edición preparado (figura 35), pero los objetos que se tenían marcados para aparecer en el
modo presentación (periferia rojiza), hay que ordenarlos tal y como aparecen en la figura
34, y como se puede apreciar en la figura 42, con la interfaz de trabajo de Max4Live.
Figura 42: Presentación del plug in en Max4Live.
Ahora sólo queda guardar el documento como un archivo con extensión .amxd, que
es como se reconocen los plug ins desarrollados con Max4Live; y ya se tiene el plug in
guardado y listo para trabajar en Ableton Live (figura 43).
Para preparar la sesión (pistas de audio y MIDI) y configurar Ableton Live para que
reciba las señales MIDI que está enviando el plug in de los sensores, hay que realizar unas
configuraciones y unos enrutamientos entre las pistas usando el bus IAC driver, esto y
mucho más se explica en los anexos.
Parte II: Hardware y Software Capitulo 3 Software
52
Figura 43: Interfaz Ableton Live con Plug in de Sensores.
3.7 Instrumentos Virtuales.
Se ha hablado de plug in de síntesis durante la memoria del proyecto, y esto es así ya
que por si sólo el controlador MIDI no produce sonido. Tan sólo la combinación del
controlador MIDI, con el plug in de sensores, se consigue enviar mensajes MIDI a Ableton
Live, y para hacer esos mensajes que sean sonoros es necesario de un instrumento virtual o
VST. Hay que recordar, que el plug in de sensores envía tanto mensajes MIDI de notas
como de control change, CC, en este apartado cuando se hable de mensajes MIDI se toman
los que envían notas. Los mensajes CC se explican como programarlos en Ableton Live en
los anexos.
Para esto, hay que cargar en una pista MIDI un sintetizador que reciba las notas
MIDI que tiene que hacer sonar, este sintetizador puede configurarse para que suene de la
manera que más guste al usuario, pero en el punto 2.6 se explica el funcionamiento de los
sensores y algunas condiciones que se debe cumplir para que el sonido sea agradable al
oyente.
Parte II: Hardware y Software Capitulo 3 Software
53
3.7.1 Configuración envolvente de onda en un instrumento virtual.
Todo sintetizador debe tener unos parámetros para configurar su envolvente de onda;
la envolvente de un sonido es la función que describe la evolución de su potencia a lo largo
del tiempo. Los sonidos simples, y en general los sonidos generados por función, tienen
una envolvente constante. Los sonidos reales tienen envolventes variables en el tiempo, que
a menudo son tan características como su espectro de potencia [26]. La envolvente de los
sintetizadores electrónicos esta basada, de forma aproximada, en la envolvente
característica del piano, muchos sintetizadores electrónicos aplican a cada nota un
envolvente de cuatro etapas denominada ADSR. Las tres primeras etapas van asociadas al
evento note on que marca el principio de la nota; la última va referida al evento note off que
señala el final de la nota. Gráficamente, la evolución de la potencia a lo largo del tiempo, es
esta:
Figura 44: Envolvente de onda.
Los parámetros aplicables son cuatro:
• (A)ttack: Tiempo en el que la potencia llega a su valor máximo desde el evento
note on.
• (D)ecay: Tiempo en el que la potencia baja desde el máximo hasta un valor
estacionario.
Parte II: Hardware y Software Capitulo 3 Software
54
• (S)ustain: Nivel de potencia estacionario en relación con el máximo
conseguido durante el ataque.
• (R)elease: Tiempo que transcurre desde el evento note off hasta que la potencia
del sonido se anula [26].
Partiendo de estos datos a la hora de crear o elegir un sonido en el sintetizador, hay
que tener en cuenta que los sensores envían un mensaje MIDI, un evento de note on, cada
33 ms. Es decir, el sensor lleva intrínseco en su funcionamiento lanzar un impulso de 40
KHz. cada 33 ms. para poder estar localizando objetos que se sitúen en su campo de
captación, estos impulsos sonoros son transformados en medidas, las medidas enviadas al
plug in de sensores y seguidamente se envía el mensaje MIDI, por lo que sonaría una nota
cada 33 ms. Esto implica que si el sonido programado en el sintetizador tiene una
envolvente muy impulsiva, un attack muy corto, decay corto, sustain medio y release muy
corto, el sonido puede resultar un tanto estresante al usuario al querer interpretar alguna
melodía. Una envolvente óptima para la interpretación de piezas musicales con el
controlador de ultrasonidos seria la siguiente :
Figura 45: Envolvente óptima para el uso de sensores ultrasonido.
Parte II: Hardware y Software Capitulo 3 Software
55
Con esta envolvente se consigue que al enviar notas cada 33 ms. suenen como una
nota sola, o por lo menos imita esa acción. Al tener un attack medio-largo, un decay largo,
el sustain medio y un release medio-corto, se consigue este efecto a las notas entrantes en
el sintetizador. En la figura 46 se ve como se suman las envolventes de cada nota entrante y
como se forma una envolvente virtual que es la suma de todas.
Figura 46: Suma de envolventes y en rojo envolvente virtual.
Para concluir este capitulo hay que comentar que para tener un conocimiento total del
manejo del plug in con Ableton Live, hay que ver el capitulo de anexos referente Ableton
Live, ya que el enrutamiento de controles CC, y la configuración de las pistas, puede
parecer algo complicado si no se tienen unas nociones básicas de Ableton Live. Recalcar la
importancia del driver IAC Bus, sin este puerto virtual la comunicación entre el plug in
desarrollado con Max4Live y el software de audio sería imposible; con lo que convierte en
una lectura obligada en los anexos el saber como habilitarlo, y como configurarlo en el
software de audio. También, referente a la creación de sonidos en los instrumentos
virtuales que se usen, el usuario puede ir experimentando el sonido que más agrade a la
composición musical que vaya a realizar, siempre y cuando tenga presente el
funcionamiento de los sensores de ultrasonido y como afecta a la envolvente de onda del
sintetizador.
56
Capitulo 4
Manejo del controlador
4.1 Introducción.
El capitulo 4 va abordar el como conectar el controlador en el ordenador, y como
tiene el usuario que interactuar con los sensores de ultrasonido, para un buen manejo. Así
también, se explica en este capitulo las posibilidades que ofrece el plug in de sensores
realizado para Ableton Live. Es un capitulo muy breve, pero necesario para sacar un mejor
rendimiento al controlador MIDI.
4.2 Conexión y manejo del controlador MIDI.
El dispositivo se entrega con un cable USB convencional, el cual se conecta en un
puerto del ordenar; una vez hecho esto, se aprecia como el led on de la tarjeta Arduino se
ilumina. El siguiente paso es iniciar una sesión en Ableton Live, dicha sesión debe ser
preparada y configurada para el uso del controlador MIDI (en anexos se explica con total
detalle como hacerlo), por supuesto insertar en una pista el plug in de sensores de
ultrasonido desarrollado con Max/MSP para Max4Live. Cuando el plug in es conectado,
Parte II: Hardware y Software Capitulo 4 Manejo del Controlador
57
haciendo click en el botón on/off (figura 34), se observa que los leds de TX y RX, se
iluminan y comienzan a parpadear, eso indica que la transmisión por el puerto serial está
funcionando correctamente, y tenemos conexión entre el ordenador y el dispositivo de
sensores de ultrasonido.
Es conveniente antes de iniciar el uso del controlador, que en el plug in los botones
de encendido o apagado de sensor (un botón por cada sensor) estén apagados, para que
mientras se sitúa el dispositivo no se produzcan interferencias, y envíen señales no
deseadas. El lugar indicado para colocar el controlador es en una superficie plana, no es
conveniente que la superficie no esté a nivel, esto llevaría a que algunas señales de los
ultrasonidos se pudiesen cruzar entre ellas y producir problemas. Que no tenga superficies
a su alrededor, paredes u objetos, donde puedan chocar las señales que envían los
ultrasonidos, y así enviar medidas no deseadas.
El siguiente paso es comprobar que cada sensor envía señal y ésta llega a Ableton
Live correctamente. Para esto, Ableton Live ya esta configurado correctamente (anexos) y
se debe hacer click en los botones de encendido de los sensores (figura 34); es conveniente
hacerlo de uno en uno, y comprobar en sus indicadores si está llegando la señal, acercando
y alejando la mano, y comprobando que el indicador sube o baja respectivamente con el
movimiento. Cuando se cerciora uno de que todos los sensores envían señal, es hora de
configurar el controlador como le vayamos dar uso. Puede funcionar como un controlador
MIDI de señales control change, CC, o para enviar señales de notas MIDI y poder realizar
melodías, e incluso uno de los sensores, el número 4, el que está situado más a la derecha
del controlador, como un Theremin clásico.
En el caso de usar notas MIDI, se debe activar los botones de MIDI notes (figura 34),
de los sensores que se quiera que hagan esta función. Los sensores tienen un espectro de
alcance de señal dividido en 4 zonas, enviando 3 notas por sensor (de 0 cm. a 26cm. está
dividido en 3 para las 3 notas), y un stop note (de 26 cm. a 30 cm. para parar la nota), y
realizan la escala mayor de DO, es decir, el sensor número 1 envía, DO, RE, MI y stop note
y así sucesivamente los otros 3 sensores que le preceden. Esta escala puede cambiarse en el
Parte II: Hardware y Software Capitulo 4 Manejo del Controlador
58
cuadro de escalas musicales en su pestaña de modes (figura 34), aquí también se puede
visualizar la nota que se está tocando en ese instante.
La forma de interactuar con el dispositivo, la técnica de tocar, es usando las manos y
deben ser con movimientos lentos, no es conveniente realizar movimientos muy rápidos
para cambiar de nota. Si se retira la mano del sensor mientras está sonando una nota, ésta
quedará en un sostenido, sonando ininterrumpidamente hasta que se pase la mano a la
altura de stop note. Por ello, se pueden hacer acordes, armonías y dejarlas sonar, mientras
el usuario puede interactuar con otros dispositivos mientras suenan estas notas. Si se quiere
hacer notas sueltas, es conveniente situar una mano (la derecha si se es diestro) a la altura
de stop note, y con la otra mano (la izquierda) ir pasándola por los tramos de las notas que
se desee tocar. Con esto se consigue que cuando la mano que se encuentra situada en la
zona de emisión de notas MIDI se quite, la señal choque con la mano que está en el campo
reservado para parar la nota y así deje de sonar.
Para el caso de señales CC, en los anexos se explica como realizar el ruteo de
señales, entre los sensores y cualquier parámetro controlable en Ableton Live, o uno de los
plug in que se inserten en un canal de dicho software. Para el caso de usar los sensores
como mensajes CC, se tiene que desconectar los botones de MIDI notes (figura 34) de cada
sensor que se quiera usar como control change. El movimiento con las manos debe ser
igual que antes, pausado y sin movimientos bruscos, aunque si se quiere hacer un corte, se
puede poner la mano tapando el sensor y el parámetro se bajará bruscamente a 0. También,
se puede ajustar el nivel al que se desee que esté el parámetro, y quitar cuidadosamente la
mano del campo de captación del sensor de ultrasonido, y el nivel se mantendrá en la
última posición donde estuvo la mano. Esto, es muy útil a la hora de estar haciendo un
directo, y así el interprete puede ir introduciendo efectos y ajustando sus niveles a su gusto.
El Special Mode se activa cuando el usuario desactiva el botón MIDI Notes y activa
el botón Special Mode (figura 34), que quede claro que si MIDI Notes está activo el Special
Mode no funciona. La forma de tocar es igual que lo explicado anteriormente, movimientos
suaves, además esta función del plug in es muy sensible, ya que con ligeros movimientos
va cambiando de nota, siendo notas graves cuando está la mano cerca del sensor y notas
Parte II: Hardware y Software Capitulo 4 Manejo del Controlador
59
agudas cuando se aleja la mano de éste. Las notas, pueden ser visualizadas en cuadro de
escalas musicales. Al igual que en MIDI Notes, si el usuario retira la mano en una altura
inferior a 26 cm. la nota musical se queda sonando constante, si pasa la mano a la altura de
Stop Note (26 cm. a 30 cm.) deja de sonar.
La mejor forma es que el usuario vaya practicando y cogiendo una técnica de tocar
con el controlador, y observando de que formas puede obtener un mejor sonido y como
interpretar piezas musicales con este dispositivo. Existe la posibilidad de combinar
funciones entre sensores, es decir, pueden estar funcionando como MIDI Notes 2 de los
sensores, un tercero como CC y el sensor 4 si se desea en la función Special Mode (éste
último sensor es el único que puede funcionar como Special Mode).
PARTE III
Conclusiones y líneas futuras
61
Capitulo 5
Conclusiones y líneas futuras
5.1 Conclusiones finales del Controlador MIDI con Arduino.
Desde un principio el objetivo del proyecto era la creación de un Theremin, haciendo
uso de las tecnologías actuales y de un coste económico bajo. Se optó por el uso del
microprocesador Arduino ya que cumple esas dos condiciones. Con todas las herramientas
de las que se disponía para conectar a Arduino, se elije usar sensores de ultrasonido para
con ello poder, al igual que un Theremin, usar las manos para interactuar con el dispositivo
y así poder crear melodías musicales. Se ha usado hasta 4 sensores de ultrasonido para que
el usuario tenga más posibilidades de control sobre el instrumento. Esto es una mejora de la
idea principal que se tenia al iniciar el proyecto.
A la hora de empezar a desarrollar un software para controlar las señales que llegan
desde la tarjeta de Arduino a el ordenador, se ha visto las posibilidades que ofrecía
Max/MSP para programar un plug in y poder hacer uso de el en un software de audio
profesional, como es Ableton Live. Por ello surgieron varias ideas para incorporar a el
controlador que se presenta en este proyecto.
Parte III: Conclusiones y Líneas Futuras Capitulo 5 Conclusiones
62
La primera como es de suponer, es que cumpliera al igual que un Theremin clásico, la
función de que sonaran notas musicales al acercar y alejar la mano de un sensor (en el caso
de un Theremin es una antena). Esto se cumple gracias al sensor 4, en su función Special
Mode, con la diferencia de que las notas en este dispositivo se pueden dejar sonando en la
última posición en la que estuvo la mano sobre el campo de actuación del sensor, y para
pararlo se debe poner la mano en el espacio reservado para Stop Note. Esto, ofrece al
usuario la libertad de poder dejar sonando una nota y tener libres las dos manos para poder
realizar otras cosas en su sesión de directo. Con lo cual, se a cubierto esta expectativa.
Al observar el funcionamiento de los sensores de ultrasonido se introduce una mejora
a la hora de poder realizar una melodía. La función Special Mode es bastante complicada
de manejar con precisión en el momento de querer ejecutar una nota con exactitud, por ello
se ha puesto la función MIDI Notes, que divide el espectro de captación de los 4 sensores
en 4 zonas, 3 zonas para 3 notas respectivamente y una última zona para Stop Note. Las
notas son de la escala mayor de DO, pero se tiene la posibilidad de cambiar de escala
gracias a una opción que está incorporada en el plug in de control. Con esto se consigue,
que el usuario tenga más amplitud de manejo y poder ejecutar notas con mayor exactitud.
Aquí, al igual que con Special Mode, si el usuario aparta la mano mientras esta ejecutando
la nota de SOL, esa nota seguirá sonando hasta que ponga una mano en la zona de Stop
Note, con esto se consigue poder generar acordes y dejarlos sonar mientras se tienen las dos
manos libres.
Y por último y quizá una de las mejoras que se escapa a la idea principal de un
Theremin, y por ello otorga a este proyecto de más importancia, es la posibilidad de
mandar mensajes control change, CC. Configurando debidamente Ableton Live con los
sensores de ultrasonido, se puede mover con gestos de las manos cualquier parámetro de
Ableton Live, siempre y cuando el software de audio lo permita. Además, mantiene el
último valor constante cuando el usuario aparta la mano; esto cuando se hace un envío de
un efecto, por ejemplo una distorsión a un canal de audio, es muy útil, ya que el usuario
puede enviar la cantidad de distorsión que quiera con un gesto de la mano, seguidamente
apartar la mano y poder seguir ejecutando otras acciones.
Parte III: Conclusiones y Líneas Futuras Capitulo 5 Conclusiones
63
En conclusión, el dispositivo desarrollado en éste presente proyecto, cumple las
expectativas que se plantearon en un principio antes de empezar, incluso se han introducido
unas mejoras, las ya explicadas, que hacen de este controlador MIDI, un dispositivo útil y
entretenido a la hora de usar por el usuario.
5.2 Líneas futuras de desarrollo.
Como se sabe, este proyecto se desarrolla en base a los sensores de ultrasonido, por
esto se ha visto sus capacidades y sus discapacidades. Uno de los principales puntos era el
aspecto económico, en el apartado de presupuestos se ve con total detalle el coste del
controlador. Pero al usar unos sensores de ultrasonido económicos, estos no tienen de una
precisión muy profesional, en futuros proyectos de montaje del controlador MIDI, una
inversión en unos sensores de mayor coste, mejoraría mucho la sensibilidad y con ello el
manejo.
También se sabe, como en el punto 2.6 se explica, que los sensores de ultrasonido
tienen ciertas limitaciones, quizá la más notoria, es que envían impulsos cada cierto
intervalo de tiempo para localizar objetos en su campo de actuación, y esto conlleva el
envío de una medida, que a su vez es un mensaje MIDI, produciendo el problema de que
no suene una nota con sustain, si no que suena el golpeo de la nota las mismas veces que se
produce el envío de impulsos por el sensor de ultrasonido, haciendo casi obligatorio el
ajuste del ADSR del sintetizador que recibe las señales MIDI y las interpreta. Por ello se
podría investigar en otro campo que no sean los ultrasonidos, por ejemplo, los infrarrojos,
ya que su haz de emisión es constante y así este problema se podría suprimir. Pero hay que
realizar una investigación ya que podrían aparecer otros problemas. Como por ejemplo, si
Arduino soporta sensores de este tipo, precio, configuración. Pero como posible línea de
investigación futura es positiva.
Dejando de un lado los sensores de ultrasonido, en cuanto a el microprocesador
Arduino, se podría usar otro modelo, como es el Arduino Mega, que dispone de más
entradas digitales y así poder incluir más sensores o dispositivos que hicieran más
interactuable el controlador; incluso la eliminación del cable USB, incorporando un
Parte III: Conclusiones y Líneas Futuras Capitulo 5 Conclusiones
64
módulo Shield de bluetooth a la tarjeta de Arduino para conectar así con el ordenador y
enviar los datos. Otra opción sería un Shield de wi-fi a la hora de conectar con el ordenador.
Claro que esto también aumentaría el coste económico del proyecto. Al tener una placa
Arduino Mega con más entradas, se podría incorporar una pantalla LCD en la que poder
visualizar el sensor que está en funcionamiento, la medida que está realizando y los datos
que el ingeniero viera oportunos que mostrase la pantalla. Además, de la incorporación de
botones en el dispositivo, que fueran programables con parámetros del plug in de sensores
desarrollado con Max/MSP.
PARTE IV
Presupuestos
66
Capitulo 6
Presupuestos
6.1 Costes económicos del proyecto.
En este capítulo se va a presentar el gasto económico, tanto en materiales, como en
costes de diseño, desarrollo y montaje realizado por el ingeniero. Es un presupuesto
aproximado, ya que los materiales pueden variar el precio según el momento cuando se
compren (es posible que ciertos precios dentro de un año o varios se reduzcan). Se
presentan 3 tablas, la primera costes de materiales, la segunda costes de ingeniería y la
última el presupuesto total.
Parte IV: Presupuestos Capitulo 6 Costes Económicos del Proyecto
67
6.1.1 Costes de materiales.
Este es el precio que se obtuvo en su momento de compra, de cada uno de los
dispositivos y materiales utilizados para construir el controlador MIDI por ultrasonidos.
Tabla 2: Costes de los Materiales.
Materiales
Descripción Modelo Precio Unidad Cantidad Total (euros)
Microprocesador Arduino Uno ATmega328. 19,20 1 19,20
Sensor ultrasonido HC- SR04. 3,90 4 15,60
Interruptor on-on. 2,10 4 8,40
Diodo Led Diodo Led 5mm, rojo y verde. 1,10 6 6,60
Placa Protoboard Protoboad Raster. 3,50 2 7,00
Resistor Resistor 5%, ¼ W, 1 KΩ y 220 Ω. 1,05 4 de 220 Ω 6,30 2 de 1 KΩ
Cable Cable Protoboard. 5,10 1 5,10
Estaño para soldar Rollo estaño 1,2mm 30gr. 2,35 1 2,35
TOTAL 70,55
Los precios de la tabla 2 son todos en euros y llevan incluidos el IVA. Estos
dispositivos se pueden conseguir en cualquier tienda de electrónica. Los precios de la
carcasa del dispositivo no se incluyen, ya que se ha procurado la utilización de materiales
reciclados para así hacer un gasto menor en el proyecto.
Parte IV: Presupuestos Capitulo 6 Costes Económicos del Proyecto
68
6.1.2 Costes de personal.
Los costes de ingeniería se tratan en este apartado, que se mostrarán los gastos
directos del trabajo de los ingenieros (en este caso es un ingeniero) en la realización del
proyecto, es decir, el número de horas destinadas a la realización del diseño del controlador
MIDI: desarrollo de software, hardware, simulaciones, memoria, etc.
Tabla 3: Costes de Personal.
Personal
Apellidos, Nombre Categoría Coste/hora Horas/día Días Trabajados
Total (euros)
López Laín, Sergio Ingeniero 35 5 90 15.750
Los días trabajados se han estimado quitando fines de semana y días festivos, desde
que se empezó el proyecto a poner en desarrollo. Tener en cuenta que habría que quitar
impuestos a pagar al estado, al total. No se han quitado ya que dependería del momento y
lugar donde se realizará el proyecto.
6.1.3 Presupuesto total.
A continuación se muestra la tabla en la que se han incluido todos los costes
anteriormente mostrados y por consiguiente el coste total del proyecto en euros.
Tabla 4: Costes totales.
Costes Totales Total (euros)
Materiales 70,55
Personal 15.750
TOTAL 15.820,55
ANEXOS
ANEXOS
70
ANEXO I: Ficha técnica sensor HC-SR04.
Figura 47: Cara frontal de la ficha técnica del sensor HC-SR04.
ANEXOS
71
ANEXO I: Ficha técnica sensor HC-SR04.
Figura 48: Cara trasera de la ficha técnica del sensor HC-SR04.
ANEXOS
72
ANEXO II: Normativa código abierto.
La idea del código abierto se centra en la premisa de que al compartir el código, el
programa resultante tiende a ser de calidad superior al software propietario, es una visión
técnica. Por otro lado, el software libre tiene tendencias filosóficas e incluso morales : el
software propietario, al no poder compartirse, es antiético dado que prohibir compartir
entre seres humanos va en contra del sentido común.
Al igual que el software libre, el código abierto tiene una serie de
requisitos necesarios para que un programa pueda considerarse dentro de este movimiento,
éstos son:
• Libre redistribución: el software debe poder ser regalado o vendido libremente.
• Código fuente: el código fuente debe estar incluido u obtenerse libremente.
• Trabajos derivados: la redistribución de modificaciones debe estar permitida.
• Integridad del código fuente del autor: las licencias pueden requerir que las
modificaciones sean redistribuidas sólo como parches.
• Sin discriminación de personas o grupos: nadie puede dejarse fuera.
• Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden
ser excluidos.
• Distribución de la licencia: deben aplicarse los mismos derechos a todo el que
reciba el programa
• La licencia no debe ser específica de un producto: el programa no puede
licenciarse solo como parte de una distribución mayor.
• La licencia no debe restringir otro software: la licencia no puede obligar a que
algún otro software que sea distribuido con el software abierto deba también
ser de código abierto.
• La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación
de la licencia por medio de un acceso por clic de ratón o de otra forma
específica del medio de soporte del software.
Información obtenida de [27].
ANEXOS
73
ANEXO III: Código Arduino.
#include <NewPing.h> #define SONAR_NUM 4 // Número de sensores. #define MAX_DISTANCE 30 // Distancia Máxima. #define PING_INTERVAL 33 // Milisegundos entre sensores, ping. unsigned long pingTimer[SONAR_NUM]; // Contiene los momentos en que el ping
siguiente debe ocurrir para cada sensor. unsigned int cm[SONAR_NUM]; // Array que almacena las distancias. uint8_t currentSensor = 0; // Seguimiento del sensor que esta activo. NewPing sonar[SONAR_NUM] = { // Array de sensores. NewPing(12, 11, MAX_DISTANCE), // Pines de tarjeta Arduino donde los sensores
van conectados. NewPing(10, 9, MAX_DISTANCE), //trigger pin, echo pin, y máxima distancia de
sensor en este caso 30 cm. NewPing(7, 6, MAX_DISTANCE), NewPing(4, 3, MAX_DISTANCE) }; void setup() {
Serial.begin(115200);// Empieza lectura a 115200 baudios. pingTimer[0] = millis() + 75; // Primer ping a 75ms. para que dé
tiempo a la tarjeta a iniciarse. for (uint8_t i = 1; i < SONAR_NUM; i++) // Ajusta el momento de inicio de
cada sensor. pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL; } void loop() {
for (uint8_t i = 0; i < SONAR_NUM; i++) { // Bucle en los sensores. if (millis() >= pingTimer[i]) { // Comprueba si es el momento de
hacer ping en ese sensor. pingTimer[i] += PING_INTERVAL * SONAR_NUM; // Ajusta el siguiente
momento en que el sensor hará ping.
if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle(); // Ciclo de pings de sensores completo. sonar[currentSensor].timer_stop(); // Asegura de que el ping anterior ha
terminado antes de iniciar el siguiente.
currentSensor = i // Se accede al sensor. sonar[currentSensor].ping_timer(echoCheck);//Hace el ping y el proceso
continua y llamará a echoCheck para buscar el echo.
ANEXOS
74
} } }
void echoCheck() { // Si recibe el ping, este se introduce en el array de distancias. if (sonar[currentSensor].check_timer()) cm[currentSensor]=sonar[currentSensor].ping_result/US_ROUNDTRIP_CM;
}
void oneSensorCycle() { // Ciclo de pings de sensores completo y envía las medidas por Serial (USB).
for (uint8_t i = 0; i < SONAR_NUM; i++) { Serial.println(cm[i]); } }
ANEXOS
75
ANEXO IV: Montaje controlador MIDI e imágenes reales.
Fig
ura
49: M
onta
je d
el c
ontr
olad
or, i
mag
en d
e m
ayor
tam
año.
ANEXOS
76
Imágenes reales del controlador MIDI, sin la carcasa de presentación:
Figura 50: Imagen frontal del controlador MIDI de ultrasonidos.
Figura 51: Imagen trasera del controlador MIDI de ultrasonidos.
ANEXOS
77
ANEXO V: Controlador con carcasa.
Figura 52: Imagen frontal controlador con carcasa.
Figura 53: Imagen detalle controlador con carcasa.
ANEXOS
78
Figura 54: Imagen vertical controlador con carcasa.
ANEXOS
79
ANEXO VI: Activación del bus IAC Driver.
Para el uso del controlador MIDI en el ordenador, es necesario la activación del bus
IAC Driver, para crear un puerto virtual que lleve los mensajes MIDI a el software de audio
profesional, que en este caso es Ableton Live. Una vez se tiene activado sólo queda realizar
un ruteo en las pistas de la sesión de Ableton Live para poder trabajar. Esta configuración
se ve en el siguiente anexo referente a Ableton Live. Este driver está sólo en los sistemas
operativos OS X.
Este driver permite crear un puerto virtual MIDI entre el dispositivo y la aplicación
de la computadora, para activarlo se siguen los siguientes pasos:
1) Abrir Audio Midi Setup, Aplicaciones > Utilidades > Audio Midi Setup.
2) Abrir la MIDI window. Ventana > MIDI window
3) Una vez ahí se debería ver algo como la figura 55.
Figura 55: MIDI window.
ANEXOS
80
4) Se da doble click en el icono Driver IAC y aparece la siguiente ventana.
Figura 56: Activar IAC Dirver.
5) Para activarlo hacer click en Dispositivo conectado (figura 56), y elegir el
puerto, hay 16 canales para enviar MIDI por el puerto virtual, es importante a
tener en cuenta el bus que se elige, por que a la hora de configurar en el
software de audio hay que elegir el mismo, en la figura 56 se elige el Bus 1.
Una vez hecho estos pasos, ya se tiene comunicación MIDI entre la aplicación del
controlador MIDI y el software de audio, sólo queda configurar dicho software para que
sepa por que Bus está llegando esta información [28].
ANEXOS
81
ANEXO VII: Introducción a Ableton Live y su configuración.
Este apartado es una breve introducción a Ableton Live y de como preparar una
sesión de trabajo para el uso de controlador MIDI, así de cómo configurar parámetros para
el control por medio de mensajes control change, CC.
Al abrir una nueva sesión se encuentran dos pistas, una de Audio y otra MIDI, tal y
como se ve en la figura 57. A continuación se analiza la interface de Ableton Live.
Figura 57: Interface Ableton Live.
En la parte superior izquierda se tiene el cuadro para ajustar el tempo (bpm), y el
compas, así como la activación del sonido de la claqueta. Si se sigue avanzando hacia la
derecha se encuentra el cuadro de control de sesión, que indica en que posición se empieza
a reproducir, el botón de reproducir, el de stop y el botón de grabación. El OVR sirve para
sobrescribir cuando se está grabando. Luego, se encuentra el cuadro para realizar pinchazos
en las grabaciones, así como el botón de modo loop. En la parte superior derecha se
encuentran los botones para realizar ruteos de teclado y MIDI, que se ve con detalle más
ANEXOS
82
adelante. También se puede visualizar, el tanto por ciento que usa el programa de la CPU
del ordenador. En la figura 58, se ve la ventana de navegación, donde se puede acceder a
los plug ins que vienen de serie en Ableton Live y los paquetes de plug ins que se instale el
usuario.
Los iconos en forma circular de la parte
izquierda indican de arriba hacia abajo: el primero
oculta la ventana de dispositivos, el segundo abre la
navegación por carpetas de los plug ins de Ableton, el
siguiente icono abre la navegación por los plug ins
instalados por el usuario y los siguientes iconos
numerados de 1 a 3 son carpetas que puede
preseleccionar el usuario lo que desee acceder en
ellas.
Cuando se quiera utilizar un plug in, tan solo
hay que pulsar sobre su nombre en la ventana de
dispositivos y se arrastra sobre una pista, o en la parte
inferior de la interface donde dice claramente,
deposite aquí los efectos, instrumentos MIDI o las
muestras (figura 57).
Los canales tienen una serie de pistas donde se puede poner audio
y/o grabar en ellas, en el caso de una pista de Audio, y en el caso de una
pista MIDI se puede pintar una secuencia MIDI. En la figura 59 se ve en el
canal de Audio que se ha cargado un clip en la pista numero 2 (color gris)
para ello, se elije de una carpeta el archivo y se arrastra sobre el canal de
Audio en la pista que se quiera. Mientras que en el canal MIDI, se ha
cargado en la pista numero 1 (color azul) un clip MIDI, para esto hay que
hacer doble click sobre la pista en la que se desee crear una secuencia
MIDI, abriéndose el piano roll en la parte inferior de la interface. En la
parte media del canal, hay una serie de pestañas que sirven para poder
Figura 58: Ventana de Dispositivos.
Figura 59: Canales.
ANEXOS
83
realizar ruteos entre canales, para indicar desde donde puede llegar una señal o donde poder
enviarla. A continuación, se observa que en el canal de Audio se tienen dos (pueden ser los
que quiera el usuario) envíos de efectos el A y B, y después el control de panoramización,
muteo, solo y preparar pista para grabar, así como el control de fader del canal. Todos estos
controles aparecen en el canal MIDI si se carga un instrumento virtual.
Para empezar a configurar la sesión para el uso del controlador MIDI, primero se ha
de acceder a las preferencias de Ableton Live, Live > Preferencias y aparece una ventana
como la de la figura 60; se pulsa en la pestaña MIDI Sync. Si se ha activado correctamente
el bus IAC Driver, debe aparecer en las pestañas de entrada y salida, así como en los MIDI
ports, que como se ha explicado en el anexo anterior se elige el bus 1. Se debe dejar la
configuración tal y como aparece en la figura 60.
Figura 60: Preferencias Ableton Live.
ANEXOS
84
Para la sesión se necesitan dos canales MIDI; para crear canales se accede a Crear >
insertar pista MIDI. Se puede borrar el canal de Audio que viene por defecto al iniciar
una sesión nueva siempre en Ableton Live. Para ello, sobre el canal, botón derecho del
ratón, eliminar, o seleccionamos canal y en el teclado botón de borrar. En uno de los
canales MIDI se carga el plug in de control de sensores desarrollado para este proyecto, se
accede a la carpeta donde esté situado, se pincha sobre el nombre y se arrastra sobre la pista
MIDI (figura 61). Se puede renombrar el canal, pulsando cmd+r (en este caso se renombra
como Sensors). En el canal 2 MIDI, se carga un instrumento virtual, por ejemplo un
sintetizador, que en la figura 61 es el Massive (se puede usar cualquier instrumento virtual
que se desee). Se realiza el mismo proceso que para el plug in de sensores para cargarlo en
la pista MIDI.
Figura 61: Cargar plug ins en canales MIDI.
ANEXOS
85
El siguiente paso es realizar el ruteo entre canales, para
enviar las señales MIDI que crea el plug in de sensores para
que así el sintetizador las interprete y haga que suenen las
notas que correspondan. En la figura 62 se ve que en el canal
MIDI de los sensores, en la pestaña de MIDI To, se
selecciona Driver IAC (Bus 1), así se consigue enviar la
señal MIDI por un puerto virtual (Bus 1), para que el software
de audio interprete el MIDI. Ahora, se tiene que decir en el canal MIDI donde está el
sintetizador Massive, que reciba señal MIDI del canal donde está el plug in de sensores. Tal
y como indica la figura 63.
Ya se tiene la sesión preparada para el uso del controlador MIDI por ultrasonidos, se
puede configurar el sintetizador Massive con el sonido que desee el usuario (siempre
respetando las especificaciones de ADSR explicadas en el punto
3.7.1), se pueden usar las funciones del plug in de sensores de
MIDI Notes y Special Mode, pero la funcion de control change o
CC, necesita aún otra configuración en Ableton, que se explica a
continuación.
Si lo que se desea es usar el dispositivo para controlar
parámetros y no para hacer notas musicales, se debe rutear las
señales de cada sensor con el parámetro que se quiera controlar. Para ello se conecta el plug
in (botón on/off) y se desconectan todos los sensores del plug in de sensores, salvo el que se
quiera programar; debe estar en ese sensor la función MIDI Notes desconectada (figura 64
el sensor 1). Seguidamente se pulsa el botón de la interface de Ableton Live situado arriba
a la derecha (figura 57), que pone MIDI y la interface cambia marcando en tono morado
los parámetros que se pueden rutear para el control con el sensor (figura 64).
Figura 62: MIDI to IAC Driver.
Figura 63: Massive recibe señal del canal
Sensors.
ANEXOS
86
Figura 64: Ruteo de mensajes CC de los sensores de ultrasonido.
Ahora solo se tiene que hacer click sobre donde se quiera programar, en la figura 64
se ha marcado el fader (Track Value) del canal MIDI del sintetizador de Massive. En la
parte izquierda hay una ventana llamada MIDI Mappings, que indica el número y que
parámetros que están ruteados. Para programar otro sensor, por ejemplo el sensor 2, ha de
realizarse el mismo proceso, pero antes se debe salir del modo para rutear, pulsando de
nuevo el botón MIDI situado arriba a la derecha. Muy importante es que no hayan dos o
más sensores conectados a la vez en el plug in de sensores, ya que al entrar al modo de
rutear crea conflictos y da problemas, siempre se ha de hacer de uno en uno. Así se puede
crear un MIDI Mappings de hasta 4 parámetros controlables con los sensores. Si se quiere
eliminar alguna de las programaciones, se pulsa el botón MIDI (arriba a la derecha), y en la
ventana de MIDI Mappings se marca el control que se quiera quitar y se pulsa en el teclado
el botón de borrar, y la programación es eliminada.
ANEXOS
87
ANEXO VIII: Tabla numeración de notas MIDI.
Tabla 5: Numeración correspondiente a la nota MIDI.
REFERENCIAS
REFERENCIAS
89
REFERENCIAS
[1] Wikipedia, León Theremin, http://es.wikipedia.org/wiki/Leon_Theremin,
[Consulta 2013-04-12].
[2] Arduino página oficial, http://www.arduino.cc/, [Consulta 2013-04-12].
[3] Theremin Hispano, http://www.thereminhispano.com/Topic6.htm, [Consulta
2013-04-13].
[4] Wikipedia, RCA, http://es.wikipedia.org/wiki/RCA, [Consulta 2013-04-13].
[5] Wikipedia, Heterodino, http://es.wikipedia.org/wiki/Heterodino, [Consulta 2013-
04-13].
[6] Theremin Argentina, historia, http://www.thereminargentina.com.ar/historia.htm,
[Consulta 2013-04-13].
[7] Processing, página oficial, http://www.processing.org/, [Consulta 2013-04-15].
[8] Arduino página oficial, Introducción, http://arduino.cc/es/Guide/Introduction,
[Consulta 2013-04-15].
[9] Brian W. Evans, “Arduino Notebook: A Beginner’s Reference”, Creative
Commons, August 2007.
REFERENCIAS
90
[10] Arduino página oficial, http://arduino.cc/forum/index.php/topic,31231.0.html,
[Consulta 2013-04-16].
[11] Arduino página oficial, funciones, http://arduino.cc/es/Reference/HomePage,
[Consulta 2013-04-16].
[12] Wikipedia, SPI, http://es.wikipedia.org/wiki/Serial_Peripheral_Interface,
[Consulta 2013-04-17].
[13] Arduino página oficial, descargas software, http://arduino.cc/es/Main/Software,
[Consulta 2013-05-10].
[14] Arduino página oficial, biblioteca NewPing descarga directa gratuita,
http://playground.arduino.cc/Code/NewPing, [Consulta 2013-04-19].
[15] Arduino página oficial, manual de instalación de bibliotecas,
http://arduino.cc/es/Reference/Libraries, [Consulta 2013-04-19].
[16] Fritzing página oficial, descargas, http://fritzing.org/download/, [Consulta
2013-04-22].
[17] Michael K. Brown. “Feature extraction techniques for recognizing solid objects
with an ultrasonic range sensor”. IEEE Journal of Robotics and Automation, December
1985.
[18] Billur Barshan and Roman Kuc. “Differentiating sonar reflections fron corners
and planes by employing an intelligent sensor”. IEEE Transactions on Pattern Analysis
and Machine Intelligence. June 1990.
[19] Wang, G. “A history of programming and music”. Cambridge companion to
Electronic Music, N. Collins and J. D’escrivan Eds. Cambridge University Press.
[20] CSound, http://www.csound.com/, [Consulta 2013-05-09].
[21] Francisco Colasanto. “Max/MSP guía de programación para artistas”. Centro
Mexicano para la música y las Artes Sonoras. 2010.
[22] Cycling 74, página oficial, http://www.cycling74.com, [Consulta 2013-04-25].
REFERENCIAS
91
[23] MIDI, http://www.midi.org/, [Consulta 2013-04-26].
[24] Max for Live, http://www.maxforlive.com/index.php, [Consulta 2013-04-26].
[25] Código ASCII, http://www.elcodigoascii.com.ar/, [Consulta 2013-05-03].
[26] Universidad Politécnica de Valencia, envolventes,
http://www.disca.upv.es/adomenec/IASPA/tema5/Embolicants.html, [Consulta
2013-05-10].
[27] Wikipedia, Código abierto, http://es.wikipedia.org/wiki/Codigo_abierto,
[Consulta 2013-05-08].
[28] Mfalab, How to use the IAC Driver, https://sites.google.com/site/mfalab/mac-
stuff/how-to-use-the-iac-driver, [Consulta 2013-05-08].
[29] Arduino página oficial, Shields, http://arduino.cc/es/Main/ArduinoShields
[Consulta 2013-05-13].