This module allows two WebRTC peers communicate with each other's MIDI ports.
And YES, these ports are visible from the Web MIDI API!
Please see the demo here ...
If, instead, you are building a client-server application,
you may want to check https://github.com/jazz-soft/JZZ-midi-WS
<script src="JZZ.js"></script>
<script src="JZZ.midi.RTC.js"></script>
//...<script src="https://cdn.jsdelivr.net/npm/jzz"></script>
<script src="https://cdn.jsdelivr.net/npm/jzz-midi-rtc"></script>
//...<script src="https://unpkg.com/jzz"></script>
<script src="https://unpkg.com/jzz-midi-rtc"></script>
//...var JZZ = require('jzz');
require('jzz-midi-rtc')(JZZ);
//...var MidiRTC = new JZZ.RTC();
var RTCPC = new RTCPeerConnection();
// ...
// ... boilerplate WebRTC code here ...
// ...
MidiRTC.connect(RTCPC);var MidiRTC = new JZZ.RTC(name);Constructor. name - name to be used as preffix for remote MIDI ports.
If not set, will be WebRTC, WebRTC1, WebRTC2, etc...
MidiRTC.connect(RTCPC);Connect to a WebRTC session. RTCPC - a RTCPeerConnection object.
If the previous WebRTC session was closed, MidiRTC can be connected to another session.
MidiRTC.close();Disconnect and close all remote MIDI ports.
MidiRTC.addMidiIn(name, port);
MidiRTC.addMidiOut(name, port);Add MIDI port. name - name to bee seen by the remotr peer; port - MIDI port (real or virtual).
MidiRTC.removeMidiIn(name);
MidiRTC.removeMidiOut(name);Remove MIDI port.
{add/remove}Midi{In/Out}(...) functions can be called before or after the connection is made.
- RTC-MIDI-Test - MIDI via WebRTC test / demo
- JZZ-midi-WS - MIDI via WebSockets
- JZZ - MIDI library for Node.js and web-browsers