Música en directo con dispositivos MIDI

Música en directo con dispositivos MIDI

by MicroBlocks

Boards
Boards:

Component/s
Components:

None

¿Música en directo, de verdad?

¡Sí, de verdad! Hace tiempo que la gente programa música en directo ante el público. Esta práctica se conoce como "live coding" (programación en directo) y tiene una comunidad muy activa y apasionada en todo el mundo.

Normalmente, los programadores de "live coding" utilizan lenguajes que pueden producir sonido por sí mismos, y aunque los microcontroladores pueden producir sonido por sí mismos, no te será fácil hacer bailar a nadie con ellos.

Los microcontroladores pueden interactuar con dispositivos de producción musical mediante un protocolo llamado MIDI. Es precisamente lo que usaremos en esta actividad.

Generación de sonido con microcontrolador

Si estás interesado en los tipos de sonidos que puedes hacer solo con un microcontrolador, probablemente ya debes haber probado las bibliotecas Tonos y Politonos que se encuentran en la carpeta raíz del navegador de Bibliotecas, pero hay algunas bibliotecas más que deberías conocer. Especialmente Síntesis analógica, Tablas de ondas, Chiptune, Acordes de onda cuadrada, Guitarra (Pluck en inglés) y MultiTone, que se encuentran en la carpeta de Sonido en el navegador de Bibliotecas.

¿Qué dispositivo necesito?

El mejor dispositivo MIDI es el que ya tienes. Si tienes un órgano digital antiguo, un sintetizador o un módulo MIDI -había quien utilizaba módulos MIDI en los primeros años de los juegos de ordenador para obtener una experiencia musical considerablemente mejor-, eso es lo que deberías usar.

El segundo mejor dispositivo MIDI es el que alguien más tiene y no quiere. Busca "módulos MIDI" en sitios web y aplicaciones de artículos de segunda mano. Puedes asegurarte de que hacen lo que necesitas buscando su manual de instrucciones en internet, o buscando vídeos que expliquen el módulo concreto que has encontrado. Se recomienda empezar al menos a echar un vistazo a esta actividad para tener un poco más claro qué debes buscar exactamente, pero en términos generales necesitas un módulo de sonido con un puerto MIDI IN y una conexión de salida de audio. Yo he tenido suerte con algunos módulos que me han costado menos de 100 €, pero también he tenido mala suerte con módulos más caros que parecían muy prometedores y han acabado sonando bastante mal.

Seguramente, la tercera mejor opción es comprar un dispositivo MIDI actual. No hace falta que te gastes mucho dinero en tu primer sintetizador. Hay tiendas independientes que venden módulos muy bien construidos y asequibles. Busca "módulo MIDI de tablas de ondas" -si quieres encontrar alguno, búscalo en inglés como "MIDI wavetable module"- por internet y elige el que te haga más rabia.

Si eres un poco "manitas", puedes encontrar kits de soldadura por internet que vienen con las PCB y todos los componentes para soldártelos tú mismo.

Si no estás seguro de qué comprar exactamente, siempre puedes contactar con nosotros para pedir orientaciones más concretas.

¿Y si no tengo ningún sintetizador?

No hay problema. La cuarta mejor opción es la virtual. Si tu placa soporta USB MIDI, puedes utilizar un sintetizador por software. Los más habituales son FluidSynth y su compañero gráfico QSynth, pero también podrías utilizar uno basado en web y WebMIDI. Si eliges esta opción, te recomendamos que pruebes SpessaSynth.

La primera vez que pruebes SpessaSynth, necesitarás otorgarle permisos para acceder a WebMIDI. Esto solo será necesario que lo hagas una vez.

¿Qué microcontrolador necesito?

¡Cualquiera debería irte bien! Ten en cuenta, sin embargo, que algunos microcontroladores tienen una memoria persistente ligeramente más lenta y eso podría provocar retrasos en el tiempo de reproducción. Incluso una pequeña caída de 10 milisegundos en el tempo es perfectamente perceptible al oído humano.

¿Y si no tengo ningún microcontrolador?

Bueno, MicroBlocks es un lenguaje de programación para microcontroladores, pero siempre puedes usar Boardie, nuestro microcontrolador virtual, para probar cómo funciona todo.

Si tiras por este camino, solo podrás utilizar dispositivos USB MIDI o WebMIDI. Si decides hacerlo todo basado en web y utilizas Boardie y un sintetizador WebMIDI, haz clic primero sobre cualquier bloque de MIDI en MicroBlocks para que el navegador te pida que le otorgues permiso para acceder a WebMIDI.

Aunque Boardie con SpessaSynth son suficientes para hacer pruebas e, incluso, para fines educativos, puede que experimentes pequeños problemas de latencia con esta combinación. Puede que algunas notas se pierdan por problemas de tiempo, y puede que otras suenen ligeramente desfasadas. Eso sí, no tendrás que pelearte con cables ni aparatos de sonido, y podrás hacer pruebas antes de decidirte a comprar un dispositivo físico.

Conexión física

Para empezar, deberás conectar tu microcontrolador al puerto MIDI IN de tu dispositivo. En la mayoría de los casos solo necesitarás dos cables:

  • El pin 5 del conector MIDI DIN debería ir al pin serie de tu microcontrolador. Si tu placa opera con lógica de 5 V, deberás añadir una resistencia de 220 Ω en serie en este cable. Si es de 3,3 V, la resistencia deberá ser de 10 Ω.
Algunas placas tienen un conector serie incorporado. Busca cuál es en el diagrama de pines de tu placa. Si no tiene, puedes utilizar cualquier pin digital como pin serie, aunque el pin serie por hardware suele funcionar mejor.
  • El pin 4 del conector MIDI DIN debería ir a un pin de 3,3 V o 5 V de tu microcontrolador. Nuevamente, conecta una resistencia de 220 Ω en serie para pines de 5 V, o una de 10 Ω para 3,3 V.

diagrama de dos hilos para conectar el dispositivo MIDI y el microcontrolador

Si esto no funciona quizás necesites una conexión a "tierra" (GND). En este caso se debe añadir un hilo más:

  • El pin 2 del conector MIDI DIN se debería conectar al pin GND de tu microcontrolador.

diagrama de conexiones MIDI y microcontrolador con conexión a tierra (GND)

Cuatro palabras sobre MIDI

MIDI -Musical Instrument Digital Interface- (Interfaz Digital de Instrumentos Musicales) es un sistema estándar de comunicación para dispositivos musicales. Estos dispositivos incluyen aquellos que producen música, como sintetizadores, samplers, tablas de ondas, romplers y otros aparatos musicales, y aquellos dispositivos que controlan estos aparatos, como teclados controladores, arpegiadores, secuenciadores, pads o, en nuestro caso, lenguajes de programación.

En el protocolo MIDI, cada nota musical tiene asignado un determinado número. Esto se entenderá mejor sobre un teclado de piano:

números de notas MIDI representados en el teclado de un piano

Además, los dispositivos MIDI pueden reproducir música por diferentes canales simultáneamente. Cada canal también puede configurarse para reproducir un instrumento diferente.

La biblioteca MIDI de MicroBlocks sigue la especificación estandarizada «General MIDI» (o GM) para instrumentos musicales. El GM es una clasificación de instrumentos musicales que siguen muchos dispositivos MIDI. Cada instrumento se identifica por un número. Esto significa, por ejemplo, que es de esperar que muchos dispositivos MIDI reproduzcan un sonido similar al de un saxofón soprano cuando se les indique que usen el instrumento número 65. También significa que muchos reproducirán tambores u otros instrumentos de percusión cuando se les indique que toquen una nota en el canal 10.

Dicho esto, no todos los dispositivos MIDI siguen la convención GM, así que los resultados pueden variar.

Primeros pasos

Para poder interactuar con tu dispositivo MIDI, hay que empezar importando la biblioteca MIDI. Haz clic en el signo más al lado de Bibliotecas, justo debajo de la lista de categorías de bloques, y navega hasta la carpeta Sonido. Después, selecciona la biblioteca MIDI y haz clic en Abrir.

Esta biblioteca contiene muchos bloques, pero no te agobies. En esta actividad solo usaremos algunos. Concretamente:

bloque toca nota MIDI bloque selecciona instrumento MIDI bloque toca batería MIDI bloque reinicializa MIDI bloque configura pin MIDI

Más adelante explicaremos qué hacen los cuatro primeros bloques, así que, de momento, no los comentaremos.

El bloque bloque reinicializa MIDI pedirá a tu sintetizador que detenga todos los sonidos y vuelva a su estado original. Esto es especialmente útil en los casos donde una nota ha quedado sonando y no sabes cuál es o en qué canal se encuentra.

Si has conectado tu dispositivo al pin serie por hardware, no necesitas saber nada más de esta sección. En caso contrario, sigue leyendo para aprender qué hace el bloque bloque configura MIDI al pin.

Puerto serie por software

Para configurar tu placa para enviar órdenes MIDI a través de un puerto serie específico, simplemente introduce en el bloque el número de pin donde has conectado el pin 5 del conector MIDI bloque configura MIDI al pin y haz clic en el bloque.

USB MIDI

Si tu placa lo soporta, puedes usarla para controlar un dispositivo MIDI por USB. Simplemente, selecciona USB en el bloque bloque configura MIDI al pin
USB y haz clic en él.

Sin embargo, ten en cuenta que no podrás programar la placa a través de su conector USB si la has conectado a un dispositivo MIDI por USB. Tienes la opción de usar un programa sintetizador -como FluidSynth-, que recibe comandos MIDI a través del mismo cable USB que MicroBlocks usa para comunicarse con la placa. La otra opción es programar tu placa a través de BLE (Bluetooth). En este caso, necesitarás usar esta versión web de MicroBlocks. También puedes usar tu ordenador como intermediario entre tu microcontrolador y el dispositivo MIDI USB. En Linux, por ejemplo, esto se hace mediante el comando aconnect.

Tocar la primera nota

Para comprobar que todo está correctamente configurado -y suponiendo que tu sintetizador esté preparado para recibir comandos MIDI a través del canal 0 y reproducir música-, haz clic en el bloque bloque toca nota
MIDI. En una configuración estándar, tu dispositivo MIDI debería reproducir un Do 4 -o Do central-, muy probablemente con timbre de piano.

Si este no es el caso, asegúrate de revisar todas las instrucciones anteriores, empezando por la conexión física. Es aconsejable que leas la documentación específica de tu dispositivo MIDI para asegurarte de que está preparado para recibir comandos MIDI en el canal 0. Si tienes un controlador MIDI, puedes probar a conectarlo a tu dispositivo MIDI para descartar cualquier problema de configuración relativo a MicroBlocks.

Una primera composición

Empecemos por seleccionar un instrumento diferente para el canal 1, el que prefieras:

selección del vibráfono para el canal 1

Ahora puedes componer una canción sencilla utilizando un bucle sobre una lista de notas, como por ejemplo:

script que reproduce Old McDonald had a farm

Todo esto es fabuloso para escribir melodías, pero tendrás que programar muy rápido para hacer música en directo de esta manera y que el público no se vaya.

A continuación veremos algunos trucos que nos harán más fácil la producción de música en directo. Quizás perdamos un poco de control sobre las melodías que querríamos hacer sonar, pero a cambio ganaremos variedad y velocidad de composición.

Patrones rítmicos

Para empezar, crearemos varias combinaciones de ritmos de batería sobre los cuales iremos añadiendo otros instrumentos. Así podemos hacer que el público empiece a moverse mientras nosotros aprovechamos el tiempo para construir estructuras musicales más complejas.

Para ello, usaremos la biblioteca de Ritmo, que contiene abstracciones para duraciones de notas, tempos, compases y tiempos. También se encarga de mantenerlo todo sincronizado.

Quizás pienses que no necesitas una biblioteca de ritmos para construir patrones de batería, y tienes toda la razón si eso es todo lo que quieres hacer. Aquí tienes un patrón rítmico sencillo elaborado solo con la biblioteca MIDI y bloques de la paleta estándar:

patrón de batería rock sencillo con bucle por siempre y bloques de espera

Pero si lo que quieres, por ejemplo, es añadir un patrón de charles en paralelo, además de una línea de bajo, una progresión de acordes de guitarra y una improvisación de piano, pronto te darás cuenta de que sincronizar estos bloques de espera puede ser muy difícil. Además, pensar en el ritmo en términos de milisegundos se puede volver muy complicado.

Veamos cómo la biblioteca de Ritmo nos puede ayudar. La encontrarás en la carpeta Sonido del navegador de bibliotecas, allí donde antes has encontrado la biblioteca MIDI.

Cuatro palabras sobre ritmo

La biblioteca de Ritmo proporciona abstracciones para fracciones de compases, también conocidas como duraciones de notas. Este es el aspecto de los bloques para las duraciones:

El bloque representa una redonda. Los otros bloques representan fracciones de esta duración. Por ejemplo, representa una blanca (o la mitad de una redonda), mientras que representa una negra.

Estas duraciones no son absolutas, sino que son valores relativos que dependen de un determinado tempo. Puedes establecer el tempo y el tipo de compás de tu composición mediante este bloque:

bloque establece tempo y compás

El tempo, expresado en PPM (pulsaciones por minuto o, en inglés, BPM: beats per minute), determina la velocidad de reproducción o de interpretación de la música. A más pulsaciones por minuto, más rápida es la música (porque caben más notas en un minuto).

Tipo de compás

Para simplificar las cosas y facilitar su explicación, en esta actividad ignoraremos completamente los tipos de compás. Si quieres hacer música más compleja, te interesará saber que la biblioteca de Ritmo tiene un metrónomo interno que puedes inicializar con . Con el metrónomo en marcha podrás consultar el compás y el tiempo de la música con los bloques y , y utilizar los bloques de espera correspondientes para sincronizar tu música al tiempo o compás necesario.

Sincronizar ritmos

Como hemos visto antes, sincronizar programas que producen música puede ser complicado. El objetivo del bloque es facilitarnos la vida en este sentido. Intenta ejecutar estos dos programas en paralelo:

¿Has notado cómo no se desfasan? El truco reside en que el bloque usa una especie de metrónomo y se espera hasta que comience la siguiente duración para dar paso al siguiente bloque.

Ni siquiera hace falta que iniciemos ambos programas al mismo tiempo. El bloque siempre se asegurará de mantenerlos sincronizados.

Patrón de percusión

Ahora podemos volver a hacer el mismo patrón de la sección anterior, pero esta vez utilizando duraciones de notas relativas y con un patrón de charles sonando en paralelo:

Armonías y melodías

Ahora añadiremos algunos instrumentos a la mezcla para crear patrones melódicos y armónicos. Usaremos la biblioteca de Escalas y acordes, que se encuentra también en la carpeta Sonido del navegador de bibliotecas.

Esta biblioteca puede parecer, a primera vista, un poco intimidante, ya que ofrece abstracciones para muchos conceptos musicales, pero en el contexto de esta actividad usaremos solo unos cuantos bloques.

Acordes

Los acordes son grupos de notas que se tocan todas a la vez. La biblioteca de Escalas y acordes ofrece varias maneras de crear acordes y progresiones de acordes (es decir, acordes que se tocan sucesivamente), pero en esta actividad solo usaremos el bloque más explícito bloque acorde mayor con raíz
60.

El bloque bloque toca nota MIDI 60 durante 500 ms en el canal 1 volumen
127 de la biblioteca MIDI acepta acordes como entradas, además de notas individuales, de manera que si se deja caer el bloque bloque acorde mayor con raíz 60 en la entrada para la nota MIDI, sonará el acorde. En este ejemplo, hemos seleccionado el piano por defecto (número 1) para el canal 1:

bloque toca nota MIDI con un acorde de Do mayor como parámetro

Aquí tienes un patrón sencillo de dos acordes para piano, que podemos tocar junto con el patrón de batería construido en la sección anterior:

una simple progresión de dos acordes mayores

Añadiendo un poco de aleatoriedad podemos hacer este patrón mucho más interesante.

progresión de dos acordes mayores donde cada acorde se toca un número aleatorio
de veces seguidas

Arpegios

Antes de nada, ¡recarga la biblioteca MIDI!

La biblioteca de Escalas y acordes puede reproducir arpegios sobre diferentes sistemas de generación de sonido, pero es necesario que carguemos la biblioteca de salida de sonido que queramos después de la de Escalas y acordes. En nuestro caso, ya teníamos cargada la biblioteca MIDI y, por tanto, será necesario que la volvamos a cargar antes de poder utilizar el arpegiador.

Para ello, solo hay que hacer clic con el botón derecho del ratón sobre el nombre de la biblioteca (MIDI) en el selector de bibliotecas y seleccionar la opción recarga la biblioteca.

Cuando las notas que forman un acorde se tocan individualmente de forma sucesiva, en lugar de todas a la vez, esto se llama arpegio. Como no las tocamos todas de golpe, en los arpegios también podemos decidir el orden en que tocamos cada una de las notas individuales que lo forman. Diferentes disposiciones de notas pueden generar sensaciones muy diferentes con un mismo arpegio.

De la misma manera, podemos decidir diferentes duraciones para cada una de las notas del acorde y así cambiar radicalmente la manera en que suena el arpegio.

La biblioteca de Escalas y acordes proporciona un bloque arpegia que se encarga de tocar arpegios:

bloque arpegia

El bloque arpegia acepta una lista de notas que puede ser un acorde, una escala o una lista arbitraria de notas MIDI. El bloque tocará las notas de la lista en el orden y las duraciones que se le indiquen.

Fíjate en que el orden puede saltar posiciones en la lista, y que podemos especificarlo con una lista de números, o con una cadena de texto separada por comas, para ir más deprisa.

Las duraciones de las notas también se pueden especificar como una lista de duraciones explícitas (es decir, una lista de bloques como 1/2, 1/4, etc.) o como una cadena de texto separada por comas. En este último caso, solo hay que especificar el denominador de la fracción. Es decir, 4 significa 1/4, 8 significa 1/8, etc.

Escuchemos cómo suena un acorde arpegiado:

arpegiando Do mayor

En este ejemplo, el bloque contiene los valores 36, 40, 43, 48. Estas son las cuatro notas correspondientes al acorde de Do2 mayor, un acorde bastante grave.

El orden especificado 1,3,4,2 significa que se tocará la secuencia de notas 36, 43, 48, 40.

Si hay más notas que duraciones, las duraciones dan la vuelta. Esto significa que las cuatro notas que se tocarán tendrán las siguientes duraciones respectivamente: 1/4, 1/8, 1/4 y 1/8.

Teniendo esto presente, seleccionamos un sonido de bajo para el canal 2, y escribimos una línea de bajo sencilla para tocar encima de todo:

bloque para seleccionar el sonido de bajo una línea de bajo simple

Escribir los órdenes y las duraciones de los arpegios como cadenas separadas por comas permite componer la música más rápidamente, pero puede ser un poco menos versátil. Si se usa una lista real, la podremos mezclar, invertir y aplicarle otras operaciones de manipulación de listas mientras suena la música, ofreciendo un poco más de libertad musical.

Improvisación sencilla

Lo que hemos hecho hasta ahora ya es suficiente para hacer música en directo, pero puedes añadir un poco más de variación con un poco de improvisación.

El bloque improvisa de la biblioteca de Escalas y acordes sigue un método muy sencillo e ingenuo que imita lo que podría hacer un estudiante de música principiante cuando aprende una nueva escala y empieza a improvisar en ella. Si lo usas para hacer improvisaciones largas se le verá el plumero enseguida, pero si lo usas para frases cortas y de vez en cuando, puede hacer que tu música sea más animada y sonará bastante creíble.

Este es el aspecto del bloque improvisa:

el bloque "improvisa"

El bloque improvisa también acepta una lista de notas. Puedes hacer que improvise sobre un acorde, pero sonará un poco aburrido porque los acordes están formados por muy pocas notas. Normalmente improvisarás sobre una escala, lo que generalmente requiere un poco de teoría musical para saber qué escalas combinan bien con qué acordes y progresiones de acordes.

Como siempre en MicroBlocks, puedes experimentar con diferentes escalas y acordes para ver qué te suena bien. ¡El oído humano es la mejor prueba de teoría musical que hay!

Aquí tienes un consejo para esta actividad: la escala jónica con la nota 60 (Do4) como raíz encaja bien con la progresión de dos acordes que hemos estado utilizando.

En el segundo parámetro del bloque improvisa se indica la cantidad de compases que queremos que dure la improvisación. Como nos hemos centrado en un compás de 4/4 (para no alargar la actividad no hablaremos de ningún otro tipo de compás), podemos equiparar un compás a una duración de . Es decir, 2 compases equivaldrán a la duración de dos redondas.

El siguiente parámetro especifica las posibles duraciones de las notas improvisadas. Estas duraciones no se tocarán en orden, sino de manera aleatoria. Esto significa que, en caso del valor por defecto 4, 4, 8, una negra se reproducirá con el doble de probabilidad que una corchea.

Teniendo en cuenta todo lo que hemos explicado hasta ahora, seleccionamos un vibráfono para el canal 3 e improvisamos sobre la base que hemos establecido antes durante dos compases de cada cuatro:

seleccionar el vibráfono para el canal 3 improvisa sobre la escala jónica, raíz 60, a lo largo de 2 compases

Observa cómo, en este caso, esperamos hasta . Esto garantiza que la improvisación comenzará solo cada cuatro redondas.

Observaciones finales y algunos trucos

A lo largo de esta actividad puede que hayas tropezado con un par de problemas que ahora, al acabar, te serán más fáciles de entender.

Veamos por qué pasan y cómo solucionarlos.

A veces se omiten iteraciones del bucle

Aunque estas bibliotecas hacen todo lo posible por mantener el tempo ajustado y consistente, hay diferentes factores que pueden hacer que las notes duren un poco más de lo que querríamos. Los comandos MIDI viajan a través de una conexión serie y esta transmisión tarda algunos milisegundos. Al tocar un acorde, por ejemplo, se envían varios de estos comandos en un corto período de tiempo, y esto puede hacer que el acorde acabe un poco más tarde de lo previsto.

Cuando esto pasa, el siguiente quizás tenga que esperarse un período extra completo hasta poder dar paso a la siguiente iteración.

Por ejemplo, intentemos tocar ocho notas de 1/8 en la progresión de acordes:

el salto se da cuando se tocan ocho notas de 1/8 seguidas

Se puede observar cómo, de vez en cuando, uno de los bucles repite acaba un poco tarde y hace que la espera siguiente no coincida exactamente con el inicio de la siguiente redonda.

Una solución fácil es, teniendo en cuenta ese tiempo extra que necesitan los acordes, reducir un poco su duración:

tocando ocho notas de 1/8 dos veces seguidas

Acordes desincronizados

La situación anterior, a veces, puede provocar que los acordes se desincronicen. Por ejemplo, puede que uno de los arpegios dure un poco más de lo que le tocaba y que, por tanto, tenga que esperarse hasta el siguiente período de tiempo, saltándose una iteración.

Esto puede hacer que, en nuestro caso, la línea de bajo y las progresiones de acordes no coincidan, haciendo que la música suene bastante desagradable y disonante:

Esto es fácil de arreglar. Como cada uno de estos bucles debería durar dos notas completas, podemos pedirle a que se espere hasta el siguiente período de tiempo de duración .

la línea de bajo corregida la progresión de acordes corregida

¡Haz tu música!

Esto es solo una pequeña muestra de la música que puedes llegar a producir con MicroBlocks y dispositivos MIDI. Las tres bibliotecas que hemos introducido en esta actividad pueden ir mucho más allá de lo que se ha visto aquí.

¡Te invitamos a explorar todos los bloques que proporcionan y a compartir tu música con el mundo!

CC-BY-SA

© by MicroBlocks 2019-2025.
This work is licensed under a CC-BY-SA 4.0 license.