Jamulus
# Jamulus

Jamulus es un software de código abierto (GPL) para realizar colaboraciones musicales en red que pueden incluir ensayos en directo, jam y actuaciones desde cualquier lugar con músicos a través de internet. Desarrollado por Volker Fischer y contribuidores, utilizando el lenguaje C++. El software se basa en la biblioteca Qt y utiliza el códec de audio OPUS. Conocido anteriormente como "llcon", hasta el año 2013.

Uno de los problemas al tocar música online a través de internet en tiempo real es la latencia, el retardo que ocurre mientras los flujos de audio (comprimidos) viajan desde –y hacia– cada participante. Aunque el efecto de precedencia significa que los retardos cortos (hasta unos 40 ms) se pueden percibir como síncronos, los retardos más largos hacen que sea prácticamente imposible tocar en vivo al unísono. Otro problema añadido es el de jitter, un tipo de retardo de paquetes debido a cambios de latencia a lo largo del tiempo, lo que resulta en sonido entrecortado o distorsionado. Los retardos largos incluso pueden resultar en pérdidas de paquetes (percibidos como pérdida total de audio). Esto se puede solucionar con el uso de búfers o 'jitter buffers' (ambos presentes en Jamulus), pero éstos aumentan el tiempo de ida y vuelta, por lo que se requiere un equilibrio.

Otros softwares de videochat de uso extendido, como Zoom o Teams no son apropiados para esta tarea ya que la latencia puede ser mucho más alta (Zoom recomienda una latencia de "150 ms o menor" y Jitter de "40 ms o menor", y en unas pruebas realizadas en 2020 se mostró que tenían una latencia media de unos 135 ms; las "malas métricas de calidad de audio" para Teams incluyen un "Tiempo de ida-vuelta >500 ms" y "Jitter >30 ms"). Además, la mayoría de estos software están optimizados para el habla en lugar de música, por lo que las notas musicales sostenidas se identifican erróneamente como ruido de fondo y son filtradas (aunque esto se puede remediar hasta cierto punto con ajustes como "Activar Sonido Original"). El software para conferencias también suele diseñarse para que no se escuche a más de una persona simultáneamente (la persona que habla es el 'foco') para impedir que hablen unas personas sobre otras, pero esto hace que tocar música a la vez sea imposible. Además, el software para conferencias normalmente no permite la configuración detallada del volumen de los flujos de audio individuales o del panning por parte del usuario. Ambas cosas son una parte integral de Jamulus.

Para reducir la latencia al máximo, Jamulus utiliza la compresión de audio y el protocolo UDP para transmitir datos de audio. La latencia total se compone de:

* Retardos de red: cada 300 km supone una latencia añadida de 1 ms ya que la velocidad de la luz limita el transporte de datos en internet.
* Latencia de conversión - si la conversión analógica-digital y/o la digital-analógica no se realizan con un hardware especial, la conversión AD y la conversión DA añadirán a la latencia total;
* La latencia del sonido viajando a través del aire, si el micrófono y/o los altavoces no están colocados cerca. Cada metro de distancia añade unos 3 ms de retardo debido a la limitación de la velocidad del sonido.

Jamulus se basa en un modelo de cliente-servidor; cada cliente transmite su propio audio comprimido a un servidor ubicado en otro lugar en internet. El servidor mezcla el flujo de audio descomprimido para cada usuario por separado y retransmite la mezcla individual comprimida a cada cliente. Cada cliente tiene su propia consola de mezclas, la cual controla su mezcla en el servidor.

Los servidores pueden ser públicos o privados, los primeros apareciendo en listas de "Directorios de servidores" en los que los usuarios pueden escoger un servidor con la latencia más baja.

## Utilización

Ya en 2018, Jamulus atraía atención como forma de ensayar a distancia para conjuntos clásicos como cuartetos de cuerda, pero su utilización aumentó dramáticamente en el año 2020 debido a la pandemia de COVID-19. En abril del 2020 había dos mil descargas diarias, con tendencia ascendente. Fue elegido 'Proyecto del mes' en SourceForge en junio del 2020. Jamulus Storband, el primer "big band virtual" sueco, con más de 20 miembros, también se creó ese mes. Se hicieron muchos cambios entonces para dar soporte a grupos más grandes, como coros de hasta 98 miembros así como WorldJam, una iniciativa que permite a músicos de todo el mundo tocar juntos regularmente.

Tener un metrónomo sincronizado para los participantes de una sesión puede ser clave para ayudarles a mantener el ritmo de la canción y tocar en sincronización. Hay numerosos metrónomos online disponibles, así como otras herramientas de código abierto: por ejemplo, Sychronome utiliza NTP (Network Time Protocol) con un servidor de tiempo de red para sincronizar los metrónomos de cada cliente Jamulus a través de teléfonos inteligentes.

