Informática musical

Entorno para sesiones musicales en remoto

Este tutorial trata de explicar los pasos necesarios para instalar y configurar un entorno con los elementos suficientes que permitan a varios participantes compartir una sesión musical de forma remota. Este entorno puede ser útil para varios fines, como pueden ser: audiciones, clases particulares, masterclasses, compartir ideas musicales...

Me centraré en herramientas gratuitas para el sistema operativo Windows, aunque el sistema es compatible con Apple.

Uno de los problemas a la hora de transmitir el sonido por la red es el difícil equilibrio entre ancho de banda y calidad. Una de las alternativas para mejorar este equilibrio consiste en enviar datos MIDI por la red, en lugar del sonido muestreado. De este modo se logran tres ventajas:

  • La cantidad de datos a transmitir por unidad de tiempo se reduce drásticamente
  • El sonido se genera en el destino, con lo que no se pierde calidad debido al codec para el transporte.
  • Los datos MIDI pueden ser interpretados por un software como un secuenciador, teclado virtual o editor de partituras, de tal modo que el alumno puede recibir feedback visual en varios formatos y en tiempo real de lo que el profesor está tocando.

Como podemos deducir, esta solución está limitada instrumentos con interfaz MIDI.

Para el envío y recepción de mensajes MIDI por la red, utilizaremos un software denominado rtpMIDI de Tobias Erichsen. Este software es compatible con la implementación de Apple de MIDI a través de la red.

Como software MIDI utilizaremos un teclado virtual, de tal modo que podamos ver lo que el otro participante está tocando en cada momento. En este caso instalaremos VMPK.

A continuación se muestra un diagrama con las conexiones que se van a realizar:

 

Diagramas

Como podemos ver, la salida MIDI del piano se engancha a la entrada MIDI de rtpMIDI, que transmite la información por la red. Los datos MIDI recibidos por rtpMIDI se enrutan hacia VMPK, que muestra las notas pulsadas en cada momento y, a su vez, hacia el piano digital. De este modo, escuchamos a través de nuestro piano lo que el otro participante está tocando en cada momento.

Podríamos utilizar cualquier otro instrumento con interfaz MIDI, no estando limitada esta solución al piano.

Es importante hacer notar que cada instancia de rtpMIDI va a conectarse a través de Internet a otra instancia. Por tanto, será necesario abrir los puertos (por defecto los puertos 5004 y 5005) en cada router y redirigir el tráfico al host correspondiente. Estos pasos quedan fuera del ámbito de este artículo.

A continuación explicaré los pasos necesarios para instalar y configurar ambas herramientas.

rtpMIDI

Una vez descargado e instalado, y teniendo el instrumento MIDI conectado al PC, iniciamos el programa:

rtpMIDI: primer paso

El siguiente paso consistirá en enrutar la salida y la entrada MIDI al dispositivo. En este caso, se denomina USB-MIDI, pero su nombre dependerá del hardware que estemos utilizando:

rtpMIDI: segundo paso

A continuación vamos a configurar la conexión al equipo remoto. Para ello, pulsamos el botón “+” que hay en la parte inferior del área “Directory”, con lo que nos aparece la ventana para introducir un nombre y la IP y puerto del equipo remoto:

rtpMIDI: tercer paso

Pulsamos OK, y habilitamos la sesión, marcando el check “Enabled” que hay en la parte superior derecha:

rtpMIDI: cuarto paso

Si el otro usuario ha seguido los mismos pasos, a partir de este momento lo que cada uno interprete a través de su instrumento, sonará en el instrumento del otro participante remoto.

Nota: en pruebas preliminares, entre equipos de distintas zonas geográficas se han logrado latencia muy bajas, con lo que no se descarta incluso hacer un "combo" o sesión simultánea entre varios músicos.

VMPK

Para hacer la experiencia más interesante, vamos a instalar un software para visualizar las notas que el otro participante está tocando en cada momento. En este caso se trata de un teclado virtual denominado VMPK. Una vez instalado, lo arrancamos:

VMPK: primer paso

Y nos vamos a la opción de menú “Edición | Conexiones MIDI”. Vamos a habilitar la entrada MIDI, seleccionando como entrada el dispositivo MIDI virtual creado por rtpMIDI:

VMPK: segundo paso

Pulsamos “Aceptar” y a partir de este momento, la música interpretada por el otro participante en remoto se visualizará en el teclado virtual y sonará en nuestro instrumento MIDI.

Estos pasos se pueden replicar tantas veces como número de participantes remotos, de tal modo que podríamos enviar y recibir simultáneamente mensajes MIDI de varios participantes.

Para lograr una experiencia más rica, sería aconsejable utilizar simultáneamente algún software de conferencia o videoconferencia, pero este punto queda fuera del ámbito de este tutorial.

No quiero finalizar este texto sin agradecer a klausmaria su apoyo prestado para realizar las pruebas pertinentes de este sistema. En este caso, uno de los equipos fue configurado según el entorno descrito en este tutorial y el otro equipo utilizó el software de Apple para MIDI por la red.

¿Te gustó este artículo?
12
Comentarios
  • #1 por devakuo el 22/04/2013
    Yo lo uso para conectar el ipad a mi equipo. Es genial esta aplicación.
  • #2 por Poeta el 22/04/2013
    Buen articulo, y muy interesante..

    Ultimamente estamos haciendo un doctorado sobre Midi en Hispasonic, se agradece mucho..

    ;-) Gracias otra vez por tu articulo...
  • #3 por supertorpe el 22/04/2013
    Gracias por comentar. La verdad es que se abren muchas posibilidades con este sistema.
    Estoy intentando promover una iniciativa "reuniones hispateclas" en este sentido que creo que es muy interesante.
    1
  • #4 por SG-Bass el 22/04/2013
    Grande =D>
  • #5 por Armando el 22/04/2013
    Muy interesante.Gracias por el articulo.
  • avatar
    #6 por --26171-- el 22/04/2013
    habrá que probarlo cuando saque un minuto.
  • #7 por parker25 el 22/04/2013
    que interesante
  • #8 por KlausMaria el 22/04/2013
    Una experiencia interesante... da para plantearse algún proyecto que otro :-)

    Sólo comentar que en el Mac es básicamente lo mismo (como veréis en la captura) sólo que no necesitas ningúna aplicación extra, viene de serie con OSX.

    33601.jpg

    Al momento de probarlo con Supertorpe ya estaba haciendo cábalas... midiXinternet + eLearning... interesante.
    1
  • #9 por supertorpe el 22/04/2013
    Hay un software comercial para la enseñanza a distancia transmitiendo MIDI:

    http://www.zenph.com/im2

    No obstante, realizar una plataforma de academia, todo integrado, sería interesante. De hecho, no paro de recopilar recursos relativos a videoconferencia embebida en la web + librerías rtp MIDI + STUN + ... :tasmal:
  • #10 por reppohw el 22/04/2013
    Gracias.

    Pero a mi me gustaría poder enviar midi a un equipo remoto y recibir el audio que genere. ¿Alguna sugerencia?
  • #11 por RaulMX el 22/04/2013
    #10 El mismo sistema midi del tutorial para enviar la información midi y el audio enviado desde el otro punto por streaming con el windows media encoder http://windows-media-encoder.uptodown.com/ podría ser una opción.

    Claro si solo quieres recoger el sonido, no se de un modulo, sintetizador o un sampler, ya que la latencia sera muy alta, lo que si tendrias por midi 16 equipos distintos para generar el sonido.
  • #12 por RaulMX el 22/04/2013
    #10 Podría ser un buen nicho de negocio, envia midi en tiempo real y recibe los sonidos de EW Hollywood Strings sin tener la super computadora...
  • #13 por Mister Carrington el 23/04/2013
    Sorprendido me hallo.
    Era tan fácil...
    Y no me había enterado aún.

    MUCHAS gracias.
  • #14 por vagar el 24/04/2013
    Yo también he tonteado con la idea de crear una herramienta de entrenamiento musical remoto. Estuve estudiando el protocolo RTP y cómo irle añadiendo distintos tipos de payload, viendo las librerías existentes, codecs de audio de baja latencia... lo más fácil sería modificar algún software libre de videoconferencia y añadirle midi, pizarra virtual, pentagrama virtual, transferencia de archivos... Había algún buen candidato por ahí, tendría que rebuscar en la información que recopilé en su momento hace un par de años.

    Es técnicamente factible, pero son varios cientos de horas de curro y el problema de la latencia es un inconveniente bastante importante respecto a la enseñanza en directo que no hay forma de resolver con la actual infraestructura de telecomunicaciones.

    Luego estaría el tema de sacarle rendimiento económico: si se quiere hacer software comercial habría que licenciar bastantes librerías, y si se hace libre habría que desarrollar un modelo de negocio que monetizara el soporte técnico o el hosting del servicio.
  • #15 por supertorpe el 24/04/2013
    Otra opción es aprovechar distintos elementos que ya estén terminados y que se puedan alojar en un servidor propio (p.e. snapyap para videoconferencia) e integrarlos a nivel visual (no de código).
    Respecto a la latencia, cuando es uno de los participantes el que está tocando y el otro escuchando, en las pruebas que hicimos era casi instantáneo. Cuando el MIDI viaja en los dos sentidos sí es perceptible un ligerísimo desfase.
    Respecto al rendimiento económico yo tiraría más por alquilar el hosting del servicio.
  • #16 por KlausMaria el 24/04/2013
    Aunque hacer las cosas en tiempo real es interesante yo no descartaría montar servicios "asíncronos" (como este foro), la posibilidad de registrar midi en remoto creo que permitiría desarrollar servicios interesantes. No se, proyectos de tipo colaborativo, educativo (puedes registrar tu interpretación y luego el profe te "corrige" por email), etc... incluso en este foro, poder dejar "notas" en forma de midi, podría ser interesante para los talleres.

    Lo síncrono es genial, pero no descartaría lo otro.
  • #17 por supertorpe el 24/04/2013
    Lo que pasa, es que en el caso de asíncrono y desconectado, bastaría con grabar el midi en local y enviar el fichero por email, ¿no?
  • #18 por KlausMaria el 24/04/2013
    No si está integrado en algún tipo de servicio que muestra la partitura, o algo similar. No se, piensa en Synthesia en remoto, por ejemplo, algo como esto pero online.

    synthesia-3.jpg

    Podría desarrollarse algo tan marciano como una "workstation" colaborativa ;-) en la que tocases con colegas.
  • #19 por vagar el 25/04/2013
    #16 Bueno, es que son problemas muy distintos. Una cosa sería desarrollar una plataforma courseware o ampliar una existente (haciendo plugins para Moodle, por ejemplo) y otra una herramienta de enseñanza o colaboración remota en tiempo real, que es infinitamente más complejo.

    Tanto la programación de comunicaciones de red como la programación multimedia son bastante puñeteras. Temas como la sincronía entre distintos streams de datos, la cancelación de eco, la latencia, la tolerancia a fallos, no son triviales de gestionar.

    También estaría el tema de la configuración del hardware (interfaz de audio, webcam...) Aunque, como han descubierto Apple y los fabricantes de consolas, ligar la venta de hardware y software es una forma de evitar piratería y problemas de configuración. En este caso se podría pensar en diseñar un kit de interfaz de audio + webcam + micrófono y vincularlo al software.

    #15 ¿Casi instantáneo? ¿Medido cómo? Depende de para qué aplicación. Para sincronizar dos instrumentistas más de 20 ms de bucle es inviable, y la red ahora mismo no da latencias fiables en esos rangos ni dentro de la misma ciudad, ya no te digo en un enlace intercontinental.
  • #20 por supertorpe el 25/04/2013
    #19 Yo me quedé sorprendido. Hicimos las pruebas entre dos provincias bien separadas. En una de las pruebas se enviaron los datos al otro punto y éste los devolvió (MIDI TRHU), con lo que llegó de nuevo al origen. Pues bien el sonido rebotado (*) era como un eco prácticamente instantáneo del sonido original. De hecho, la latencia era menor que la que me daba el Microsoft GS Wavetable Synth en mi netbook.
    ¿Es suficiente para varios instrumentistas simultáneamente? Pues no lo sé, habría que probarlo. En cualquier caso, es más que suficiente para el intercambio típico que se suele realizar entre profesor alumno, en el que se toca por turnos.

    En cualquier caso, si quieres, hacemos una prueba y medimos resultados.

    (*) técnicamente, el sonido no era rebotado, sino los datos MIDI: en el piano donde se emitió la nota original también sonaba la nota rebotada. Cuando digo "casi instantáneo" quiero decir que el sonido rebotado comenzaba en la fase del ataque del sonido original del piano. Tendría que haber sido un virtuoso para lograr un staccato que separase el sonido original del rebotado.
  • #21 por vagar el 25/04/2013
    Alguien escribió:
    En cualquier caso, es más que suficiente para el intercambio típico que se suele realizar entre profesor alumno, en el que se toca por turnos.


    Para ese intercambio vale cualquier cosa, incluido un chat de audio. Pero en las clases de instrumento se toca muchas veces a dúo.

    Se supone que las ventajas de transmitir MIDI en vez de audio serían:

    - Mejor calidad del sonido en recepción (aunque sólo valdría para actividades donde el timbre del instrumento no sea importante, como asignaturas teóricas).

    - Menor uso del caudal de datos de subida, que suele ser pequeño y poco estable en ADSL.

    - Fácil extracción de parámetros básicos como altura y volumen, que permiten visualización en pentagrama o en teclado virtual.

    Si no se mejora el tema de la latencia, no sé si transmitir MIDI aporta mucho en comparación con una webcam cenital encima del teclado para clases en línea.
  • #22 por vagar el 25/04/2013
    Este es uno de los frameworks que estuve considerando en su momento
    http://www.linphone.org/eng/documentation/dev/mediastreamer2.html