osc-js est une bibliothèque Open Sound Control pour les applications JavaScript (module UMD pour Node, Browser, etc.) avec correspondance de modèles d'adresse et gestion des horodatages. Envoie des messages via UDP , WebSocket ou les deux (mode pont) et propose une API de plug-in personnalisable pour les protocoles réseau.
Wiki | Utilisation de base | Documents | API du plugin
ws
dans Node.js ou environnements similaires)En savoir plus sur osc-js et comment l'utiliser dans le wiki et la documentation.
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 } )
Installation recommandée via npm : npm i osc-js
ou yarn add osc-js
.
Importez la bibliothèque const OSC = require('osc-js')
ou ajoutez le script lib/osc.js
ou lib/osc.min.js
(version minifiée) pour une utilisation dans un navigateur.
osc-js propose une architecture de plugin pour étendre ses capacités réseau. La bibliothèque est livrée avec quatre plugins intégrés. C'est probablement tout ce dont vous avez besoin pour une application OSC :
WebsocketClientPlugin
(par défaut)WebsocketServerPlugin
DatagramPlugin
pour la messagerie réseau UDPBridgePlugin
pont utile entre les clients WebSocket et UDPLa configuration et des exemples de chaque plugin peuvent être lus ici : Wiki.
Enregistrez le plugin lors de la création de l'instance 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
Il est possible d'écrire des solutions plus sophistiquées pour les applications OSC sans perdre l'interface osc-js (y compris sa gestion des messages, etc.). Lisez la documentation de l'API du plugin pour plus d'informations.
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
} )
La bibliothèque peut être utilisée sans les fonctionnalités mentionnées au cas où vous auriez besoin d'écrire et de lire des données OSC binaires. Voir cet exemple ci-dessous pour utiliser l'API de bas niveau (même si la bibliothèque dispose déjà d'une solution pour gérer UDP comme dans cet exemple) :
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 utilise Babel pour le support ES6, ESDoc pour la documentation, Mocha + Chai pour les tests et Rollup pour générer le module UMD.
Clonez le dépôt et installez toutes les dépendances :
git clone [email protected]:adzialocha/osc-js.git
cd osc-js
npm install
npm run test
pour exécuter les tests. npm run test:watch
les spécifications en cours d'exécution pendant le développement. Vérifiez le style de code avec npm run lint
.
npm run build
pour exporter le module UMD dans le dossier lib
.
npm run docs
pour générer un dossier docs
avec des fichiers HTML documentant la bibliothèque. Lisez-les en ligne ici : https://adzialocha.github.io/osc-js
Licence MIT