osc-js هي مكتبة مفتوحة للتحكم في الصوت لتطبيقات JavaScript (وحدة UMD للعقدة والمتصفح وما إلى ذلك) مع مطابقة نمط العنوان ومعالجة العلامات الزمنية. يرسل الرسائل عبر UDP أو WebSocket أو كليهما (وضع الجسر) ويقدم واجهة برمجة تطبيقات Plugin قابلة للتخصيص لبروتوكولات الشبكة.
ويكي | الاستخدام الأساسي | التوثيق | واجهة برمجة تطبيقات البرنامج المساعد
ws
في Node.js أو البيئات المماثلة)اقرأ المزيد حول 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
لمراسلة شبكة UDPBridgePlugin
هو جسر مفيد بين عملاء 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 (بما في ذلك معالجة الرسائل وما إلى ذلك). اقرأ وثائق 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
} )
يمكن استخدام المكتبة بدون الميزات المذكورة في حالة احتياجك إلى كتابة وقراءة بيانات OSC الثنائية. راجع هذا المثال أدناه لاستخدام Low-Level 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
لتصدير وحدة UMD في مجلد lib
.
npm run docs
لإنشاء مجلد docs
يحتوي على ملفات HTML لتوثيق المكتبة. اقرأها عبر الإنترنت هنا: https://adzialocha.github.io/osc-js
MIT
ماساتشوستس للتكنولوجيا رخصة معهد ماساتشوستس للتكنولوجيا