https://github.com/jazz-soft/jzz-midi-rtc
MIDI via WebRTC
https://github.com/jazz-soft/jzz-midi-rtc
midi webrtc
Last synced: 5 months ago
JSON representation
MIDI via WebRTC
- Host: GitHub
- URL: https://github.com/jazz-soft/jzz-midi-rtc
- Owner: jazz-soft
- Created: 2025-08-15T01:41:34.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-26T02:04:20.000Z (10 months ago)
- Last Synced: 2025-08-26T04:16:03.711Z (10 months ago)
- Topics: midi, webrtc
- Language: JavaScript
- Homepage:
- Size: 5.86 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JZZ-midi-RTC
## MIDI via WebRTC
[](https://www.npmjs.com/package/jzz-midi-rtc)
[](https://www.npmjs.com/package/jzz-midi-rtc)
[](https://github.com/jazz-soft/JZZ-midi-RTC/actions)
[](https://coveralls.io/github/jazz-soft/JZZ-midi-RTC)
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](https://github.com/jazz-soft/RTC-MIDI-Test) ...
If, instead, you are building a client-server application,
you may want to check https://github.com/jazz-soft/JZZ-midi-WS
## Usage
##### Plain HTML
```html
//...
```
##### CDN (jsdelivr)
```html
//...
```
##### CDN (unpkg)
```html
//...
```
##### CommonJS
```js
var JZZ = require('jzz');
require('jzz-midi-rtc')(JZZ);
//...
```
## Example
```js
var MidiRTC = new JZZ.RTC();
var RTCPC = new RTCPeerConnection();
// ...
// ... boilerplate WebRTC code here ...
// ...
MidiRTC.connect(RTCPC);
```
## API
```js
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...
```js
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.
```js
MidiRTC.close();
```
Disconnect and close all remote MIDI ports.
```js
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).
```js
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.
## See also
- [RTC-MIDI-Test](https://github.com/jazz-soft/RTC-MIDI-Test) - MIDI via WebRTC test / demo
- [JZZ-midi-WS](https://github.com/jazz-soft/JZZ-midi-WS) - MIDI via WebSockets
- [JZZ](https://github.com/jazz-soft/JZZ) - MIDI library for Node.js and web-browsers