UNPKG

webrtc2osc

Version:

Web to OSC bridge using PeerjS WebRTC

53 lines (39 loc) 1.88 kB
# webrtc2osc 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). ## Client Usage 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. ## Changelog - 1.0.1 Add --log parameter - 1.0.0 Add URL and QR code. - 0.9.0 Initial release.