osc-js ist eine Open Sound Control-Bibliothek für JavaScript-Anwendungen (UMD-Modul für Node, Browser usw.) mit Adressmusterabgleich und Timetag-Verarbeitung. Sendet Nachrichten über UDP , WebSocket oder beides (Bridge-Modus) und bietet eine anpassbare Plugin-API für Netzwerkprotokolle.
Wiki | Grundlegende Verwendung | Dokumentation | Plugin-API
ws
in Node.js oder ähnlichen Umgebungen)Weitere Informationen zu osc-js und seiner Verwendung finden Sie im Wiki und in der Dokumentation.
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 } )
Empfohlene Installation über npm: npm i osc-js
oder yarn add osc-js
.
Importieren Sie die Bibliothek const OSC = require('osc-js')
oder fügen Sie das Skript lib/osc.js
oder lib/osc.min.js
(minimierte Version) zur Verwendung in einem Browser hinzu.
osc-js bietet eine Plugin-Architektur zur Erweiterung seiner Netzwerkfunktionen. Die Bibliothek verfügt über vier integrierte Plugins. Das ist wahrscheinlich alles, was Sie für eine OSC-Anwendung benötigen:
WebsocketClientPlugin
(Standard)WebsocketServerPlugin
DatagramPlugin
für UDP-NetzwerknachrichtenBridgePlugin
nützliche Brücke zwischen WebSocket- und UDP-ClientsKonfiguration und Beispiele jedes Plugins können hier gelesen werden: Wiki.
Registrieren Sie das Plugin beim Erstellen der OSC-Instanz:
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
Es ist möglich, anspruchsvollere Lösungen für OSC-Anwendungen zu schreiben, ohne die osc-js-Schnittstelle (einschließlich ihrer Nachrichtenverarbeitung usw.) zu verlieren. Weitere Informationen finden Sie in der Dokumentation zur Plugin-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
} )
Die Bibliothek kann ohne die genannten Funktionen verwendet werden, falls Sie binäre OSC-Daten schreiben und lesen müssen. Sehen Sie sich dieses Beispiel unten für die Verwendung der Low-Level-API an (obwohl die Bibliothek bereits über eine Lösung für die Handhabung von UDP wie in diesem Beispiel verfügt):
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 verwendet Babel für die ES6-Unterstützung, ESDoc für die Dokumentation, Mocha + Chai für Tests und Rollup für die Generierung des UMD-Moduls.
Klonen Sie das Repository und installieren Sie alle Abhängigkeiten:
git clone [email protected]:adzialocha/osc-js.git
cd osc-js
npm install
npm run test
zum Ausführen der Tests. npm run test:watch
während der Entwicklung auf Laufspezifikationen. Überprüfen Sie den Codestil mit npm run lint
.
npm run build
zum Exportieren des UMD-Moduls in lib
-Ordner.
npm run docs
um einen docs
-Ordner mit HTML-Dateien zu generieren, die die Bibliothek dokumentieren. Lesen Sie sie hier online: https://adzialocha.github.io/osc-js
MIT-Lizenz MIT