Awesome
osc-msg
OSC message decoder/encoder with fault tolerant
Features
- Not throw an exception if processing with a broken message
- Useful decoding options,
bundle
andstrip
- Works in both Node.js and browsers
Installation
npm:
npm install osc-msg
API
oscmsg.decode(buffer: Buffer, opts={}): object
opts.strict
: strictly validation modeopts.strip
: decode into raw valuesopts.bundle
: decode as a bundle- aliases:
fromBuffer
,toObject
oscmsg.encode(object: object, opts={}): Buffer
opts.strict
: strictly validation modeopts.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 theI
type tag) -
timetag
- [ uint32, uint32 ] -
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