Ninjam


NINJAM son las siglas de N ovel I ntervallic R etwork Jamming A rchitecture for M usic . El software y los sistemas que componen NINJAM proporcionan un mecanismo en tiempo no real para intercambiar datos de audio a través de Internet, con un mecanismo de sincronización basado en la forma musical. Proporciona una forma para que los músicos "jam" (improvisen) juntos a través de Internet; fue pionero en el concepto de interferencia de "tiempo virtual". Fue desarrollado originalmente por Brennan Underwood, Justin Frankel y Tom Pepper .

La creación colaborativa de muchas formas de música depende naturalmente de la capacidad de los jugadores para mantener el ritmo entre sí. La latencia excesiva entre los jugadores hace que el cronometraje natural se desvíe. La práctica típica de la ingeniería de redes no permite un mecanismo de intercambio de datos de latencia lo suficientemente baja, incluso dentro de las ciudades, [1] y la velocidad de la luz lo hace imposible en distancias regionales o globales. [2] Para acercarse a la colaboración sin latencia, NINJAM extiende la latencia al retrasar todo el audio recibido hasta que pueda sincronizarse con otros reproductores. El retraso se basa en la forma musical.. Esta sincronización significa que cada jugador escucha a los demás en una sesión y puede tocar con ellos. NINJAM define la forma en términos de "intervalo": el número de latidos que se grabarán antes de sincronizar con otros jugadores. Por ejemplo, con un intervalo de 16, cuatro compases de música en4
4
el tiempo se registraría para cada jugador y luego se reproduciría para todos los demás.

El proceso se describió en Wired como "libre de fallas" y "diseñado para músicos que disfrutan de la colaboración en tiempo real". [3] En MIT Technology Review , los usuarios del software se describen como "realmente leales" debido a su estado de código abierto y gratuito. [4] Otros proveedores de productos musicales han agregado soporte para NINJAM; Expert Sleepers, un proveedor de hardware y software de música electrónica, agregó compatibilidad con complementos para NINJAM en 2006. [5]

Cada jugador en una sesión de NINJAM transmite datos de audio de su cliente a un servidor a través de una conexión TCP/IP a un puerto específico (comúnmente en el rango de 2049 hacia arriba, según el host).

El "cliente" aquí es solo el componente que el jugador usa para conectarse a un servidor NINJAM, codificar y transmitir su flujo de audio, recibir y decodificar los flujos de jugadores remotos y manejar la sesión de chat (similar a IRC ). Cada jugador también necesitará alguna forma de enviar información de audio al cliente NINJAM, ya sea usando el cliente como un complemento en un DAW o usando la versión independiente con una entrada de audio directa.

Los datos de cada cliente se sincronizan contra un reloj distribuido. Este cronometraje se utiliza luego para distribuir los datos a todos los demás clientes para que puedan reproducir todos los flujos remotos sincronizados. El servidor hace poco aparte de administrar las conexiones, el chat y la transmisión de datos.