OSC message decoder/encoder with fault tolerant
JavaScript
Latest commit 415a3ca Jun 14, 2016 @mohayonao update README [ci skip]
Permalink
Failed to load latest commit information.
src add opts.bundle to decode() Jun 14, 2016
test add opts.bundle to decode() Jun 14, 2016
.babelrc update dev tools Jun 14, 2016
.eslintrc update dev tools Jun 14, 2016
.gitignore update dev tools Jun 14, 2016
.travis.yml update dev tools Jun 14, 2016
README.md update README [ci skip] Jun 14, 2016
index.js index.js Dec 5, 2015
package.json 0.4.0 Jun 14, 2016

README.md

osc-msg

Build Status NPM Version License

OSC message decoder/encoder with fault tolerant

Features

  • Not throw an exception if processing with a broken message
  • Useful decoding options, bundle and strip
  • Works in both Node.js and browsers

Installation

npm:

npm install osc-msg

API

  • oscmsg.decode(buffer: Buffer, opts={}): object
    • opts.strict: strictly validation mode
    • opts.strip: decode into raw values
    • opts.bundle: decode as a bundle
    • aliases: fromBuffer, toObject
  • oscmsg.encode(object: object, opts={}): Buffer
    • opts.strict: strictly validation mode
    • opts.integer: use an integer when auto cast
    • aliases: fromObject, toBuffer

Examples

decode

const dgram = require("dgram");
const oscmsg = require("osc-msg");

const socket = dgram.createSocket("udp4");

socket.on("message", (buffer) => {
  const bundle = oscmsg.decode(buffer, { strict: true, strip: true, bundle: true });

  if (bundle.error) {
    return;
  }

  bundle.elements.forEach((message) => {
    console.log(JSON.stringify(message));    
  });
});

socket.bind(RECV_PORT);

encode

const dgram = require("dgram");
const oscmsg = require("osc-msg");

const message = {
  address: "/foo",
  args: [
    { type: "integer", value: 0 },
    { type: "float", value: 1.5 }
  ]
};
const buffer = oscmsg.encode(message);
const socket = dgram.createSocket("udp4");

socket.send(buffer, 0, buffer.length, SEND_PORT, "127.0.0.1");

Javascript representations of the OSC types

compatible interfaces with osc-min

  • OSC Message
{
  "address": string,
  "args": [ arg1, arg2, ...argN ],
  "oscType": "message"
}

Where args is an array of OSC Arguments. oscType is optional. args can be a single element.

  • OSC Arguments
{ "type": string, "value": any }

Where the type is one of the following:

  • string - string value
  • float - numeric value
  • integer - numeric value
  • blob - Buffer-like value
  • true - value is boolean true
  • false - value is boolean false
  • null - no value
  • bang - no value (this is the I type tag)
  • timetag - numeric value
  • array - array of OSC Arguments
  • OSC Bundle
{
  "timetag": number,
  "elements": [ element1, element2, ...elementN ],
  "oscType": "bundle"
}

Where the timetag is a javascript-native numeric value of the timetag, and elements is an array of either an OSC Bundle or an OSC Message The oscType field is optional, but is always returned by api functions.

See also

License

MIT