osc-js 是一个用于 JavaScript 应用程序的开放声音控制库(用于节点、浏览器等的 UMD 模块),具有地址模式匹配和时间标签处理功能。通过UDP 、 WebSocket或两者(桥接模式)发送消息,并为网络协议提供可定制的插件 API。
维基 |基本用法 |文档 |插件API
ws
除外)在 Wiki 和文档中了解有关 osc-js 以及如何使用它的更多信息。
const osc = new OSC ( )
osc . on ( '/param/density' , ( message , rinfo ) => {
console . log ( message . args )
console . log ( rinfo )
} )
osc . on ( '*' , message => {
console . log ( message . args )
} )
osc . on ( '/{foo,bar}/*/param' , message => {
console . log ( message . args )
} )
osc . on ( 'open' , ( ) => {
const message = new OSC . Message ( '/test' , 12.221 , 'hello' )
osc . send ( message )
} )
osc . open ( { port : 9000 } )
建议通过 npm 安装: npm i osc-js
或yarn add osc-js
。
导入库const OSC = require('osc-js')
或添加脚本lib/osc.js
或lib/osc.min.js
(缩小版本)以在浏览器中使用。
osc-js 提供了一个插件架构来扩展其网络功能。该库附带四个内置插件。这可能就是 OSC 应用程序所需的全部内容:
WebsocketClientPlugin
(默认)WebsocketServerPlugin
DatagramPlugin
BridgePlugin
是 WebSocket 和 UDP 客户端之间有用的桥梁每个插件的配置和示例可以在这里阅读:Wiki。
创建OSC实例时注册插件:
const osc = new OSC ( { plugin : new OSC . WebsocketServerPlugin ( ) } )
osc . open ( ) // listening on 'ws://localhost:8080'
< button id =" send " > Send Message </ button >
< script type =" text/javascript " src =" lib/osc.min.js " > </ script >
< script type =" text/javascript " >
var osc = new OSC ( ) ;
osc . open ( ) ; // connect by default to ws://localhost:8080
document . getElementById ( 'send' ) . addEventListener ( 'click' , ( ) => {
var message = new OSC . Message ( '/test/random' , Math . random ( ) ) ;
osc . send ( message ) ;
} ) ;
</ script >
const OSC = require ( 'osc-js' )
const config = { udpClient : { port : 9129 } }
const osc = new OSC ( { plugin : new OSC . BridgePlugin ( config ) } )
osc . open ( ) // start a WebSocket server on port 8080
[udpreceive 9129] // incoming '/test/random' messages with random number
可以为 OSC 应用程序编写更复杂的解决方案,而不会丢失 osc-js 接口(包括其消息处理等)。请阅读插件 API 文档以获取更多信息。
class MyCustomPlugin {
// ... read docs for implementation details
}
const osc = new OSC ( { plugin : MyCustomPlugin ( ) } )
osc . open ( )
osc . on ( '/test' , message => {
// use event listener with your plugin
} )
如果您需要写入和读取二进制 OSC 数据,则可以在没有上述功能的情况下使用该库。请参阅下面的示例以了解如何使用低级 API(即使该库已经具有处理 UDP 的解决方案,如本例所示):
const dgram = require ( 'dgram' )
const OSC = require ( 'osc-js' )
const socket = dgram . createSocket ( 'udp4' )
// send a messsage via udp
const message = new OSC . Message ( '/some/path' , 21 )
const binary = message . pack ( )
socket . send ( new Buffer ( binary ) , 0 , binary . byteLength , 41234 , 'localhost' )
// receive a message via UDP
socket . on ( 'message' , data => {
const msg = new OSC . Message ( )
msg . unpack ( data )
console . log ( msg . args )
} )
osc-js 使用 Babel 来支持 ES6,使用 ESDoc 来提供文档,使用 Mocha + Chai 来进行测试,使用 Rollup 来生成 UMD 模块。
克隆存储库并安装所有依赖项:
git clone [email protected]:adzialocha/osc-js.git
cd osc-js
npm install
npm run test
用于运行测试。 npm run test:watch
运行规范。使用npm run lint
检查代码风格。
npm run build
用于导出lib
文件夹中的 UMD 模块。
npm run docs
用于生成一个docs
文件夹,其中包含记录库的 HTML 文件。在这里在线阅读它们:https://adzialocha.github.io/osc-js
麻省理工MIT
许可证