सामग्री पर जाएँ

OSC ​

OSC स्क्रीन वह जगह है जहाँ आप UDP पर Open Sound Control (OSC 1.0) हाथ से बोलते हैं। इसके तीन हिस्से हैं:

  • प्रेषक: एक संदेश, टाइप किए गए आर्ग्युमेंट, जो Enter दबाते ही भेजा जाता है।
  • मॉनिटर: किसी पोर्ट पर सुनता है और आने वाले हर पैकेट को डिकोड करता है।
  • सिग्नल जनरेटर: ऐसा मान भेजता है जो एक वेवफ़ॉर्म का अनुसरण करता है, सेकंड में कई बार, और उसे खींचता है।

Signal Lab OSC को ख़ुद एन्कोड और डिकोड करता है। जो वह भेजता है, वही इंस्पेक्टर बाइट दर बाइट दिखाता है।

संदेश भेजना ​

  1. OSC खोलें।
  2. लक्ष्य host:port में डिवाइस का IP पता या होस्ट नाम और उसका पोर्ट डालें, जैसे 127.0.0.1:9000 या stage-mixer.local:9000।
  3. OSC पता में वह पता डालें जिस पर डिवाइस सुनता है, जैसे /mixer/fader/1।
  4. आर्ग्युमेंट के नीचे हर आर्ग्युमेंट का प्रकार और मान सेट करें। एक और जोड़ने के लिए + आर्ग्युमेंट दबाएँ; ✕ एक हटाता है।
  5. भेजें दबाएँ, या भेजने वाले के किसी फ़ील्ड में Enter दबाएँ।

बटनों के नीचे की पंक्ति बताती है कि क्या बाहर गया: पता, बाइट में उसका आकार और लक्ष्य। वही संदेश फिर भेजने पर गिनती बढ़ती जाती है (×2, ×3…), ताकि आप देख सकें कि दोहराया गया भेजना कुछ किया। विफलता इसके बजाय वहीं और कंसोल में दिखती है।

लक्ष्य, पता और आर्ग्युमेंट स्क्रीन बदलने पर और ऐप फिर से शुरू करने पर भी बने रहते हैं।

फ़ील्ड ​

फ़ील्डक्याडिफ़ॉल्ट
लक्ष्य host:portरिसीवर का IP:port या host:port। IPv6 पता कोष्ठकों में जाता है: [::1]:9000। होस्ट नाम हर बार भेजते समय खोजा जाता है; जब उसका कोई IPv4 पता होता है, तो वही उपयोग होता है (इसलिए localhost 127.0.0.1 पर सुनने वाले रिसीवर तक पहुँचता है), वरना उसका IPv6 वाला। पोर्ट के बिना लक्ष्य अस्वीकार कर दिया जाता है।127.0.0.1:9000
OSC पताOSC पता, / से शुरू होकर, हिस्से / से अलग। शुरुआती / के बिना वाला कुछ भी भेजे जाने से पहले अस्वीकार कर दिया जाता है।/hello/avatar/1
आर्ग्युमेंटपते के बाद टाइप किए गए मान, क्रम में। किसी संदेश में एक भी न हो।एक float, 1.0

आर्ग्युमेंट के प्रकार ​

हर आर्ग्युमेंट का प्रकार संदेश का हिस्सा होता है (उसका टाइप टैग), इसलिए जो डिवाइस float की अपेक्षा करता है, वह उसी मान वाले int को अनदेखा कर सकता है।

सूची में प्रकारOSC टैगमानआप इसे कैसे डालते हैं
inti32-बिट signed पूर्णांकएक पूर्ण संख्या
floatf32-बिट फ़्लोटिंग पॉइंटएक संख्या, 0.75
strsटेक्स्टकोई भी टेक्स्ट, UTF-8 के रूप में भेजा जाता है
boolT / Fसही या ग़लतसूची से true या false; कोई बाइट नहीं ले जाता, केवल टैग
longh64-बिट signed पूर्णांकएक पूर्ण संख्या
doubled64-बिट फ़्लोटिंग पॉइंटएक संख्या
nilNकुछ नहींकोई मान नहीं
blobbबाइटयहाँ टाइप नहीं किया जाता: यह तब दिखता है, केवल-पढ़ने योग्य और hex में, जब आप ऐसा सिग्नल खोलते हैं जिसमें यह हो

जो संख्या फ़ील्ड संख्या नहीं रखता, वह 0 भेजता है।

TIP

OSC का true टैग T है, टेक्स्ट "true" नहीं। bool की प्रतीक्षा करता डिवाइस स्ट्रिंग को चुपचाप अनदेखा कर देता है।

बंडल ​

भेजने वाला अकेले संदेश भेजता है, बंडल नहीं। जब कोई बंडल (#bundle) आता है, तो मॉनिटर, प्रयोग के waits और एमुलेटर उसे खोल देते हैं: उसके भीतर का हर संदेश अपने आप पर संभाला जाता है, और उसका time tag अनदेखा कर दिया जाता है।

किसी पोर्ट को देखना ​

यह देखने के लिए कि कोई डिवाइस या शो कंट्रोलर क्या भेजता है:

  1. बाइंड पता में सुनने का पता और पोर्ट डालें। 0.0.0.0:9000 (डिफ़ॉल्ट) हर नेटवर्क कार्ड पर सुनता है; 127.0.0.1:9000 केवल इसी मशीन पर।
  2. सुनें दबाएँ। मॉनिटर चलते समय फ़ील्ड लॉक हो जाता है।
  3. भेजने वाले को इस मशीन के IP पते और उस पोर्ट की ओर मोड़ें।

हर पैकेट एक पंक्ति बन जाता है, सबसे नई सबसे ऊपर:

कॉलमक्या
समययह कब आया, मिलीसेकंड तक
स्रोतभेजने वाले का IP:port
पताOSC पता, या (डिकोड त्रुटि) जब पैकेट मान्य OSC न हो
आर्ग्युमेंटआर्ग्युमेंट के मान; blob blob[n] के रूप में दिखता है, nil nil के रूप में। जो पैकेट डिकोड न हो सका, उसके लिए क्यों।

एक बंडल हर संदेश के लिए एक पंक्ति देता है। सूची नवीनतम 300 पंक्तियाँ रखती है; साफ़ करें उसे ख़ाली कर देता है। पोर्ट बंद करने के लिए रोकें दबाएँ। मॉनिटर कंसोल पट्टी में एक जॉब भी है, इसलिए वहाँ से भी रोका जा सकता है।

मॉनिटर अधिकतम 64 KiB के पैकेट पढ़ता है। यह i f s S b h d T F N I टैग डिकोड करता है (S टेक्स्ट के रूप में पढ़ा जाता है, I nil के रूप में); कोई और टैग वाला, या बीच में कटा पैकेट, ड्रॉप होने के बजाय डिकोड त्रुटि के रूप में दिखता है।

संदेश को wait में बदलना ​

हर पंक्ति में एक ⇠ बटन, इसकी प्रतीक्षा करें होता है। यह खुले प्रयोग में एक Wait for OSC चरण जोड़ता है, जो मॉनिटर के बाइंड पता पर इस पते के लिए सुनता है, हर टेक्स्ट, पूर्ण-संख्या और true/false आर्ग्युमेंट के लिए "बराबर" नियम के साथ — floats, blobs और nil को कोई नहीं मिलता — अधिकतम 16 नियम। इसका टाइमआउट 2000 ms है। एडिटर नए चरण के साथ खुलता है।

WARNING

वह प्रयोग चलाने से पहले मॉनिटर रोकें। रन वही पोर्ट ख़ुद खोलता है, और दो listeners उसे साझा नहीं कर सकते।

वेवफ़ॉर्म चलाना ​

सिग्नल जनरेटर एक के बाद एक संदेश एक पते पर भेजता है, एक ही आर्ग्युमेंट के साथ जिसका मान एक वेवफ़ॉर्म का अनुसरण करता है — कोई फ़ेडर, लाइट का स्तर, कोई स्थिति। इसका उपयोग यह देखने के लिए करें कि कोई डिवाइस चलते मान का अनुसरण कैसे करता है, या किसी रिसीवर पर लगातार धारा डालने के लिए।

  1. लक्ष्य host:port और पता सेट करें। दोनों जनरेटर शुरू करें दबाने पर जाँचे जाते हैं, जैसे भेजने वाला उन्हें जाँचता है।
  2. वेवफ़ॉर्म, उसकी आवृत्ति (Hz) और दर (pps) चुनें।
  3. न्यूनतम और अधिकतम सेट करें, यानी मान की सीमा।
  4. जनरेटर शुरू करें दबाएँ। यह तब तक चलता है जब तक आप जनरेटर रोकें न दबाएँ या कंसोल पट्टी में उसका जॉब न रोकें।
फ़ील्डक्याडिफ़ॉल्ट
लक्ष्य host:portरिसीवर का IP:port या host:port; नाम एक बार खोजा जाता है, जब जनरेटर शुरू होता है127.0.0.1:9000
पतावह पता जिस पर हर संदेश भेजा जाता है; यह / से शुरू होता है/hello/lfo
वेवफ़ॉर्मसमय के साथ मान का आकार (नीचे)साइन
आवृत्ति (Hz)प्रति सेकंड वेवफ़ॉर्म के चक्र1
दर (pps)प्रति सेकंड संदेश, 0.1 से 5000 तक; बाहर का मान उसी सीमा में रोक दिया जाता है60
न्यूनतम, अधिकतमसबसे नीचा और सबसे ऊँचा मान। अगर Max, Min से नीचे हो, तो मान हिलता नहीं।0, 1
int के रूप में भेजेंनिकटतम पूर्ण संख्या तक राउंड करें और float के बजाय int भेजेंबंद
वेवफ़ॉर्महर चक्र में मान क्या करता है
साइनMin और Max के बीच सहजता से झूलता है, बीच से शुरू होकर ऊपर उठता है
त्रिकोणMin से Max तक उठता है, फिर Min पर वापस गिरता है, Min से शुरू होकर
सॉगिरता आरा-दाँता: Max से शुरू होकर Min तक गिरता है, फिर Max पर वापस उछलता है
रैंपचढ़ता आरा-दाँता: Min से शुरू होकर Max तक चढ़ता है, फिर Min पर वापस उछलता है
वर्गपहले आधे में Max, दूसरे में Min
रैंडमहर संदेश के साथ Min और Max के बीच एक नया रैंडम मान; आवृत्ति उपयोग नहीं होती
स्थिरहर बार Max; आवृत्ति उपयोग नहीं होती

स्कोप ​

फ़ील्डों के बगल में, स्कोप मान को भेजे जाते समय खींचता है: नवीनतम 300 बिंदु, फ़िट होने के लिए स्केल किए हुए। उसके नीचे वेवफ़ॉर्म, आवृत्ति और दर, और अंतिम भेजा गया मान होता है। स्कोप लगभग 30 बार प्रति सेकंड अपडेट होता है, चाहे जनरेटर कितनी भी तेज़ी से भेजे, इसलिए ऊँची दरों पर यह संदेशों का एक नमूना दिखाता है, हर एक को नहीं।

अगर कोई भेजना विफल हो, तो जनरेटर रुक जाता है और कंसोल कारण बताता है।

इंस्पेक्टर में ​

कैप्चर चालू रहते (इंस्पेक्टर में कैप्चर चालू करें), OSC ट्रैफ़िक प्रोटोकॉल osc के साथ दिखता है:

स्रोतक्याटिप्पणियाँ
osc-sendवह हर संदेश जो भेजने वाला, कोई लाइब्रेरी सिग्नल, कोई OSC संदेश चरण या signallab send osc भेजता हैजवाब की प्रतीक्षा करता कोई चरण experiment के रूप में दिखता है
osc-monitorमॉनिटर को मिला हर पैकेटबंडल का सारांश उसके पहले संदेश और +n more in bundle से दिया जाता है; ख़राब पैकेट का फ़ैसला decode error: … होता है
osc-genजनरेटर के संदेशहर 100 ms में अधिकतम एक कैप्चर होता है, फ़ैसले sampled के साथ; छोड़े गए संदेशों के बाद आने वाला अगला जोड़ता है कि कितने नहीं खींचे गए — sampled · +5 not shown

हर फ़्रेम उन बाइट को रखता है जिनसे इसे बनाया गया था। देखें इंस्पेक्टर।

सहेजना और दोबारा उपयोग ​

  • सिग्नल के रूप में सहेजें। बटनों के नीचे सहेजें… संदेश को — लक्ष्य, पता और आर्ग्युमेंट — सिग्नल लाइब्रेरी में, आपके चुने फ़ोल्डर में रख देता है। तब से भेजने वाला उस सिग्नल से जुड़ जाता है: सहेजें (या भेजने वाले में Ctrl+S) उसे अपडेट करता है, इस रूप में सहेजें… एक कॉपी बनाता है, और उनके बगल की चिप उसे सिग्नल में खोलती है। बाद में उसे सिग्नल से या किसी भी स्क्रीन पर Ctrl+K से भेजें। देखें सिग्नल।
  • किसी प्रयोग में जोड़ें। प्रयोग में जोड़ें खुले प्रयोग में उसी लक्ष्य, पते और आर्ग्युमेंट वाला एक OSC संदेश चरण जोड़ता है — End से ठीक पहले, या चुने गए चरण के बाद — और उसे खोल देता है। प्रयोग चलते समय कुछ नहीं जोड़ा जा सकता; कंसोल ऐसा बताता है।

प्रयोगों में ​

चरणक्या करता है
OSC संदेशएक संदेश भेजता है। इसका लक्ष्य, पता और टेक्स्ट आर्ग्युमेंट {{templates}} लेते हैं। जवाब की प्रतीक्षा करें के साथ यह अपने किसी पोर्ट से भेजता है और उसी चरण में वहीं जवाब की प्रतीक्षा करता है। विवरण
OSC की प्रतीक्षाऐसे संदेश की प्रतीक्षा करता है जिसका पता किसी पैटर्न से मेल खाता हो और जिसके आर्ग्युमेंट नियम पास करते हों। विवरण
एमुलेटरएक OSC डिवाइस जो पूरे रन के लिए नियमों से जवाब देता है। देखें एमुलेटर।

OSC संदेश चरण स्क्रीन की तरह IP:port या host:port लेता है, और इसका पता / से शुरू होना चाहिए। होस्ट नाम हर बार चरण के भेजने पर खोजा जाता है।

पता पैटर्न ​

OSC की प्रतीक्षा, OSC संदेश का जवाब और OSC एमुलेटर के नियम पतों को OSC 1.0 पैटर्न से मिलाते हैं:

पैटर्नमेल खाता है
*अक्षरों की कोई भी श्रृंखला, कोई भी नहीं भी
?ठीक एक अक्षर
[0-9], [a-c]समूह या श्रेणी से एक अक्षर
[!0-9]समूह में न होने वाला एक अक्षर
{ping,pong}शब्दों में से एक

वाइल्डकार्ड स्लैशों के बीच एक ही हिस्से में रहते हैं: /cue/* /cue/7 से मेल खाता है पर /cue/7/go से नहीं, और कोई पैटर्न केवल उतने ही हिस्सों वाले पते से मेल खाता है। मिलान केस-संवेदी है। पैटर्न / से शुरू होता है, उसमें ख़ाली हिस्सा (//), स्पेस, # और ASCII से बाहर के अक्षर नहीं होते, और यह अधिकतम 512 अक्षर का होता है।

आर्ग्युमेंट नियम आर्ग्युमेंट संख्या 0–63 की किसी मान से तुलना करते हैं (बराबर, उससे कम, समाहित, कोई रेगुलर एक्सप्रेशन से मेल और इसी तरह); किसी wait में अधिकतम 16 होते हैं। जब कोई बंडल आता है, तो wait उसे ले लेता है अगर उसका कोई संदेश मेल खाता हो। मिले संदेश के बाद के चरणों को क्या देता है, यह देखें डेटा और टेम्पलेट में।

कमांड लाइन से ​

signallab send osc भेजने वाले की तरह एक संदेश भेजता है:

bash
signallab send osc 127.0.0.1:9000 /cue/go f:0.75 s:main
text
✔ sent /cue/go (24 bytes) → 127.0.0.1:9000

हर आर्ग्युमेंट tag:value होता है: i:3, f:0.5, d:1.5, h:64, s:text, b:de ad be ef (hex बाइट), या अकेले T, F, N। टैग के बिना, पूर्ण संख्या i होती है, दशमलव बिंदु वाली संख्या f, और बाकी कुछ भी s; टेक्स्ट 7 भेजने के लिए s:7 लिखें। लक्ष्य IP:port या host:port होता है। यह 0 के साथ निकलता है जब संदेश चला गया, 1 जब भेजना विफल हुआ (वह होस्ट नाम भी जो रिज़ॉल्व नहीं होता), और 2 जब कोई आर्ग्युमेंट, पता या लक्ष्य अमान्य हो। signallab fire सहेजा गया सिग्नल भेजता है। देखें कमांड लाइन।

TIP

Windows पर Git Bash में, / से शुरू होने वाला आर्ग्युमेंट signallab के देखने से पहले एक फ़ाइल पथ में बदल दिया जाता है। कमांड को आगे MSYS_NO_PATHCONV=1 लगाकर चलाएँ, या PowerShell या cmd का उपयोग करें।

समस्याएँ ​

जो आप देखते हैंसामान्य कारण
भेजते समय … is not a valid addressलक्ष्य में पोर्ट नहीं है, या वह न IP:port है न host:port।
भेजते समय Cannot resolve …होस्ट नाम इस मशीन पर रिज़ॉल्व नहीं होता। उसे जाँचें, या IP पता उपयोग करें।
OSC addresses start with / (…)पते में शुरुआती / नहीं है।
संदेश भेजा जाता है पर डिवाइस कुछ नहीं करताग़लत पोर्ट या पता; उससे भिन्न प्रकार जिसकी वह अपेक्षा करता है (float के बजाय int, bool के बजाय टेक्स्ट "true")। इसे इंस्पेक्टर में देखें, या यह देखने के लिए कि क्या बाहर जाता है, लक्ष्य को इसी मशीन के मॉनिटर की ओर मोड़ें।
सुनें पर … is already in use by another programकोई और प्रोग्राम — या कोई चलता प्रयोग, एमुलेटर या दूसरा मॉनिटर — उस पोर्ट पर है।
… is not an address of this computerबाइंड पता का IP किसी और मशीन का है। 0.0.0.0 या इस मशीन के किसी पते का उपयोग करें।
दूसरी मशीनों से पैकेट कभी नहीं आतेWindows पर फ़ायरवॉल उन्हें रोक सकता है: जब ऐप पेशकश करे तो Signal Lab को अनुमति दें। स्थानीय ट्रैफ़िक (127.0.0.1) प्रभावित नहीं होता। देखें समस्या निवारण।
(डिकोड त्रुटि) पंक्तियाँभेजने वाला उस पोर्ट पर OSC 1.0 नहीं बोल रहा, या ऐसा टाइप टैग उपयोग कर रहा है जिसे Signal Lab डिकोड नहीं करता।

सर्वर पर स्क्रीन सर्वर के नेटवर्क पर काम करती है: 127.0.0.1 सर्वर ही है, और मॉनिटर सर्वर के पोर्ट पर सुनता है। देखें सर्वर।

हर त्रुटि संदेश त्रुटि संदेश में सूचीबद्ध है।