Los transportes habituales para el protocolo MIDI entre dispositivos hardware (controladores y sintetizadores principalmente) son el tradicional interfaz serie con conectores DIN de 5 pines, y mas recientemente los interfaces USB MIDI. Para la comunicación entre dispositivos MIDI y entre estos y los computadores, dichos transportes han sido y siguen siendo perfectamente adecuados. Aunque también se usan FireWire y Bluetooth, vamos a dejarlos al margen en este momento. Por otro lado, si los dispositivos son todos ellos computadores, los transportes mas adecuados tanto para datos MIDI como de cualquier otro tipo son los utilizados por las redes locales: Ethernet y Wifi. Vamos a intentar explicar lo necesario a continuación en relación con VMPK.
Las redes de computadores son hoy por hoy muy comunes. En todas las empresas, organismos y residencias particulares se utilizan en abundancia. La red de redes (Internet) no es menos conocida. Los servicios de correo electrónico y la web son dos de los mas comunes. Estos comparten un protocolo que se llama TCP/IP. Para comunicación de datos MIDI, los computadores, tabletas y teléfonos de Apple utilizan un protocolo que se llama RTP-MIDI que está incluido en los sistemas operativos de este fabricante. También existen implementaciones de RTP-MIDI para otros sistemas operativos, mas o menos interoperables. Pero vamos a hablar aquí de otro protocolo distinto: ipMIDI, que es el que está incluido en VMPK. Es diferente a RTP-MIDI y no son compatibles entre ellos. Es el mismo que fue desarrollado por Daniel Schmitt de nerds.de para sus productos disponibles en Windows y macOS, y también por los proyectos libres para Linux: multimidicast y qmidinet, así como las aplicaciones para Android: qmidictl y TouchDAW. No es necesario instalar ninguno de esos programas para usar VMPK en red. Lo único que necesitamos es: dos o más computadores (portátiles, tabletas, teléfonos Android) conectadas a la misma red local, y VMPK instalado en cada uno de ellos. Pueden ser distintos sistemas operativos, por ejemplo: uno con Linux, otro con macOS y otro con Windows.
La red mas simple y eficiente es la mejor para este experimento. Mucha gente tiene en casa un router, proporcionado por su proveedor de Internet. Estos routers son válidos, pero hay que tener en cuenta que cuantos mas usuarios y tráfico de datos tenga la red, peor va a ser la calidad de la comunicación MIDI. Por otro lado, ipMIDI funciona únicamente en las redes locales, nunca en Internet (los routers saben bien lo que han de hacer con las direcciones multicast). Es aconsejable utilizar una red local aparte, sin acceso a Internet, aislada y formada únicamente por los equipos que emiten o reciben eventos MIDI. En caso de que todos los computadores se conecten a la red mediante cables Ethernet, la mejor opción es usar un concentrador o un conmutador. En el caso de que algunos equipos necesiten acceder por Wifi, entonces es necesario o bien un router Wifi+Ethernet o que un computador con ambos tipos de interfaz haga de "bridge" (una Raspberry Pi, por ejemplo).
El protocolo ipMIDI usa UDP multicast sobre IP. Lo anterior es por si alguien quiere investigar la tecnología mas a fondo. Lo fundamental es entender que a diferencia de TCP/IP, este protocolo utiliza las direcciones IP para formar grupos multicast. Todos los programas participando en el mismo grupo multicast deben utilizar exactamente la misma dirección IP. Los eventos que envía uno de los miembros del grupo se reciben por todos los demás miembros. Por defecto, ipMIDI usa la dirección de grupo multicast IPv4 225.0.0.37 y la dirección IPv6 ff12::37 . Aunque las direcciones se pueden cambiar en VMPK, no es aconsejable hacerlo y no vale cualquier dirección, consultar el documento rfc5771 o Multicast address en la Wikipedia sobre las direcciones válidas disponibles.
Además de la misma dirección IP de grupo multicast, los programas han de seleccionar el mismo número de puerto desde el 21928 al 21947, lo que permite simular hasta 20 cables MIDI virtuales diferentes dentro de cada grupo al mismo tiempo. Todos los eventos MIDI se envían a todos los demás programas que comparten el mismo grupo y número de puerto. Naturalmente, dentro de los cables virtuales sigue existiendo el concepto de canal MIDI, igual que en cualquier otra conexión MIDI, que permite filtrar opcionalmente entre todos los eventos recibidos únicamente uno de los 16 canales (para recibir los 16 canales a la vez, está el modo "Omni").
Visto todo lo anterior, un lector avispado y con suerte seguramente ya tendrá en funcionamiento varios computadores con VMPK comunicándose por red, sin necesidad de cambiar nada en las configuraciones. Naturalmente debe existir un programa "maestro" (el que manda, o envía eventos) en el que la selección del Driver MIDI OUT sea "Network", y en el resto de programas la selección del Driver MIDI IN ha de ser "Network". Si a la primera no funciona, pueden existir problemas. Vamos a ver algunos de los mas comunes...
Cortafuegos/Firewall. Tanto Windows como macOS vienen con cortafuegos activados por omisión. No suele ser un gran problema, porque en el momento de ejecutar VMPK por primera vez preguntará al usuario si desea permitir que el programa se comunique mediante la red, y en caso afirmativo el cortafuegos queda configurado con la regla necesaria para el futuro. En caso de Linux el firewall se ha de configurar manualmente o desactivarlo. Si el firewall está en el router, entonces es necesario configurar en el router la regla correspondiente.
IPv4/IPv6. En la mayor parte de los casos IPv4 funcionará bien, y es la opción por omisión. Pero pueden haber equipos en la red que únicamente funcionen con IPv6. En este caso, cambiando en todos ellos a IPv6 puede ser la solución. De hecho, en el futuro puede que los dispositivos de red dejen de soportar IPv4 y pasen a funcionar con IPv6 exclusivamente. En mi experiencia particular, tengo un router de fibra con Ethernet y Wifi del fabricante Taiwanés Arcadyan (proporcionado por Orange) que no funciona en absoluto con ipMIDI en IPv4, y que sin embargo no da ningún problema con IPv6.
Pérdida de eventos, eventos desordenados, alta latencia, tiempos temblorosos. Todos los problemas anteriores son conocidos en todos los transportes MIDI. Usando una red Ethernet y/o Wifi dedicadas se pueden considerar muy raros, pero cuando se producen la causa mas frecuente es compartir la misma red con otros servicios que consumen mucho ancho de banda, como TV IP, videoconferencia, telefonía IP, streaming de vídeo/música, transferencia de archivos, etc. A diferencia de RTP-MIDI, ipMIDI no tiene ningún mecanismo de corrección de errores ni reordenación/compensación de retrasos. Esto lo hace mucho mas simple y reduce la latencia a un valor directamente proporcional a la velocidad de la red física, pero como contrapartida es mas sensible a la saturación de la red.