martes, 31 de mayo de 2016

Entendiendo el MIDI


    
    Antes de abordar un proyecto como este hay una cantidad de conceptos que tenemos que definir y estar mínimamente familiarizados con ellos pues, de otro modo, nos volveremos un "ocho". 

    Me pareció que sería lo mejor centrarme primero en la parte no tangible del proyecto, es decir, lo que tiene que ver con toda la parte informática o lógica, por 2 motivos:

1) Porque es mi punto débil (sé configurar software pero entender cómo funcionan a nivel de código pues... ahí estoy en pañales).  

2) Podríamos construir la batería mas bonita de todos los tiempos, pero si no logramos que se comunique efectivamente con la PC, sería un trasto inservible. (Bueno casi inservible, al menos serviría como pad de practicas XD, pero no es la idea, verdad? )

   Por estas razones dejaré para luego todo lo referente al diseño de los tambores, platos, estructura, caja para el módulo, pedales, etc... y me enfocaré en asimilar primero el funcionamiento a nivel electrónico.

    El primer concepto que hay que tener presente, es el concepto de MIDI, ya que sin el no funciona casi ningun instrumento electrónico moderno. ¿Que rayos es MIDI?

    En su página oficial encontramos esta definición:

 "MIDI es un estándar tecnológico que describe un protocolo utilizado para conectar productos de muchas compañías diferentes, incluyendo instrumentos musicales digitales, computadoras, tablets y smartphones". 

    Y eso con qué se come?


Logo de MIDI


    
    Bueno, primero que nada, MIDI es el acrónimo de Musical Instrument Digital Interface, o lo que es lo mismo "interfaz digital de instrumentos musicales". Podemos pensar en el MIDI como un lenguaje. Vamos a hacer un poco de historia: 

    Todo se remonta a la época cuando se inventaron los primeros instrumentos que usaban electricidad para emitir sonidos. Al principio estos eran analógicos, y tenían muy pocas posibilidades de interconectarse entre sí. Si uno estaba tocando un sintetizador que producía determinado tipo de sonidos, digamos de órgano, tenía que pasar a otro aparato diferente si quería cambiar a un sonido de piano, y así por el estilo. Por lo tanto un tecladista que quisiera disponer de muchos sonidos en vivo tenía que subirse a la tarima con muchos aparatos y andar saltando de uno para otro.

    Pero a finales de los 70 y principios de los 80 todo empezó a cambiar con la masificación de la tecnología digital y la informática. Ya era factible por ejemplo, que un solo sintetizador fuese capaz de generar sonidos muy variados y acceder a ellos por medio de un botón. Lo que es más, era posible interconectar varios sintetizadores y disponer de todos sus sonidos desde un único teclado. Pero pronto los músicos se toparon con un gran problema: cada fabricante tenía sus propios protocolos de interconectividad, y productos de marcas diferentes no eran compatibles entre si. Asi que si yo tenía un teclado Roland, no lo podía conectar de un Yamaha o con los de ninguna otra marca. Esto como es obvio, resultaba muy limitante. 

   Para remediarlo, representantes de las principales compañías fabricantes de instrumentos se reunieron a mediados de los 80 para ponerse de acuerdo y definieron unas reglas de fabricación, que todos tendrían que seguir de ahí en adelante, para asegurar la compatibilidad entre sus equipos en cualquier parte del mundo. Y no solo entre instrumentos, esta tecnología iba a permitir la conexión con computadoras, que empezaban a masificarse en aquella época y que pronto demostraron lo que eran capaces de hacer. Esta nueva especificación englobaba tanto lo concerniente a la estructura de los datos como el hardware, la forma de los conectores, etc.

Nota: Podemos pensar en otros estándares de comunicación con los que estamos más familiarizados. Por ejemplo el USB, el Bluetooth, el WiFi, todos ellos son estándares de comunicación que surgen de convenios entre fabricantes, y que garantizan que dos aparatos que soporten estas tecnologías se puedan comunicar satisfactoriamente sin importar en que parte del mundo fueron fabricados. Si yo me compro un pendrive made in China y lo conecto en una MAC made in USA, lo mas probable es que funcione, verdad? por que ambos fueron fabricados bajo la misma normativa. El MIDI es lo mismo pero orientado a la música y los instrumentos.



Cables MIDI


    Todas estas nuevas posibilidades revolucionaron por completo la forma en que se componía, editaba, grababa y producía la música. El MIDI hizo posible que una sola persona con un mínimo de equipo y una computadora, fuese capaz de producir un álbum entero con calidad profesional. Aún era muy caro, (no cualquiera tenía siquiera una PC...) pero seguía siendo mas barato (y sobre todo más práctico) que contratar músicos, movilizar instrumentos reales, etc.



Ejemplo de comunicacion entre equipos MIDI


      A través de los años se han hecho algunas modificaciones, o actualizaciones al protocolo MIDI, pero su estructura básica sigue siendo prácticamente la misma. Hoy día se utiliza no solo para controlar sonidos, sino también iluminación, video, efectos especiales, etc.
        
        Podemos imaginar el MIDI como unas reglas que especifican en que orden se tienen que agrupar los datos para que conformen mensajes que sean entendidos por los instrumetos o por software musical.

         Ok, ok, todo bien, pero y como se relaciona todo este rollo con la batería que vamos a armar?

        Bueno, nuestra batería forzosamente estará mandando mensajes en formato MIDI a la PC, uno tras otro. Cada golpe dado con la baqueta se traducirá, con la ayuda del Arduino, en órdenes MIDI que irán al Superior Drummer 2.0 (ver entrada anterior) que este tendrá que interpretar. No es necesario volverse un experto en todo lo que concierne al MIDI (es un tema un poco extenso) pero sí conviene comprender al menos su funcionamiento básico.

      Un mensaje MIDI, tal como una oración de palabras, tiene que llevar un orden lógico para que tenga sentido. No es lo mismo decir:

          -Hola como estás? 

          que:

          -Estás hola como

       
     De igual forma, los mensajes MIDI tienen su propia sintaxis, en donde cada parte significa algo en un orden concreto.

    Hay varios tipos de mensajes MIDI que activan funciones distintas. El que mas compete a nuestro proyecto es NoteOn. 

    NoteOn, como su nombre lo indica, es un mensaje que ordena la activación de una nota. Está compuesto por 3 bytes, y cada uno contiene información especifica. El primero de ellos se llama byte de estado: es el que identifica que tipo de acción conlleva el mensaje, en este caso, un NoteOn, es decir, que le dice a la PC "preparate para que actives una nota". El segundo y tercer bytes contienen los datos concernientes a la nota: el segundo especifica cual es la nota en cuestión, ya sea Re, Do, Fa sostenido, o en el caso de la batería, un platillo, un redoblante, etc. y el tercero indica el velocity, que pudiera parecer que significa la velocidad en que llega el fin de la nota, pero en relidad se refiere a la intensidad o cantidad de volumen de la misma. 

    Un diálogo entre PC y batería sonaría algo asi traducido al español:

PC: Estoy lista y a la espera de nuevas instrucciones.

BATERÍA: Quiero que me actives un golpe (1er byte), en el bombo (2do byte), a todo el volumen disponible (3er byte).

PC: Como usted ordene.

    Y seguidamente ejecutará la nota según esos parámetros. Todo en cuestión de milisegundos.

    Nota: Como ya hemos visto hasta aquí, el MIDI NO transporta audio digital como tal, sino instrucciones codificadas que cada módulo generador de sonidos es capaz de entender.

   Otros tipos de mensajes pueden ser por ejemplo: NoteOff, para apagar una nota,  o ProgramChange, para cambiar de sonidos, etc..

    Toda esa información está codificada en lenguaje binario que se compone de unos y ceros. Grupos de unos y ceros en un orden especifico forman bytes, y grupos de bytes conforman mensajes MIDI. Pero ya nos estamos metiendo en el reino de la informática pura, y me saldría demasiado de lo que pretendo abarcar con este blog. De todos modos invito a quien quisiera ampliar sus conocimientos a leer artículos como este donde se trata a fondo el tema. 

    Dijimos que los datos viajarán del Arduino a la PC, pero como hacemos las conexiones? La inmensa mayoría de las PC's actuales no vienen con conectividad MIDI de fábrica, por lo tanto, debemos recurrir a una de estas opciones:

1) Instalar una tarjeta de sonido o una interface con entradas MIDI. Esta sería la opcion más profesional, pero tambien la más cara, y como la que la idea aquí es mantener bajos los costos, la descartaremos por ahora.


2) Utilizar un conversor MIDI to USB. Esta opción es mucho más económica e igualmente dotará a la PC de las conexiones necesarias.


3) Usar software. Esta opción es gratis. Se trata de unas aplicaciones que crean unos puertos MIDI virtuales, internamente. Asi, podemos conectar el Arduino a un puerto USB cualquiera, y los programitas harán de intermediarios con el software musical. Mas adelante dedicaré una entrada a estas últimas opciones.






    Hasta aqui creo que vamos bien. Seguro que dejé mucho por fuera, como el tema de los canales, pero mejor no abrumarnos con tanta información, lo mencionado es lo que más relevante para el proyecto. Espero que esta entrada haya servido de introducción amena al tema del MIDI para quien no estuviera familiarizado. En mi caso, con la investigación que estoy haciendo he aprendido muchísimo mas. Es probable que tenga que ahondar en detalles específicos mas adelante, pero de momento creo que esta bien para dar una idea. 

     ¡¡Hasta la próxima entrada!! Saludos!








domingo, 29 de mayo de 2016

Construyendo mis propios E-Drums en Venezuela

    
E-Drums comerciales de la marca Roland
    

    Hola amigos bienvenidos a mi primer blog. Antes que nada quiero hacer una pequeña reseña para que sepan un poco de mí, y de lo que me motivó a escribir esta página.

    Me llamo Samuel. Desde siempre me ha gustado la música y los instrumentos musicales en general (en realidad cualquier cacharro que genere sonidos) tuve un pequeño piano cuando era muy pequeño, luego una flauta melódica regalada por un primo, (que no duro mucho en mis infantiles manos). A a los 10 años me interesé por la guitarra española de mi mamá que estaba colgada recogiendo polvo en una pared de mi casa. Por mi propia cuenta aprendí a afinarla con ayuda de unos casettes viejos que traían clases grabadas y que venían con unos fascículos coleccionables que mi madre compró antes de que yo existiera. También me aprendí algunas melodías sencillas, pero no mucho más. A esa edad mi determinación no fué suficiente y entre otros acontecimientos (como el desastre del año 99 en el estado Vargas donde vivía, que obligó a mi familia a mudarse a la fuerza) mi interés por el instrumento decayó temporalmente. 

    Entre tanto descubrí la electrónica, también por medio de fascículos coleccionables que heredé de mi padre (fallecido en 2002), y se despertó mi interés por ese mundo genial, aunque no tuve oportunidad de experimentar demasiado. Pero aprendí conceptos básicos, a soldar, y a hacer pequeñas reparaciones.

    A los 15 años más o menos me mude al estado Aragua donde aun resido, y conocí amigos que reavivaron mi interés por la guitarra y ahora si, me dediqué a aprender más en serio. Pero la idea en mi cabeza era clara: si iba a aprender a tocar con la española, era para algún día poder tocar la eléctrica... and rocking the house!! aunque eso no ocurrió hasta los 18 años cuando tuve mi primer trabajo "decente" y gracias a la cizaña de mi hermano, gasté el dinero que ahorraba para comprarme un celular, en mi querida eléctrica, que no es gran cosa pero era efectiva para mis oídos y para matar fiebre... de más está decir que nunca me arrepentí de no haber comprado el teléfono. (Thanks brother)

    Aprendí lo suficiente como para tocar decentemente casi cualquier canción de rock popular (o sea nada de virtuosismos).También aprendí un poco de bajo. Sin embargo creo que no es mi meta convertirme en un "paganini" de la guitarra, ya que me llaman la atención muchos otros instrumentos a los que me gustaría dedicarles tiempo, para llegar tocarlos a un nivel, mas o menos igual de aceptable del que alcancé con la guitarra.

Y uno de esos instrumentos es, ¡como no! la batería.

Peeero... hay 2 pequeños detalles:

1) Venezuela está pasando por la peor crisis económica de su historia al momento de escribir esto, y es difícil para una persona de modestos recursos comprar hasta un par de baquetas. (Es en serio, se necesita medio mes de salario para comprar unas decentes)

2) Vivo en una casa pequeña, en una vecindad un poco amontonada, en la que el espacio es limitado, y en la que vive mi señora abuela, la cual no soportaría el estruendo de una batería acústica, en caso de que pudiera comprármela (y renunciar a tener una cama con tal de tener espacio donde ponerla).

    Tomando eso en cuenta, parece que lo mas apropiado para mi sería una batería electrónica, que ocupa poco espacio y puedo escucharla con audífonos, o a volumen bajo. Pero de nuevo: el precio... no son nada baratas. Llegan a costar incluso más que un kit acústico para principiantes.

Pero vivimos en el siglo XXI señores, y recursos hay de sobra para crear prácticamente lo que nosotros queramos. Aunque en Venezuela tengamos el acceso un poco más difícil a esos recursos, aun es posible.

    Hace algunos meses viendo por internet descubrí la manera de armar una batería electrónica casera (o E-Drums en inglés) bastante decente con la ayuda de la dichosa plataforma Arduino (con la que dí por accidente mientras investigaba como automatizar las luces de mi casa!), y fue la respuesta a todas mis preguntas. Resulta que ya el costo no era un problema, así que decidí embarcarme en un proyecto que reunía tres de las cosas que mas me gustan en la vida: la música, la electrónica, y los trabajos manuales en general; además de la programación que siempre he querido aprenderla, pero no tenía motivación suficiente para entrarle, o mejor dicho, no sabía por donde empezar. Además pensé que sería genial hacer un blog venezolano sobre el tema pues en toda la info que leí no encontré ninguno que fuera de acá, y se me hace que esta posiblidad es mas o menos desconocida en nuestro país. Ah pero esperen... aquí en Venezuela hasta un clon de Arduino puede ser un poco caro todavía! Así que pedí el mío por Aliexpress (un clon obviamente, pues el original no se vende por esa vía, además de ser mucho mas caro, aunque es en esencia un clon es lo mismo pero sin el soporte oficial) junto con los sensores necesarios para el proyecto. 

    Me salio en $8 aproximadamente el aparatico. Elegí la versión Mega, que trae muchas mas entradas y por lo tanto, me da la posibilidad de ponerle mas piezas a mi batería. Los sensores vinieron en un paquete de 20 unidades por menos de $3. ¿Barato verdad? Lo mejor: el envío desde china es gratis, via Ipostel. Lo peor: Se tarda como mes y medio en llegar los pedidos de allá. Considerando que el producto llega a Venezuela en solo 10 días o menos, la causa de tanto retraso se la atribuyo a la ineficiencia de Ipostel. Pero bueno, hace mucho que aquí nada funciona como debería. Bueh... no quiero centrarme en los detalles negativos del asunto pues en parte este proyecto tiene como objetivo distraer mi mente de tantas cosas negativas que veo últimamente.

    He aquí los componentes críticos del proyecto el mismo día que me llegaron:

Clon de Arduino Mega: $7,53 por Aliexpress


   
Sensores piezoeléctricos: 20 X $2,85 Aliexpress

    Decidí comenzar este proyecto, incluyendo la creación del blog, cuando ya tuviera estos componentes en mi poder (los recibí hace tres días), ya que son lo mas difícil de conseguir y lo mas indispensable para la construcción de la batería, y como con Ipostel nada es seguro, nunca se sabe si iba a poder terminar luego de empezar. Pero menos mal llegaron dentro de lo esperado y puedo empezar a dar los primeros pasos.

    Cabe destacar que no soy ni mucho menos un experto en la programación de Arduino. Ni he hecho nada parecido a una batería antes. Este es un detalle importante de este blog: no solo intentaré mostrar como con poco dinero podemos disponer de una batería totalmente funcional para poder practicar, sino también ir compartiendo mi proceso de aprendizaje a lo largo del desarrollo del proyecto (incluyendo errores, como no), esperando que ese proceso le pueda servir de ayuda o inspiración a aquellos que se animen a construir sus propios E-Drums totalmente hechos en casa.  

   Ahora bien, he mencionado Arduino varias veces hasta aquí pero: ¿Que demonios es Arduino? (Te puedes saltar este párrafo si ya lo sabes) Pongámoslo lo más sencillo posible: es una especie de micro computadora, con entradas y salidas de datos, las cuales son programables mediante un código, en el que le podemos indicar a su cerebro (un chip llamado microcontrolador) qué es lo que debe hacer con la información que reciba y como debe entregarla una vez procesada. Dicho código lo escribimos en la PC y se lo cargamos mediante un cable USB al coso. Suena simple, pero con suficiente imaginación, las cosas que podemos hacer con Arduino son prácticamente ilimitadas. De hecho se construyen robots, juegos de luces, calculadoras, sistemas para monitorear o automatizar lo que se nos ocurra, juguetes, y un laaargo etcétera... las posibilidades se extienden hacia el infinito. 

   En nuestro caso, Arduino básicamente hará la función de mediador entre unos sensores y un programa en la computadora, que es el que nos va a generar los sonidos como tal de batería que vamos a escuchar. En mi caso el programa que usaré será el Superior Dummer 2.0, corriendo en FL Studio 11, porque ya los he usado bastante para hacer pistas y estoy familiarizado con ellos. Pero hay muchas otras opciones disponibles que también proporcionan sonidos de batería de altísima calidad, como Addictive Drums, EZ Drummer o librerias Kontakt.


Toontrack Superior Drummer 2.0 será la fuente de sonidos para mi batería, aunque no es la única que podemos usar.

   Como vemos, el aparato físico con forma de batería que vamos a construir, no influirá para nada en la calidad del audio (como es el caso en las baterías acústicas), porque los sonidos los va a generar por completo la PC. Para lo que si nos servirá es para tener una superficie de contacto tangible, con la forma y respuesta física adecuada, donde podamos golpear y generar las señales que van a activar los sonidos correspondientes en el programa. Esto se logra mediante los ya mencionados sensores piezoeléctricos, que son dispositivos capaces de generar un pulso eléctrico cuando se les golpea o someten a alguna vibración. 

Detalle de un sensor piezoeléctrico



    Al estar uno de ellos en contacto digamos, con la superficie de uno de nuestros tambores, cada vez que lo golpeemos la vibración activará ese sensor. El Arduino recogerá esa señal analógica, la cuantificará y digitalizará (en el código definimos los parámetros de dicha conversión) y seguidamente la entregará a la PC vía USB, quien la interpretará como una orden para accionar "X" tambor (o "X" plato, según convenga). A este tipo de dispositivos de accionamiento remoto se les llama "triggers" en informática musical, que en inglés significa "gatillos", por su función de disparar las notas musicales a distancia del aparato que las genera, que en nuestro caso es una PC.

     Ese es, a grandes rasgos, todo el funcionamiento de la "perola" que pretendo construir. Los avances los he de ir documentando en las semanas o meses sucesivos. Debido a la crisis que nos aqueja y que en estos momentos recrudece, no se que tan rápido pueda progresar, pero como gran parte de los materiales que necesito serán reciclados, espero que no sea tan lenta la cosa. Tengo mucho que aprender y crearé nuevas entradas para compartir mis descubrimientos. Seguro que habrá mucho ensayo y error.

    Y bueno si has llegado hasta aquí pues gracias por calarte la parrafada, espero encuentres algo que te sea de utilidad, o al menos te entretenga, hasta pronto! nos vemos en una próxima entrada.

     Saludos...