This web app sends/receives MIDI data via WebSockets using the Web MIDI API. It is not necessary for users to be connected to the same network, only to have the proper browser windows open. Currently, the app/site can only be used by one pairing at a time. So if you see MIDI data appearing out of nowhere, or things are getting interrupted, it is probably being used by another person. Soon, users will have the ability to create sessions, which will provide unique connections.
This will only work in browsers with Web MIDI API compatibility (Chrome, et al.) and will have trouble if your security settings are not tooled properly. This has only been tested in Chrome on MacOS and Android.
Simply open a broadcaster window, set an incoming port. Then open a receiver window, and set an outgoing port. The MIDI data from the incoming port in the broadcaster will be sent via WebSockets to the receiver page, and out the specified outgoing port. This allows for a MIDI connection to established between two people over the internet at any two points.
The respective broadcaster/receiver numbers are paired (ie. Broadcaster 1 sends MIDI to Receiver 1), note the address URL if using multiple pairings. Set your input/output on each page, and you can send/receive MIDI information seamlessly over the net. MIDI ports should be detected automatically (unless your security settings somehow prevent this, specifically in Windows). The site currently logs Channel/CC/Value info, but all MIDI data should be transferrable.
A broadcaster is capable of taking MIDI input from either software or hardware. Specify either the controller or software port and press the button.
A receiver receives the data being sent out by the broadcaster, the user chooses the output port for where they want the MIDI data to go in their system (either software or hardware).
The CC/Channel/Value is displayed on each page respectively. It is up to the user to assign the MIDI information on their controller/software setups accordingly, this website just makes the connection.
This is very much in a beta stage. Tests have been run to detect latency and efficiency, and this method of transmitting MIDI data has performed very well so far. It remains to be seen what will cause performance levels to decrease, but it works well for one-to-one usage. I am interested in hearing any feedback regarding performance, or any ideas on how to build this out to be a more useful platform. Especially during lockdown restrictions. Please be in touch if you are interested in collaborating on this!