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
許可證