कंप्यूटर कीबोर्ड के रूप में पियानो कीबोर्ड का उपयोग करना [बंद]


727

मुझे आरएसआई की समस्या है और मैंने 30 अलग-अलग कंप्यूटर कीबोर्ड की कोशिश की है, जिससे मुझे दर्द हुआ। पियानो बजाने से मुझे दर्द नहीं होता। मैंने लगभग 20 वर्षों तक बिना किसी दर्द के मुद्दों के लिए पियानो बजाया है। मैं जानना चाहूंगा कि क्या मिडी कीबोर्ड और आउटपुट कीबोर्ड स्ट्रोक से मिडी को पकड़ने का कोई तरीका है। मुझे मिडी के बारे में कुछ भी नहीं पता है, लेकिन मैं इस संकेत को किस्ट्रोकेक में बदलने के बारे में कुछ मार्गदर्शन चाहूंगा।


मिडी पर कब्जा करने के लिए क्यों, अगर आप एक सिंथेसाइज़र कीबोर्ड का उपयोग कर सकते हैं?
शेवस्की

@ I__: आपको किस ऑपरेटिंग सिस्टम का समर्थन करने की आवश्यकता है? शायद बात होगी।
टीजे क्राउडर

5
@ शेव्स्की: मैं कुछ भी करने की कोशिश नहीं कर रहा, @I__ सवाल पूछने वाला व्यक्ति है। वह ध्वनि को रूपांतरित करना नहीं देख रहा है , बल्कि डिजिटल कीबोर्ड ईवेंट सिग्नल को इलेक्ट्रॉनिक कीबोर्ड द्वारा संगीत वाद्ययंत्र डिजिटल इंटरफ़ेस के माध्यम से भेजा गया है । ये कंप्यूटर कीबोर्ड ईवेंट्स को बहुत पसंद करते हैं: "नोट ऑन" की-बोर्ड से अच्छी तरह मेल खाता है, की-अप के लिए "नोट ऑफ", आदि। आप कॉर्ड को कैसे बजाया जाता है, इसके आधार पर विभिन्न क्रियाओं को करने के लिए वेलोसिटी डेटा का भी उपयोग कर सकते हैं। मुझे आइडिया पसंद है।
टीजे क्राउडर

34
यदि आपको यह काम करने के लिए मिलता है, तो आप किसी भी तरह के मिडी डिवाइस का उपयोग करके कोड कर सकते हैं। यह शायद कुछ अभ्यास करता है, लेकिन विकास टीम के रूप में एक ऑर्केस्ट्रा का उपयोग करना मजेदार होना चाहिए।
तून Krijthe

1
@I__: सबसे अधिक उत्तोलित उत्तर आपको जावा साउंड एपीआई के MIDI सपोर्ट की ओर इशारा करता है, जो आपको मिडी डेटा प्राप्त करते हुए मिलना चाहिए, और कुछ विस्तार से वर्णन करता है जो कि सिस्ट्रोक्स की श्रृंखला में बदलने में शामिल है। दूसरा सबसे upvoted जवाब एक बहुत व्यवहार्य तरीके के बारे में बात करती है तो आप सहित एक Arduino का उपयोग कर, एक कंप्यूटर से कनेक्ट कर सकता है कि ... (जारी)
टीजे Crowder

जवाबों:


16

पूर्ण मिडी समर्थन (BASS) के साथ .NET में एक अच्छा पुस्तकालय, http://www.un4seen.com पर जाएं

और दूसरे भाग के लिए, कीबोर्ड मिडी नोट्स को कुंजियों और अधिक के लिए अनुवाद करते हुए, मैं AutoItX, ActiveX / COM और DLL इंटरफ़ेस को autoIt के लिए जाऊंगा। जानकारी और डाउनलोड करें, http://www.autoitscript.com/site/autoit/ पर जाएं

कीबोर्ड ड्राइवर लिखने की आवश्यकता नहीं है।


430

मैंने सालों में कोई भी MIDI प्रोग्रामिंग नहीं की है, लेकिन आपका मौलिक विचार बहुत ही अच्छा है (कोई सज़ा नहीं)।

मिडी "घटनाओं" (या "संदेश") की एक धारा है, दो सबसे मौलिक "नोट पर" और "नोट ऑफ" हैं, जो उनके साथ नोट संख्या (0 = C पांच सप्तक के मध्य C के नीचे, 127 = के माध्यम से ले जाते हैं) G पाँच सप्तक ऊपर G के मध्य C के ऊपर, अर्ध-स्वर में)। ये इवेंट 0 और 127 के बीच के बल के साथ ("टच सेंसिटिव") होने वाले की-बोर्ड पर "वेग" की संख्या रखते हैं, जो संवेदनशील ("टच सेंसिटिव") है।

वेग, चॉजिंग और पैडल के बीच, मुझे लगता है कि आप पियानो कीबोर्ड के लिए काफी अच्छे "टाइपिंग" इंटरफेस के साथ आ सकते हैं। विशेष रूप से रिकॉर्डिंग एक बहुत ही शक्तिशाली तकनीक हो सकती है - जैसा कि मैंने टिप्पणियों में उल्लेख किया है, यही कारण है कि रैंक-एंड-फाइल स्टेनोग्राफर एक स्टेनोग्राफी मशीन का उपयोग करके लोगों के साथ लगातार घंटों बात कर सकते हैं, जब यहां तक ​​कि टॉप-फ्लाइट टाइपिस्ट भी होते हैं ' t सामान्य टाइपराइटर-स्टाइल कीबोर्ड के माध्यम से किसी भी लम्बाई के लिए सक्षम हो। मशीन आशुलिपि की तरह, आपको chords के क्रम और क्रम के "शब्दकोश" की आवश्यकता होगी। (क्या आप बता सकते हैं कि मैं मशीन स्टेनोग्राफी के सॉफ्टवेयर साइड में काम करता था?)

ऐसा करने के लिए, मौलिक टुकड़े हैं:

  • मिडी इनपुट प्राप्त करना। अपने आप को ऐसा करने की कोशिश मत करो, एक पुस्तकालय का उपयोग करें। संपादित करें : जाहिरा तौर पर, जावा साउंड एपीआई MIDI का समर्थन करता है , जिसमें MIDI नियंत्रकों से घटनाओं को प्राप्त करना शामिल है। ठंडा। यह पृष्ठ उपयोगी भी हो सकता है।
  • उस डेटा को कीस्ट्रोक्स में परिवर्तित करना जिसे आप उपर्युक्त शब्दकोश के माध्यम से भेजना चाहते हैं।
  • कंप्यूटर को कीस्ट्रोक्स का आउटपुट देना।

सॉफ़्टवेयर के साथ सबसे व्यापक रूप से संगत होने के लिए, आपको इसे कीबोर्ड डिवाइस ड्राइवर के रूप में लिखना होगा। यह एक प्लग-इन ऑपरेटिंग सिस्टम है जो कीबोर्ड घटनाओं के लिए एक स्रोत के रूप में कार्य करता है, अंतर्निहित हार्डवेयर (आपके मामले में, पियानो पिक्सेल) से बात करता है। Windows और Linux के लिए, आप शायद इसके लिए C का उपयोग करना चाहते हैं।

हालाँकि, चूंकि आप सिर्फ कीस्ट्रोक्स उत्पन्न कर रहे हैं (उन्हें अवरोधन करने की कोशिश नहीं कर रहे हैं, जो मैं वर्षों पहले करना चाहता था), आप कृत्रिम कीस्ट्रोक्स भेजने के लिए ऑपरेटिंग सिस्टम की जो भी सुविधाएँ हैं, उनका उपयोग करने में सक्षम हो सकते हैं। विंडोज में ऐसा करने के लिए एक इंटरफ़ेस है (शायद कई, जो मैं सोच रहा हूं, SendInputलेकिन मुझे पता है कि कुछ "पत्रिका" इंटरफ़ेस है जो कुछ ऐसा ही करता है), और मुझे यकीन है कि अन्य ऑपरेटिंग सिस्टम भी करते हैं। यह अच्छी तरह से आपके उद्देश्यों के लिए पर्याप्त हो सकता है - यह वह जगह है जहां मैं शुरू करूंगा, क्योंकि डिवाइस ड्राइवर मार्ग अजीब होने वाला है और आपको संभवतः जावा की तुलना में इसके लिए एक अलग भाषा का उपयोग करना होगा। (मैं जावा का बहुत बड़ा प्रशंसक हूं, लेकिन डिवाइस ड्राइवरों से बात करने के लिए ऑपरेटिंग सिस्टम का उपयोग करने वाले इंटरफेस सी और इसी तरह की अधिक आसानी से खपत करते हैं।)


अद्यतन : कीस्ट्रोक्स को chords के "शब्दकोश" के बारे में अधिक:

मूल रूप से, शब्दकोश एक ट्राइ (धन्यवाद, @ अदम) है जिसे हम सबसे लंबे समय तक उपसर्ग मिलान के साथ खोजते हैं। विवरण:

मशीन स्टेनोग्राफी में, स्टेनोग्राफर एक ही समय पर स्टेनोटाइप मशीन पर कई कुंजियों को दबाकर लिखते हैं, फिर उन सभी को जारी करते हैं। वे इसे कीबोर्ड का "स्ट्रोक" कहते हैं; यह पियानो पर एक राग बजाने जैसा है। बार-बार स्ट्रोक (लेकिन हमेशा नहीं) बोलचाल की भाषा के एक अक्षर के अनुरूप होता है। सिलेबल्स की तरह, कभी-कभी एक स्ट्रोक (कॉर्ड) का अर्थ अपने आप ही होता है, अन्य बार इसका अर्थ केवल निम्नलिखित स्ट्रोक के साथ संयुक्त होता है। ("अच्छा" बनाम "अच्छा" सोचें और उसके बाद "अलविदा")। हालाँकि वे उस स्कूल से बहुत प्रभावित होंगे जिस पर उन्होंने अध्ययन किया था, प्रत्येक आशुलिपिक का अपना "डिक्शनरी" होगा कि वे किस स्ट्रोक का उपयोग करते हैं इसका मतलब क्या है, एक शब्दकोश जो वे अपने कामकाजी जीवन के दौरान लगातार करेंगे। डिक्शनरी में प्रविष्टियाँ होंगी जहाँ स्टेनोग्राफिक भाग ("स्टेनो", संक्षेप में) एक स्ट्रोक लंबा, या कई स्ट्रोक लंबा होता है। अक्सर, एक ही शुरुआती स्ट्रोक के साथ कई प्रविष्टियां होंगी जो उनकी लंबाई और उसके बाद के स्ट्रोक से भिन्न होती हैं। उदाहरण के लिए (और मैं यहां असली स्टेनो का उपयोग नहीं करूंगा, सिर्फ प्लेसहोल्डर), ये प्रविष्टियां हो सकती हैं:

ए = अल्फा
A / B = वर्णमाला
ए / बी / सी = अक्षरात्मक
ए / सी = एयर कंडीशनिंग
बी = मधुमक्खी
बी / सी = क्योंकि
सी = समुद्र
डी = कुत्ता
डी / डी = डी डे

(उन अक्षरों का अर्थ संगीत के नोट्स नहीं हैं, केवल सार मार्कर हैं।)

ध्यान दें कि Aकई प्रविष्टियां शुरू होती हैं, और यह भी ध्यान दें कि आप किस तरह से एक Cस्ट्रोक का अनुवाद करते हैं यह इस बात पर निर्भर करता है कि क्या आपने पहले एक देखा Aहै B, या आप नए सिरे से शुरू कर रहे हैं।

यह भी ध्यान दें कि (हालांकि बहुत छोटे नमूने में नहीं दिखाया गया है), केवल एक के बजाय एक ही शब्द या वाक्यांश को "खेलने" के कई तरीके हो सकते हैं। आशुलिपिक ऐसा करते हैं कि हाथ की स्थिति के आधार पर पूर्ववर्ती शब्द से अगले तक प्रवाह करना आसान हो जाता है। वहाँ संगीत के लिए एक स्पष्ट सादृश्य है, और आप उपयोग कर सकते हैं कि आपके टाइपिंग प्रवाह को संगीत बजाने के लिए अधिक समान बना दिया जाए, ताकि दोनों इसे अपने पियानो बजाने को नकारात्मक रूप से प्रभावित करने से रोक सकें और वास्तव में आरएसआई के साथ मदद करने की संभावना को अधिकतम करने के लिए।

स्टेनो को मानक पाठ में अनुवाद करते समय, फिर से हम "सबसे लंबे समय तक उपसर्ग मिलान" खोज का उपयोग करते हैं: अनुवाद एल्गोरिथ्म पहले लिखे गए स्ट्रोक से शुरू होता है, और उस स्ट्रोक से शुरू होने वाली प्रविष्टियों की तलाश करता है। यदि केवल एक प्रविष्टि है, और यह एक स्ट्रोक लंबा है, तो हम मज़बूती से कह सकते हैं कि "यह प्रविष्टि उपयोग करने के लिए है", संबंधित पाठ को आउटपुट करता है, और फिर अगले स्ट्रोक के साथ नए सिरे से शुरू करता है। लेकिन अधिक संभावना है, यह स्ट्रोक अलग-अलग लंबाई की कई प्रविष्टियां शुरू करता है। इसलिए हम अगले स्ट्रोक को देखते हैं और देखते हैं कि क्या प्रविष्टियाँ हैं जो क्रम में उन दो स्ट्रोक से शुरू होती हैं; और इसी तरह जब तक हमें मैच नहीं मिलता।

तो ऊपर दिए गए शब्दकोश के साथ, मान लीजिए कि हमने यह क्रम देखा:

ACBBCABCABD

यहां बताया गया है कि हम इसका अनुवाद कैसे करेंगे:

  1. Aअलग-अलग लंबाई की तीन प्रविष्टियों की शुरुआत है; अगले स्ट्रोक पर देखें:C
  2. A/Cकेवल एक प्रविष्टि से मेल खाता है; उत्पादन "एयर कंडीशनिंग" और अगले स्ट्रोक के साथ नए सिरे से शुरू करें:B
  3. Bदो प्रविष्टियाँ शुरू करता है; अगले स्ट्रोक पर देखें:B
  4. B/Bकुछ भी शुरू नहीं करता है; सबसे लंबा पिछला मैच लें ( B) और आउटपुट ("मधुमक्खी")
  5. आउटपुट B= "मधुमक्खी" होने के बाद भी Bहमारे बफर में स्ट्रोक होता है। यह दो प्रविष्टियाँ शुरू करता है, इसलिए अगले स्ट्रोक को देखें:C
  6. B/Cएक प्रविष्टि से मेल खाता है; आउटपुट "क्योंकि" और अगले स्ट्रोक के साथ नए सिरे से शुरू करें:A
  7. Aतीन प्रविष्टियाँ शुरू करता है; अगला स्ट्रोक देखें:B
  8. A/Bदो प्रविष्टियाँ शुरू करता है; अगला स्ट्रोक देखें:C
  9. A/B/Cकेवल एक प्रविष्टि से मेल खाता है; आउटपुट "अल्फाबेटिक" और अगले स्ट्रोक के साथ नए सिरे से शुरू करें:A
  10. Aतीन प्रविष्टियाँ शुरू करता है; अगले स्ट्रोक पर देखें:B
  11. A/Bदो प्रविष्टियाँ शुरू करता है; अगले स्ट्रोक पर देखें:D
  12. A/B/Dकुछ भी मेल नहीं खाता है, इसलिए सबसे लंबे समय तक पिछले मैच ( A/B) का उपयोग करें और इसे "वर्णमाला" आउटपुट के लिए उपयोग करें। वह हमें Dअभी भी बफर में छोड़ देता है ।
  13. Dदो प्रविष्टियाँ शुरू करता है, इसलिए हम आम तौर पर अगले स्ट्रोक को देखेंगे - लेकिन हमने सभी स्ट्रोक संसाधित किए हैं, इसलिए इसे अलगाव में विचार करें। अलगाव में, यह "कुत्ते" के रूप में अनुवाद करता है ताकि उत्पादन हो।

नोट करने के लिए ऊपर के पहलू:

  • आपके पास आपके द्वारा पढ़े गए स्ट्रोक का एक बफर है लेकिन अभी तक इसका अनुवाद नहीं किया गया है।
  • आप हमेशा एकल प्रविष्टि के खिलाफ सबसे स्ट्रोक से मेल खाना चाहते हैं जो आप कर सकते हैं। A/B"वर्णमाला" के रूप में अनुवादित होना चाहिए, न कि "अल्फा" और "मधुमक्खी"।
  • (ऊपर नहीं दिखाया गया है) आपके पास अच्छी तरह से स्ट्रोक के अनुक्रम हो सकते हैं जिन्हें आप अनुवाद नहीं कर सकते, क्योंकि वे शब्दकोश में कुछ भी मेल नहीं खाते हैं। (स्टेनो लोग संज्ञा "अनट्रांसलेट" का उपयोग करते हैं - उदाहरण के लिए, हमारे शब्दकोश के साथ, स्ट्रोक Eएक "अनट्रेल" होगा।)
  • (ऊपर नहीं दिखाया गया है) स्टेनो के कुछ सिद्धांत व्यापक संदर्भ के आधार पर, स्ट्रोक के एक ही सेट को एक से अधिक चीजों का मतलब देने की अनुमति देते हैं। स्टेनो लोग इन "संघर्षों" को कहते हैं। आप शायद उन्हें अपनी परियोजना में शामिल नहीं करना चाहते हैं, और वास्तव में जब स्टेनो को स्टेनोग्राफर द्वारा मैन्युअल रूप से अनुवादित किया जाता था, तो टकराव ठीक थे क्योंकि उन्हें पता होगा कि वाक्य में वे कहाँ से सही विकल्प थे, लेकिन वृद्धि के साथ मशीनी अनुवाद, स्टेनो के संघर्ष-मुक्त सिद्धांत विशेष रूप से परिणामस्वरूप अनुवादित पाठ और "फिक्स" संघर्षों से गुजरने से बचने के लिए उत्पन्न हुए।
  • वास्तविक समय में अनुवाद करना (जो आप कर रहे हैं) का अर्थ है कि यदि आप आंशिक मैच प्राप्त करते हैं, तो आप अगले कॉर्ड का इंतजार करते हुए उस पर पकड़ बनाना चाहेंगे - लेकिन शायद केवल एक टाइमआउट तक, जिस बिंदु पर आप जो भी आपके पास बफर में है उसे आप सबसे अच्छा अनुवाद कर सकते हैं। (या हो सकता है कि आप टाइमआउट न चाहते हों; यह आपकी कॉल है।)
  • शायद सबसे अच्छा है एक स्ट्रोक है जो कहता है "पिछले स्ट्रोक की उपेक्षा करें"
  • शायद सबसे अच्छा है एक स्ट्रोक जो कहता है "कुछ भी आउटपुट के बिना पूरी तरह से बफर को साफ करें"

6
@I__: कुछ प्रोग्राम कीबोर्ड डिवाइस से सीधे बात करने की कोशिश करते हैं और इसलिए "sendkeys" जैसे इंटरफेस के साथ अच्छी तरह से नहीं खेलते हैं। उम्मीद है कि यह कुछ साल पहले की तुलना में अब भी कम है जब मैंने आखिरी बार इससे निपटा था, और इसलिए मैं कहता हूं, मैं तंत्र की तरह "प्रेषक" के साथ शुरू करूंगा और केवल दूसरे के बारे में चिंता करना चाहिए, अगर आपको और कब जरूरत पड़े। (संभवतः एक त्वरित कार्यक्रम परीक्षण कुंजी भेजने के लिए [अपने आप से, MIDI से उन्हें प्राप्त नहीं करके] - जिसमें विशेष कुंजी क्रम शामिल हैं - और फिर उस सॉफ़्टवेयर का परीक्षण करना जिससे आप नियंत्रण करना चाहते हैं इससे पहले कि आप बहुत दूर का रास्ता पाएं। ।)
टीजे क्राउडर

7
जिन लोगों ने इसके बारे में कभी नहीं सुना, उनके लिए आप जिस शब्दकोश का वर्णन करते हैं, वह मूल रूप से एक ट्राइ (उच्चारण 'कोशिश') है
एडम

14
@I__: यह कहने के लिए अब लिखना दिलचस्प है। आपको और क्या चाहिए? मुझे लगता है कि मुझे आपके द्वारा किए जाने वाले कई महत्वपूर्ण पहलुओं का पता है। मैंने ऐसा नहीं किया है, न ही किसी के पास इशारा किया है, क्योंकि मेरे पास करने के लिए अन्य चीजें हैं और पूर्व-निर्मित समाधान के बारे में नहीं पता है। लेकिन एक समाधान के निर्माण के संदर्भ में , मुझे लगता है कि मैंने आपको सही दिशा में इंगित किया है।
टीजे क्राउडर

2
ध्यान दें कि आप एक रेखीय सरणी में सभी chords को जाम कर सकते हैं और हर बार जब आप मिडी इवेंट प्राप्त करते हैं, तो ट्रैवर्सल करते हैं, और अभी भी किसी भी ध्यान देने योग्य मंदी का अनुभव नहीं करते हैं। तीनों का उपयोग करने से समय से पहले अनुकूलन की थोड़ी सी गंध आती है।
FeepingCreature

5
@FingingCreature: जब मैं आशुलिपिकों और अदालत के पत्रकारों के साथ ऐसा कर रहा था, तो उनके शब्दकोश आसानी से सैकड़ों हजारों प्रविष्टियों तक पहुंच सकते थे (मुझे याद है कि जिसने लाखों अंक तोड़े थे)। एक अनुकूलन रणनीति का उपयोग करने के बारे में कुछ भी समय से पहले नहीं था, हम 12 मेगाहर्ट्ज 386 के साथ काम कर रहे थे। अगर मैं Arduino विचार (जो वास्तव में अच्छा विचार है) के साथ जाता है, तो मैं भी आधुनिक युग के लिए काफी कमज़ोर हार्डवेयर से निपटूंगा, हालांकि हमारे पास जितना था उससे कहीं अधिक तेज़ी से सामान। मुझे लगता है कि उनका शब्दकोश नाटकीय रूप से छोटा होगा, लेकिन ...
TJ Crowder

184

हार्डवेयर में कुछ करने पर विचार करें जो एक usb (या ps / 2?) कीबोर्ड का अनुकरण करता है। अब आप किसी विशिष्ट OS या विशिष्ट OS API पर निर्भर नहीं रहेंगे। एक हार्डवेयर समाधान समय की कसौटी पर खड़ा होगा। विंडोज 7 में एक पुराने एपीआई का उपयोग करके अटक न जाएं जब बाकी सभी विंडोज 11 चला रहे हों! Arduino सीखना बहुत आसान है।

वहाँ जानकारी के एक टन है और वहाँ Arduino के लिए मदद करते हैं। यह एक हार्डवेयर हैकिंग प्लेटफॉर्म है जिसे न्यूबीज़ के लिए बनाया गया है। यह केवल अब बड़ा हो जाएगा कि Google Arduino को आगे बढ़ा रहा है।

EDIT: वर्चुअल USB कीबोर्ड सॉफ्टवेयर और हार्डवेयर


मुझे इसके लिए एक Arduino का उपयोग करने के विचार से प्यार है। हालाँकि, मेमोरी एक समस्या हो सकती है। ऐसा लगता है कि सबसे बड़े पूर्व-डिज़ाइन किए गए बोर्डों में 256k फ्लैश (जिनमें से 8k बूटलोडर द्वारा उपयोग किया जाता है) है। दिन में वापस, हमने DOS (उदाहरण के लिए, सामान्य 640k प्लस या तो ईएमएस या विस्तारित मेमोरी) के तहत 1M में मशीन शॉर्टहैंड के अनुवाद / प्रदर्शन / संपादन को ढहा दिया, लेकिन हम तंग सी कोड और असेंबली और डिक्शनरी (जो आसानी से लिख सकते हैं) लिख रहे थे be> 250k अपने आप) डिस्क पर था। यहाँ कोई प्रदर्शन या एक साथ संपादन नहीं होना चाहिए, इसलिए यह अच्छा है, लेकिन शब्दकोष छोटा होना पड़ेगा ...
टीजे क्राउडर

ओह, यह कुछ भी नहीं है। मैं अदालत के उन पत्रकारों से नियमित रूप से निपटता था जिनके पास शब्दकोष थे, यहां तक ​​कि हमारे द्वारा उपयोग किए जाने वाले बहुत कॉम्पैक्ट रूप में संग्रहीत, आकार में कई मेगाबाइट थे। मैंने जो सबसे बड़ा व्यक्तिगत रूप से देखा था वह 4.5 एमबी था - और फिर, जो कि एक उच्च-संकुचित रूप में संग्रहीत किया गया था। इस तथ्य के साथ संयोजन करें कि पियानो कीबोर्ड की तुलना में स्टेनो कीबोर्ड पर कम चाबियाँ हैं ... फिर भी, हालांकि, अरुडुइनो में एक यूएसबी पोर्ट है, इसलिए शब्दकोश एक यूएसबी फ्लैश एडॉप्टर पर हो सकता है, या एक (बाहरी रूप से संचालित) ) एसएसडी या एचडीडी।
टीजे क्राउडर

2
@ आप एक arduino ( pjrc.com/teensy ) की बजाय अधिक स्मृति में एक किशोर पर विचार करना चाह सकते हैं और सीधे एक कीबोर्ड का अनुकरण कर सकते हैं। यह पहले से ही कई arduino पुस्तकालयों के साथ संगत है और असंगत लोगों को बस पिन पुनर्मूल्यांकन की आवश्यकता होती है। - वैकल्पिक रूप से, एटमेगा एक डेमो बोर्ड भी बनाता है, जिसमें 16 एमबी का बिल्ट इन फ्लैश होता है और इसकी कीमत लगभग $ 30 (at90usbkey) होती है
मार्क

8
कंप्यूटर के लिए एक उपयोगी पियानो इंटरफ़ेस डिजाइन करना आसान काम नहीं है। IMHO, ओपी को पहले अपने वर्तमान परिवेश में इसे प्रोटोटाइप बनाना चाहिए, फिर, यदि यह उसकी जरूरतों को पूरा करता है, तो पोर्टेबिलिटी की चिंता करता है। जब तक, ज़ाहिर है, पोर्टेबल विकल्प काफ़ी कठिन नहीं है।
एमिलियो एम बुमाचार

111

यह मुझे लगता है जैसे आप इस बारे में सलाह के लिए कम देख रहे हैं कि इसे कैसे बनाया जाए और यह पूछने के लिए कि क्या संसाधन हैं जो आप चाहते हैं। आपके ओएस पर निर्भर करते हुए, स्क्रैच से अपना प्रोग्राम लिखने के लिए इसे पूरा करने के कई तरीके हैं:

मिडी स्ट्रोक

नि: शुल्क। के लिए मैक ओएस एक्स 10.3 और ऊपर । यह विशेष रूप से " पूर्ण विकसित कंप्यूटर कीबोर्ड प्रतिस्थापन के रूप में किसी भी मिडी कीबोर्ड का उपयोग करने की क्षमता के साथ आता है ।"

Bome के MIDI अनुवादक

नि: शुल्क / पोस्टकार्डवेयर (यह थोड़ा अजीब है)। के लिए Windows 2000 और ऊपर, और मैक ओएस एक्स । यह शुरू में AutoHotkey -type उपयोग की दिशा में अधिक सक्षम प्रतीत होता है , लेकिन आगे देखने पर मुझे लगता है कि यह वही कर सकता है जो आप अच्छी तरह से चाहते हैं।

मैक्स और aka.keyboard

नि: शुल्क। के लिए मैक ओएस एक्स । बिल्कुल "बॉक्स से बाहर तैयार" समाधान नहीं है, लेकिन अगर आप बुनियादी डिवाइस कॉन्फ़िगरेशन के साथ सहज हैं, तो यह बहुत बुरा नहीं होना चाहिए।


49

आप MIDI DotNet में .NET में स्रोत कोड के नमूने के साथ हार्डवेयर का उपयोग कर सकते हैं ।

MIDI नोट डेटा स्ट्रीम बनाने के लिए सोर्सकोड के रूप में एक पूर्ण कार्य नमूना VB 5/6-Tipp 0521 में है: MIDI-Töne erzeugen (Visual Basic 6.0, कहीं .NET संस्करण भी है)

कीबोर्ड स्ट्रोक का अनुकरण करने का एक तरीका VB 5/6-Tipp 0155 है: Tastaturereignisse simulieren (विजुअल बेसिक 6.0, कहीं-कहीं .NET संस्करण भी है)

और पहचानें कीस्ट्रोक्स का वर्णन Tipp-Upload है: VB.NET 0266: Global KeyHook

यहां छवि विवरण दर्ज करें

फिर, बस एक पियानो प्लेयर के लिए एक अच्छा काम कर मैट्रिक्स का उपयोग करें टिमो बोहेमे www.goldengel.ch

पियानो पर और जब आप एक अच्छे खिलाड़ी होते हैं, तो आप कीबोर्ड पर 10 उंगलियां रख सकते हैं और यदि मैट्रिक्स प्रयोग करने योग्य है, तो आप बहुत जल्दी हो सकते हैं जो किसी भी कंप्यूटर कीबोर्ड उपयोगकर्ता को लगता है। :-)

उस मामले में, अगर मैं आपके सवाल को सही समझ रहा हूं, तो यह एक बड़ी बात नहीं होनी चाहिए।


41

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

एलेक्स आंद्रे द्वारा x11key बाहरी के साथ मल्टीमीडिया कलाकारों, " शुद्ध डेटा " के लिए चित्रमय प्रोग्रामिंग भाषा का उपयोग करके आप लिनक्स में इस काम को बहुत जल्दी प्राप्त कर सकते हैं ।

Mac पर, आप MidiStroke का उपयोग कर सकते हैं । मैं शामिल विंडोज पर एक विधि का मानना है MidiOx और AutoHotkey उपकरण। एक और समय पर मेरे पास मैक्स / एमएसपी के लिए जावा प्लगइन का उपयोग करने वाला एक संस्करण था । मेरा मानना ​​है कि पैट्रिस कोलेट ने शुद्ध डेटा के लिए एक बाहरी विंडो बनाई जो अच्छी तरह से काम करती थी, लेकिन मैं अब इसका पता नहीं लगा सकता। इसके अलावा, MaxMSP के लिए एक बाहरी है जो विंडोज पर ऐसा कर सकता है। अंत में, गैर-मुक्त लेकिन भयानक ऑस्क्यूलेटर वही कर सकता है जो आप चाहते हैं - सुविधाएँ पृष्ठ देखें।

जब मुझे यह काम करने को मिला, तो मैं इसके साथ कभी नहीं फंसा, क्योंकि मैं लेआउट के साथ टूलींग को रोक नहीं सका। हालांकि यह मेरे इलेक्ट्रिक कीबोर्ड पर मेरा मॉनिटर होने के साथ ही शांत था! सौभाग्य।


37

मिडी के बारे में

आपने कहा कि आप "मिडी के बारे में कुछ भी नहीं जानते हैं"। एक बार आप इसे समझ लेते हैं, तो मिडी तकनीक काफी सीधी-सादी होती है, लेकिन शुरुआत में यह भ्रामक हो सकती है। MIDI के लिए नींव को समझने में संसाधनों में से एक जो मेरे लिए बहुत मददगार रहा है (जो निश्चित रूप से यदि आप MIDI इंटरैक्शन को प्रोग्राम करना चाहते हैं तो आवश्यक हैं), टेक्नोफोब के लिए MIDI नामक एक पुस्तक है । यह पढ़ने में आसान किताब है और बहुत मददगार है।


शुद्ध डेटा और अधिकतम

इंटरैक्टिव मल्टीमीडिया विकसित करने के मेरे अनुभव में, दो समान कार्यक्रम हैं जिनका मैंने सामना किया है जो किसी भी डिवाइस से सिग्नल / इनपुट को जोड़ने और मैप करने की सुविधा प्रदान करते हैं।

ये एक मैक वातावरण के लिए अधिकतम और एक पीसी पर्यावरण के लिए शुद्ध डेटा हैं। दोनों के पास ऑनलाइन प्रलेखन और YouTube ट्यूटोरियल का ढेर है। वीडियो मैक्स / एमएसपी ट्यूटोरियल 1 - अपने कंप्यूटर कीबोर्ड को मिडाइकबोर्ड (सक्षम शैली) के रूप में उपयोग करते हुए मैक्स में निर्मित एक प्रोग्राम को प्रदर्शित करता है जो कंप्यूटर कीबोर्ड को मिडी कीबोर्ड के इनपुट के लिए मैप करता है (जो मूल रूप से आप क्या करने की कोशिश कर रहे हैं, इसके ठीक विपरीत है)। आप एक ही पैटर्न का उपयोग करके अपने इच्छित परिणाम प्राप्त कर सकते हैं, लेकिन संकेतों / मैपिंग को उल्टा कर सकते हैं।


AutoHotkey

AutoHotKey विंडोज के लिए एक मुफ्त खुला स्रोत उपयोगिता है जो आपको मैक्रोज़ को अपने उपकरणों पर चाबियाँ और बटन हटाने के लिए अनुमति देता है। यह मूल रूप से QWERTY कीबोर्ड, जॉयस्टिक और माउस मैक्रोज़ का समर्थन करता है।

हालाँकि, मैं उस विशिष्ट मैपिंग का समर्थन करते हुए एक कार्यान्वयन खोजने में सक्षम था जिसे आप खोज रहे हैं। ये दो सूत्र प्रक्रिया की व्याख्या करते हैं:

  1. AutoHotkey में MIDI का समर्थन , उपयोग के मामले की चर्चा। लेखक एक ऐसे प्रोग्राम की तलाश में था, जो MIDI IN इनपुट का पता लगा सके और जिसे कीप्रेस में अनुवाद कर सके

  2. मिडी इनपुट लाइब्रेरी , लेखक की समस्या का समाधान और ऑटोहोटेके को पोस्ट कोड / पैच जो वास्तव में आपके इच्छित परिणाम को लागू करता है।

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


और कुछ?

कुछ अन्य उत्तरों ने आपको सामान्य रूप से मिडी और मिडी प्रोग्रामिंग पर बहुत अधिक व्यापक जानकारी दी है, लेकिन जैसा कि आपकी पोस्ट बताती है कि आप जो खोज रहे हैं वह काफी नहीं है। यदि संभव हो तो मैं आपकी अधिक सहायता करना चाहूंगा, लेकिन यह आसान होगा यदि आप उस प्रकार की जानकारी के बारे में अधिक विशिष्ट हो सकते हैं जिसकी आप तलाश कर रहे हैं। उदाहरण के लिए, क्या आप एक MIDI कीबोर्ड के इनपुट संकेतों को QWERTY कीबोर्ड के संकेतों में परिवर्तित करने में अधिक रुचि रखते हैं , या आपकी प्राथमिक रुचि आपकी विशिष्ट समस्या के समाधान से बाहर है? आप क्या देख रहे हैं जो अभी तक संबोधित नहीं किया गया है?


27

आप एक किशोर माइक्रो नियंत्रक का उपयोग करके अपने स्वयं के यूएसबी कीबोर्ड को बहुत तेज़ी से हैक कर सकते हैं।

वास्तव में, उनके पास यूएसबी कीबोर्ड बनाने के लिए उदाहरण कोड है ।

आप इस दो तरीकों से संपर्क कर सकते हैं:

  1. एक पुराने पियानो और सीधे किशोरावस्था के लिए स्विच अप प्राप्त करें

  2. MIDI पोर्ट और आवश्यक डीकोडिंग से कनेक्ट करने के लिए अतिरिक्त तर्क जोड़ें।


यह सबसे आशाजनक उत्तर है क्योंकि एक बार जब आप डिवाइसों को पूरा कर लेते हैं, तो यह किसी भी कंप्यूटर और किसी भी ओएस पर काम करेगा। इसे काम में लें या बस खुश रहें कि आप अपने कंप्यूटर को कीबोर्ड की चिंता किए बिना अपग्रेड कर सकते हैं। मैं दो Teensy उपकरणों का उपयोग करूंगा, और उन्हें उनके I / O पिंस के साथ जोड़ूंगा। चूंकि टेनेसी पहले से ही USB MIDI pjrc.com/teensy/td_midi.html का समर्थन करता है, इसलिए आपके कोड को कीबोर्ड किशोरावस्था और मिडी किशोर के बीच बढ़ते संकेतों का ध्यान रखना होगा।
माइकल डिलन

24

दरअसल, मैंने कुछ समय पहले इस पर काम किया था, अपने कंप्यूटर में रॉक बैंड ड्रम इनपुट को कैप्चर करने की कोशिश कर रहा था (थोड़ा जावा होममेड ड्रम एमुलेटर बना रहा था) वैसे भी, मैंने उस पर एक सवाल पूछा था, टाइम डिलेड प्रॉब्लम (वहां पोलिंग कोड है) , साथ ही मैं जो करने का प्रयास कर रहा था।) और अगर मुझे अपना प्रोग्राम मिल जाए तो मैं आपको कोड दे सकता हूं, यह एक तृतीय-पक्ष एपीआई ( JInput ) का उपयोग करता है ।

गुड लक या तो रास्ता।


23

Bome के MIDI अनुवादक का प्रयास करें ।

यह क्रॉस प्लेटफ़ॉर्म काम करता है, किसी भी MIDI इनपुट को कीस्टोक में आसानी से परिवर्तित कर सकता है, जल्दी से सेटअप और कॉन्फ़िगर कर सकता है, साथ ही यह व्यक्तिगत उपयोग के लिए मुफ़्त है।

एक ट्यूटोरियल है, क्विक टिप: मिडी ट्रांसलेशन - मिडी से कीस्ट्रोक्स , आसानी से इसे कैसे सेट किया जाए:

मूल रूप से, आप क्या कर सकते हैं की अनंत संभावनाएं हैं, जिसमें रिकॉर्डिंग और संशोधक कुंजी शामिल हैं। मैं अपने पियानो का उपयोग करके अपने DAW को नियंत्रित करने के लिए अपने लाइव ऑडियो रिग के लिए इसका उपयोग करता हूं और कभी भी कोई समस्या नहीं हुई है।


18

जावा में, आप MIDI संकेतों को परिवर्तित करने के लिए JMF (जावा मीडिया फ्रेमवर्क) का उपयोग कर सकते हैं। कीबोर्ड डिज़ाइन का मूल उपयोग करने में आसान है, अर्थात्, उपयोगकर्ता इंटरफ़ेस; और अक्सर इस्तेमाल किया charcter / प्रतीक काम करते हैं।

जावा साउंड रिसोर्स में सैंपल कोड और एपीआई : उदाहरण: डिजिटल सिग्नल प्रोसेसिंग (डीएसपी) सिग्नल को प्रोसेस करने के तरीके को समझने में मदद करता है।

कुछ और संदर्भ:


15

एक कार्यक्रम है, जिसे ग्लोवेपी कहा जाता है । आप इसे एक साधारण स्क्रिप्टिंग भाषा में प्रोग्राम कर सकते हैं, और मेरा मानना ​​है कि यह मिडी का समर्थन करता है। मुझे यकीन नहीं है कि यह "जावा" श्रेणी के अंतर्गत आता है, लेकिन फिर भी, यह एक शानदार कार्यक्रम है। मैंने इसका उपयोग PS3 नियंत्रक का उपयोग करके रोबोट को नियंत्रित करने के लिए किया है । यह बहुत शक्तिशाली है।


15

कंप्यूटर में MIDI सिग्नल भेजने के लिए कई कीबोर्ड में एक सीरियल पोर्ट ( RS-232 ) कनेक्टर होता है। मैं सीरियल पोर्ट संचार को कीबोर्ड स्ट्रोक में बदलने के लिए गर्डर नामक प्रोग्राम का उपयोग करता हूं ।

गर्डर में एक "मैपिंग" सुविधा है जो आपको प्रत्येक कुंजी को एक-एक करके, संबंधित कीस्ट्रोक पर मैप करने देती है।

यह आप के लिए देख रहे हैं सरल समाधान हो सकता है!


12

बस स्टेनोग्राफी सीखो!

यह आपकी ओर से सभी चर्चा से स्पष्ट है। आप तकनीकी दृष्टि से किसी भी पहिये का फिर से आविष्कार नहीं करना चाहते हैं। लेकिन एक बार जब आप एक कनेक्शन बना लेते हैं (यह सवाल क्या पूछ रहा है) और ऊपर और काम करते हैं, तो आपके पास अभी भी अधिकांश काम आपके आगे हैं: आपको अपने मस्तिष्क को प्रशिक्षित करना होगा। आपको यह करने के लिए सबसे चतुर, सबसे कुशल तरीका भी आविष्कार करना होगा - एक डिजाइन मुद्दा पूरी तरह से कंप्यूटर टेकीज़ के ताल से बाहर। आप या हम में से कोई भी कम पड़ जाएगा।

सौभाग्य से, इस समस्या का हल और सम्मान किया गया है, हालांकि परिपक्व होने की सदियों ...

स्टेनोग्राफी सीखें!

हां, यह आपको कुछ जैक वापस सेट कर देगा। लेकिन अंत में कम अनुकूल परिणाम के साथ आपके खुद के समय के सैकड़ों घंटे क्या हैं? इसके अलावा, स्टेनोग्राफी विकिपीडिया लेख कहता है, 'यह पियानो कीबोर्ड की तरह दिखता है।'

जब तक, निश्चित रूप से, आप एक बग़ल में प्रभाव पड़ना चाहते हैं। मुझे मानना ​​होगा, मैंने इस संभावना के बारे में कभी नहीं सोचा था, यह वास्तव में मनोरंजक होगा कि कोई किसी पियानो कीबोर्ड से किसी पाठ को काटता हुआ देखे!

आप टचपैड के साथ एक यूएसबी कीबोर्ड से शुरू कर सकते हैं (या एक पॉइंटिंग स्टिक अधिक एर्गोनोमिक होगी?), इसका अनुवाद करने के लिए प्लोवर का उपयोग करें (मुझे यकीन है कि इसे गैर-अक्षर कुंजियों को अपनी कार्यक्षमता बनाए रखने के लिए कॉन्फ़िगर किया जा सकता है क्योंकि वे महत्वपूर्ण हैं प्रोग्रामिंग), या, थ्रेड का पालन करें पुन: अपने खुद के यूएसबी स्टेनोग्राफी कीबोर्ड को रोल करने के लिए प्लोवर कीबोर्ड, या, एक स्टेनोटाइप खरीदें

सौभाग्य!


स्टेनोग्राफी कीबोर्ड पर {और} कहां हैं? आप ऐसे नाम कैसे लिखने जा रहे हैं जो शब्द नहीं हैं, जैसे pthread?
बोब्बोबो

विकिपीडिया लिंक गलत है और en.wikipedia.org/wiki/Stenography
joelhoro

11

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

मैंने फ्लाइट सिम्युलेटर कॉकपिट इनपुट, कस्टम कियोस्क और वोटिंग सिस्टम इस पद्धति में बनाए हैं ..... और कीमत सही है!


10

इसे हल करने के लिए आपको कुछ चीजों की आवश्यकता होगी:

  1. अपने कीबोर्ड से MIDI डेटा कैप्चर करने का एक तरीका। इंटरफ़ेस पर निर्भर करता है: MIDI इंटरफ़ेस (क्लासिक) या USB MIDI इंटरफ़ेस (आधुनिक) सबसे अधिक संभावना इंटरफ़ेस एक कंप्यूटर के लिए है क्योंकि यह सबसे अधिक विकल्प प्रदान करता है। USB होस्ट माइक्रोकंट्रोलर केवल एक कंप्यूटर का उपयोग करने के रूप में सरल नहीं हैं।

  2. MIDI डेटा को कीस्ट्रोक्स में बदलने की योजना। जैसे एक उपयोगकर्ता ने बताया, कॉर्ड्स जाने का तरीका है क्योंकि कुंजी की संख्या पियानो कुंजी की संख्या पर निर्भर नहीं होगी।

  3. ऑपरेटिंग सिस्टम में एक कुंजी को इंजेक्ट करने का एक तरीका। इसके लिए निम्न स्तर के ड्राइवर की सटीक आवश्यकता होगी। मैंने उन अनुप्रयोगों के साथ खेला है जो विंडोज 7 में कीबोर्ड और माउस डेटा को अनुप्रयोगों में इंजेक्ट करते हैं, और यह परतदार हो सकता है और इस बात पर निर्भर करता है कि कोई एप्लिकेशन वर्तमान में फोकस में है या नहीं। यह इंटरफ़ेस का सबसे कठिन हिस्सा है। एचआईडी यूएसबी कीबोर्ड माइक्रोकंट्रोलर बनाने के लिए क्या काम हो सकता है जिसमें एक सीरियल इंटरफ़ेस भी है।

सीरियल इंटरफ़ेस एक वर्चुअल सीरियल पोर्ट बनाएगा। सॉफ्टवेयर जो MIDI डेटा पढ़ता है और कीस्ट्रोक्स का उत्पादन करता है, वह वर्चुअल सीरियल पोर्ट पर एक सीरियल संदेश भेज सकता है। माइक्रोकंट्रोलर एक कीस्ट्रोक भेजेगा ताकि यह एक मानक कीबोर्ड इनपुट की तरह दिखे। यह MIDI पोर्ट और USB MIDI कीबोर्ड दोनों को इंटरसेप्ट करने की अनुमति देगा।

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

ऊपर एक और टेक एक Arduino का उपयोग करने के लिए ऊपर पोस्ट किए गए कुछ की तरह है, लेकिन USB आधारित संगीत कीबोर्ड को संभालने के लिए Sparkfun से USB होस्ट शील्ड भी शामिल है । यह Arduino को बूट लोडर चिप में कीबोर्ड या कीबोर्ड माउस कॉम्बो के रूप में प्रोग्राम करने की अनुमति देता है और डिवाइस को USB आधारित संगीत कीबोर्ड के लिए USB होस्ट कार्य करने की अनुमति देता है । फिर आप दोनों प्रकारों के लिए कवर होते हैं। हालांकि, मुझे अभी भी लगता है कि वर्चुअल सीरियल पोर्ट विधि अधिक लचीली है और लंबे समय में प्रोग्राम करना आसान होगा। Arduino डिवाइस डेस्कटॉप प्रोग्राम या सेवा की तुलना में बदलना कठिन होगा।

एक और संभावना है: कॉर्डेड एक सौंप दिया गया कीबोर्ड पहले से मौजूद है। मैंने उन पर वीडियो देखे हैं, लेकिन आपको यह निर्धारित करना होगा कि क्या आपके हाथों को चोट लगी है या नहीं।


7

MIDI डिवाइस में हुक करने के लिए .NET DirectSound इंटरफ़ेस जैसी किसी चीज़ का उपयोग करना काफी आसान होना चाहिए। आपको अपने लक्ष्य मिडी डिवाइस की पहचान करने की आवश्यकता होगी और फिर आने वाले संदेशों पर सुनने के लिए कोड प्राप्त होगा (Google के माध्यम से ऐसा करने के बारे में लेख हैं)।

चूंकि आप मिडी का उपयोग एक कीबोर्ड के रूप में कर रहे हैं, मूल रूप से केवल दो मिडी संदेश हैं जिनका आपको पता लगाने की आवश्यकता है, अर्थात् नोट करें और नोट करें। मिडी संदेश तीन डेटा बाइट्स है जो कमांड, नोट और वेलोसिटी को निर्दिष्ट करता है। नोट बंद सिर्फ नोट नंबर है (कभी-कभी 'खराब' मिडी स्टैक शून्य वेग के साथ एक नोट भेजते हैं, जिसकी आपको उम्मीद भी है)।

एक बार जब आपके पास संदेशों का अनुवाद हो जाता है तो कीबोर्ड आउटपुट .NET से काफी सरल होना चाहिए।

तकनीकी के बारे में अन्य उत्तरों में बहुत सारी सलाह है; मैं आपको वास्तविक मिडी संदेशों का एक विचार देना चाहता था। सौभाग्य!


एक पक्ष के रूप में दस्तावेज़ 'मिडी डिवाइसेस के लिए यूनिवर्सल सीरियल बस डिवाइस क्लास डेफिनिशन' मिडी संदेशों का एक बहुत ही संक्षिप्त अवलोकन देता है: usb.org/developers/devclass_docs/midi10.pdf
साइमन इन

7

आप अपने साउंड कार्ड के माध्यम से नियंत्रक के रूप में किसी भी बाहरी मिडी कीबोर्ड को चलाकर बेहतर और खुशहाल परिणाम प्राप्त करेंगे (चाहे आप जो भी ऑपरेटिंग सिस्टम और / या DAW प्रोग्राम का उपयोग करना चाहते हैं)। फिर उस मार्ग को अपने GB सॉफ़्टवेयर में (या जो कुछ भी) और टोन उत्पन्न करते हैं, वे कई ध्वनियाँ उत्पन्न करते हैं जो आपको वास्तविक समय में उस तरह से आपूर्ति करती हैं।

यदि आपका साउंड कार्ड MIDI I / O's (ins / outs / Thrus) का समर्थन नहीं करता है, तो यह कोई समस्या नहीं है। आप बाहरी मिडी टेबल टॉप कन्वर्टर में शोध और निवेश पर विचार कर सकते हैं। कई मिडी को बाहरी रूप से यूएसबी 2.0 में परिवर्तित करने के लिए सुसज्जित हैं (एक मौजूदा साउंड कार्ड को पूरी तरह से पास करके)।

उदाहरण के लिए: यह एक कंप्यूटर कीबोर्ड और पेंसिल टूल का उपयोग करके Z और X परिवर्तन कुंजी विकल्प के माध्यम से "मानव जैसा" ग्रेस नोट परिणाम प्राप्त करना बहुत कठिन है। जब, इसके बजाय, आपकी अपनी उंगलियां बस खेल सकती हैं कि मिडी कीबोर्ड के साथ अपने स्वयं के भौतिक ऑक्टेव रजिस्टर रेंज से - तुरंत!

मुझे लगता है कि बजटीय बाधाएं शामिल हो सकती हैं। लेकिन, इनमें से कुछ सस्ते "कैसियो" प्रकार के 5 ऑक्टेव कीबोर्ड $ Shack US डॉलर (* या उससे कम) के लिए रेडियो झोंपड़ी में बेचे जाते हैं, आप सभी की आवश्यकता होगी (प्लस, उनके कुछ ऑन-बोर्ड साउंड पैच और सीक्वेंसर मॉड्यूल साउंड और हैंडल आश्चर्यजनक अन्य चीजों के लिए भी अच्छी तरह से)।

रेडियोशेक मिडी कीबोर्ड विकल्प

मौजूदा साउंड कार्ड के लिए बाहरी MIDI कन्वर्टर्स के लिए, मैंने आपके लिए कुछ Google खोजों को मैक प्लेटफॉर्म के साथ विशेष रूप से ध्यान में रखते हुए चलाया है:

इस बाहरी मिडी रूपांतरण जानकारी का एक बहुत पहले आप के लिए बोझिल हो सकता है, इसलिए मैंने आपके विचारों और बजट के लिए "उपयोगकर्ता के अनुकूल" के रूप में चीजों को और अधिक तोड़ दिया है:

DAW का उपयोग करते समय VST के रूप में वर्चुअल कीबोर्ड की सुविधा के साथ कुछ भी गलत नहीं है । उनका स्थान है।

लेकिन, आप एक निपुण कीबोर्डिस्ट की तरह लग रहे हैं। तो, क्यों बाहरी मिडी रूपांतरण / कीबोर्ड विकल्पों पर विचार नहीं किया गया है जो मैंने अभी अपने लिए उल्लेख किया है?

सौभाग्य और मुझे उम्मीद है कि इससे आपको कुछ विचार मिलेंगे जो आपके लिए काम करेंगे और करेंगे!


6

यदि आप स्वयं कोई प्रोग्रामिंग नहीं करना चाहते हैं, लेकिन केवल समस्या का समाधान चाहते हैं, तो आप केवल एक USB-MIDI- कीबोर्ड खरीद सकते हैं, जहाँ आप MIDI- आउटपुट के बजाय QWERTY कीबोर्ड आउटपुट सिग्नल भेजने के लिए किसी भी कुंजी को पुनः असाइन कर सकते हैं, उदाहरण एम-ऑडियो Axiom प्रो

यह विधि किसी भी ओएस और किसी भी कंप्यूटर के साथ काम करेगी जो मानक यूएसबी-कीबोर्ड का समर्थन करता है क्योंकि मिडी-कीबोर्ड खुद को मानक QWERTY कीबोर्ड के रूप में पहचान देगा।


क्या आप जानते हैं कि क्या विशिष्ट कीस्ट्रोक्स के साथ-साथ जीवा को सौंपना संभव होगा? उदाहरण के लिए, अगर मैं C MAJOR कॉर्ड खेलता हूं, तो क्या मुझे "लोमड़ी कूद गया" का अनुवाद किया जा सकता है
l --''''''--------- '' '' '' '' ''

इतनी तेजी से जवाब न देने के लिए क्षमा करें, मुझे 4 दिनों के लिए छुट्टी मिली है;) नहीं, दुर्भाग्य से आप प्रति कुंजी केवल एक QWERTY- कोड असाइन कर सकते हैं, इसलिए यह मानक कीबोर्ड के रूप में बहुत काम करता है।
मार्टिन ओधलीस

Btw, यदि आप एक खरीदते हैं, तो बस PRO-one खरीदना याद रखें, क्योंकि मुझे नहीं लगता कि गैर-PRO- संस्करण में QWERTY-असाइनमेंट कार्यक्षमता है।
मार्टिन ओडेलियस

मुझे नहीं लगता कि एएससीआईआई-कोड्स को कॉर्ड्स आवंटित करना संभव है, प्रति कोड सिर्फ एक कुंजी, लेकिन मैं आज रात जब मैं घर से काम पर जाऊंगा, तब मैं इसे अपने स्वयं के एक्सोम पर देखूंगा।
मार्टिन ओढालियस

मैंने सिर्फ यह देखा कि कीबोर्ड पर वास्तविक पियानो कुंजियों को नहीं, केवल कंट्रोल बटन (फंक्शन कीज़, ड्रम पैड, न्यूमेरिक कीज़ आदि) को ही क्यूवर्टी कोड असाइन करना संभव है। मैं खुद इस कीबोर्ड का मालिक हूं और यकीन है कि यह किसी भी कुंजी के लिए एएससीआई कोड असाइन करना संभव था, लेकिन अब जब मैंने इसे आज़माया तो मैंने नोटिस किया कि यह गलत था! मुझे इसके लिए बहुत खेद है, क्या किसी तरह से इनाम वापस करना संभव है?
मार्टिन ओढालियस

6

आप दोनों MIDI घटनाओं को पढ़ने के लिए एक साधारण AutoIt स्क्रिप्ट का उपयोग कर सकते हैं , MIDI इनपुट देखें ।

आपको मिडी यूडीएफ की भी आवश्यकता होगी और प्रमुख प्रेस का अनुकरण करना होगा

मिडी घटनाओं को पढ़ना आसान होना चाहिए, लेकिन विभिन्न मिडी नियंत्रकों (उपकरणों) में अलग-अलग विशेषताएं हैं। यह पता लगाने की कोशिश करें कि आपका मिडी पियानो पहले क्या कर सकता है, फिर देखें कि आप उन विशेषताओं को कैसे नक़ली QWERTY -keyboard प्रेस में मैप कर सकते हैं ।

यदि आप चाहते हैं, तो आप यह देखने के लिए स्क्रीन पर या ट्रे में कुछ कर सकते हैं कि आप क्या कर रहे हैं (यह है, के लिए Shift, Ctrlऔर Altसिमुलेशन)।


5

आप कॉर्डेड कीबोर्ड पर एक नज़र डाल सकते हैं । उनके पास यह लाभ है कि आपको उनका उपयोग करने से पहले उनके लिए ड्राइवर लिखने की आवश्यकता नहीं है, और कुछ एक पियानो कीबोर्ड के लेआउट के समान हैं।


5

यदि आप जावा में कोडिंग जानते हैं, तो आप इस तरह से उपयोग कर सकते हैं:

सबसे पहले, javax.sound.midi.Receiverएक send(..)विधि के साथ लागू करें जो कि 'नोट ऑन' ईवेंट्स को कीस्ट्रोक्स पर मैप करना है जैसे आप चाहते हैं।

आपको अपने getMessageतरीके के साथ मिडीमैसेज की सामग्री प्राप्त करने और इसे अपने फैशन में बदलने की आवश्यकता होगी । संदेश बाइट्स का अर्थ मिडी संदेश में पाया जा सकता है ।

एक निश्चित कीबोर्ड कुंजी के लिए 'नोट पर' या 'नोट ऑफ' प्राप्त करने के बाद, आप उस कुंजी को मैप कर सकते हैं जिसे आप KeyEvent वर्ग का एक निरंतर असाइन करके पसंद करते हैं, C # 4 -> KeyEvent.VK_A और ऐसा ही कुछ। । इस कुंजी कोड का उपयोग java.awt.Robotवास्तव में कीस्ट्रोके को ओएस और इस प्रकार अन्य अनुप्रयोगों को भेजने के लिए कीप्रेस और कीलरेज विधियों द्वारा किया जा सकता है ।


4

मैं ब्रायन ओ'डेल के जवाब से सहमत हूं - अगर यह मेरी परियोजना थी, तो मैं इसे हार्डवेयर में करूंगा। इसमें प्लेटफ़ॉर्म और हार्डवेयर स्वतंत्र होने का लाभ है - आपका बॉक्स मिडी-यूएसबी इंटरफ़ेस और पीसी एपीआई की आवश्यकता को प्रतिस्थापित करता है।

mbed एक फास्ट-प्रोटोटाइपिंग प्लेटफ़ॉर्म है जिसे सीखना बहुत आसान है, और Arduino IMHO (ऑनलाइन कंपाइलर, 512 केबी फ्लैश, 96 मेगाहर्ट्ज, सी ++ भाषा) पर कई फायदे हैं। इसमें आपके लिए एक USB कीबोर्ड इंटरफेस और एक USB मिडी इंटरफ़ेस पूर्व-लिखित है।

समुदाय बहुत ही अनुकूल है और मदद करने के लिए तैयार है, और मिडी और यूएसबी दोनों के अनुकरण का उपयोग करते हुए कई मौजूदा परियोजनाएं हैं - "मिडी मिडी" या समान के लिए यूट्यूब खोजें।


4

यदि आप लिनक्स का उपयोग करते हैं, तो फुटवेयर पर ले जाएं ।

यह वही होना चाहिए जो आप ढूंढ रहे हैं - यदि आप मिडी पिचों को अपनी पसंद की कीमैपिंग में समायोजित करते हैं ...

मैंने कभी नहीं सोचा कि यह किसी के लिए भी उपयोगी हो सकता है, लेकिन ओ)


2
एक व्यवस्थापक के रूप में मेरी पिछली नौकरी में मेरे डेस्क के नीचे एक फुट-नियंत्रक था - घर की पंक्ति को कम से कम करने के लिए
FlashKorten


1

यह बहुत कठिन नहीं होगा।

मैं मान रहा हूं कि आप विंडोज पर हैं , हालांकि इस बारे में निश्चित नहीं है। मैंने एक मिडी सीक्वेंसर, http://pianocheetah.com , सादे पुराने C ++ में लिखा है , और यह आपको कमांड चलाने के लिए पियानो कीबोर्ड का उपयोग करने देता है। ऐसा कोई कारण नहीं है कि आप कीबोर्ड इनपुट स्ट्रीम में चाबियाँ पुश करने के लिए एक ही काम नहीं कर सकते।

लेकिन अभी आते हैं। आपको याद है कि पहली बार कीबोर्ड को सीखने में आपको कितना समय लगा, है ना? क्या आप फिर से उस पर से गुजरने को तैयार हैं? और क्या आप अपने धन्य कीबोर्ड को अपने चारों ओर बेवकूफ दिखने वाले प्रमुख प्रतीकों के साथ प्रदूषित करने के लिए तैयार हैं?

आपको कम से कम 26 अल्फा, 10 संख्यात्मक, 11 विराम चिह्न और कम से कम 12 फ़ंक्शन कुंजियों और उनके स्थानांतरित किए गए राज्यों का उपयोग करने की आवश्यकता होगी। तो यह है कि 60 कुंजी प्लस शिफ्ट राज्यों। यह कुंजियों की एक पूरी 5 ऑक्टेव्स को जला देगा। आप पियानो "हॉप्स" = सभी समय कर रहे होंगे। टाइपिंग को छूने के लिए अलविदा कहें।

आप अपने आप को आरएसआई से बचा सकते हैं , लेकिन आपने अपने लिए एक और अलग प्रकार का दुःस्वप्न बनाया है।

और शुभकामनाएँ आपके बॉस को काम पर मिडी कीबोर्ड खरीदने के लिए।

यदि आपने वास्तव में पियानो बजाना सीखा है, तो आपने सीखा है कि तनाव मुक्त कैसे खेलें। QWERTY कीबोर्ड पर ऐसा करें । चिन्ता की बात नहीं है। धीमी शुरुआत करें।


इस तरह के शब्दों के लिए धन्यवाद, लेकिन मैंने अपने बट को इस चीज़ पर काम किया है और इसे खुला स्रोत बनाने की योजना नहीं है - क्षमा करें। लेकिन फिर क्या करना होगा midiInOpen () का उपयोग करें; मिडी इनपुट को संसाधित करने के लिए कॉलबैक के साथ प्रदान करें; विख्यात घटनाओं को छोड़कर सब कुछ अनदेखा करें, मिडी नोट को कुछ कीबोर्ड कुंजी में मैप करें और कीबोर्ड इनपुट स्ट्रीम में डालें (मैं इसके लिए एपीआई भूल जाता हूं, लेकिन मुझे यकीन है कि एक है, कम से कम)।
स्टीफन हेज़ल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.