webrtc2osc

1.0.1 • Public • Published

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 and 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).

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.

Package Sidebar

Install

npm i webrtc2osc

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

6.2 kB

Total Files

4

Last publish

Collaborators

  • markm1337