webrtc2osc
Version:
Web to OSC bridge using PeerjS WebRTC
53 lines (39 loc) • 1.88 kB
Markdown
Convert WebRTC messages to OSC (OpenSoundControl).
Browsers do not support the UDP-protocol, which is often used for OpenSoundControl. Instead, browsers have a similar low-latency lossy connection: the WebRTC data channel.
This is a commandline utility you run on your computer to act as a bridge, it will translate WebRTC messages to UDP, and vice versa.
It uses the excellent [PeerJS](https://peerjs.com/) and [osc-js](https://github.com/adzialocha/osc-js/) libraries.
## Usage
```
npx webrtc2osc
--peer-id MY_PEER_ID
--host localhost
--send 11000
--receive 11011
--url "http://{ip}:3000/?peerId={peerId}"
--qr
--log
```
- `--peer-id`: The peer id of the webrtc2osc bridge app.
- `--host`: The host address of the OSC server.
- `--send`: The port to send messages to.
- `--receive`: The port to receive messages from.
- `--url`: Generate an URL. `{peerId}` is replaced by the (generated) peerId, and `{ip}` is replaced by the IP address of your machine.
- `--qr`: Display QR code of the URL
- `--log`: log all messages
Settings are saved `webrtc2osc.json` in your HOME directory, so next time you can call `npx webrtc2osc` (without arguments).
Use PeerJS to send and receive arrays of `[ address, ...args ]`. Use the `json` serialization, as the default (binary) is not supported in nodejs (yet).
```javascript
const peer = new Peer();
const conn = peer.connect("MY_PEER_ID", { serialization: "json" });
conn.send(['/say', 'hello world']); // note the array
conn.on('data', ([ address, ...args]) => { // note the array
console.log(address, args);
})
```
PS. Creating an osc-js Plugin is not possible, because plugins need to send binary data, and there is no way I can unpack that on the server side.
- 1.0.1 Add --log parameter
- 1.0.0 Add URL and QR code.
- 0.9.0 Initial release.