2010-07-01 19 views
5

मुझे विंडोज प्रोग्रामिंग, मिडी और डब्लूडीएम पर कुछ सलाह चाहिए। मैं एक छोटा सा एप्लीकेशन लिखने की कोशिश कर रहा हूं जो sys ट्रे में बैठेगा और सिस्टम को मिडी इन/आउट डिवाइस के रूप में विज्ञापित किया जाएगा ताकि MIDI प्रोग्राम इसे भेज सकें और यह संदेशों को एक अलग प्रारूप में परिवर्तित कर देगा। मैं कैंट की डब्लूडीएम पुस्तक पढ़ रहा हूं और डिवाइस ड्राइवरों को लिखने के बारे में जानकारी के लिए चिल्ला रहा हूं, लेकिन मुझे नहीं पता कि मैं सही रास्ते पर जा रहा हूं या नहीं। मैं अभी तक नहीं दिख रहा है कि कैसे करने के लिए: -?MIDI डिवाइस को सिम्युलेट करना - विंडोज

एक) के रूप में मिडी सक्षम (मैं एक रेफरी इसे करने के लिए registery में छड़ी और ओएस प्रत्यक्ष मिडी एक dll में कार्यक्षमता के लिए कॉल करते हैं कि मेरे ड्राइवर रजिस्टर)

बी) मेरे ड्राइवर के माध्यम से मेरे ड्राइवर के माध्यम से प्रत्यक्ष MIDI डेटा, जो शायद ड्राइवर होने के लिए बहुत बड़ा होने जा रहा है।

कहां से शुरू करना है इस पर कोई सलाह बहुत सराहना की जाएगी। धन्यवाद, पीट

उत्तर

1

डिवाइस डिवाइस ड्राइवरों द्वारा डिवाइस (या अनुरूपित) की गणना की जाती है, न कि अनुप्रयोगों। Sys ट्रे में आप जो देखते हैं वह एक एप्लिकेशन आइकन है। इसलिए, आपको ड्राइवर और ऐप दोनों रखने की आवश्यकता होगी - आपके पास एक बिट संकलित कोड दोनों के रूप में कार्य नहीं कर सकता है।

चालक पक्ष पर, शायद आप the MSDN docs पर एक चोटी देखना चाहते हैं। यह योपुर प्रश्न के भाग (ए) का जवाब देगा।

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

+0

उत्तर के लिए धन्यवाद। मैं अधिकतर ड्राइवरों की पुस्तक पढ़ रहा हूं और आज दोपहर नमूने चला रहा हूं और मैं इसके माध्यम से एक रास्ता देखना शुरू कर रहा हूं। एक बात? डिवाइस ऐप से जानकारी खींचने के लिए मेरे ऐप को लगातार पढ़ने के लिए अक्षम लगता है। जागने और डेटा खींचने के लिए आईपीसी के कुछ रूपों के माध्यम से ड्राइवर के साथ अपने ऐप को पंजीकृत करने का कोई आसान तरीका नहीं है? चीजें अधिक स्पष्ट हो रही हैं ... धीरे-धीरे। चीयर्स, पीट – user380998

+0

बस अपने ड्राइवर में एक चक्रीय बफर का उपयोग करें। MIDI काफी वास्तविक समय है; यदि कोई उपभोग करने वाला कोई एप्लिकेशन नहीं है, तो ड्राइवर पुराने डेटा को सुरक्षित रूप से ओवरराइट कर सकता है। – MSalters

0

ढूंढने में बड़ी समस्याएं हैं यदि आप शुरू करने के लिए थोड़ा आसान तरीका ढूंढ रहे हैं, तो वहां एक MIDI लूपबैक ड्राइवर वहां से बाहर निकलता है, और जो लोग इसे बनाते हैं (या ऑफ़र करने के लिए उपयोग किए जाते हैं) इसके संस्करण को आपके प्रोग्राम को सीधे ड्राइवर के साथ संवाद करने की अनुमति देता है। यह आपको वह व्यवहार देता है जिसे आप ढूंढ रहे हैं, जहां एक प्रोग्राम MIDI डिवाइस के रूप में दिखाई देता है। लूपबैक ड्राइवर http://nerds.de/en/loopbe1.html पर है। मुझे अब डेवलपर पेज नहीं दिखाई देता है, लेकिन यदि आप उनसे संपर्क करते हैं, तो आप उस ड्राइवर को लाइसेंस खरीद सकते हैं जिसे आप लूपबैक के बिना सीधे एक्सेस कर सकते हैं।

+0

दुर्भाग्यवश, ये भारी लाइसेंस-रहित हैं और इन्हें अपने स्वयं के कार्यान्वयन के लिए सीखने या यहां तक ​​कि विस्तारित करने के लिए उपयोग नहीं किया जा सकता है। –

+0

@ माइक'पोमैक्स 'कमरमैन बेशक ... यह काम करने वाले किसी और की लागत है। किसी भी मामले में, ई-मेल टोबीस एरिचसेन। https://www.tobias-erichsen.de/software/loopmidi.html विभिन्न ड्राइवरों में जो भी आप चाहें बंदरगाहों को स्थापित करने के लिए उनके ड्राइवर के पास एक अच्छा एपीआई है। – Brad

+0

मुझे पता है कि यह पहले से ही किया गया है, लेकिन यह भी दिया गया है कि उसका चालक एकमात्र ऐसा है, जो एक ओपन सोर्स डेवलपर के रूप में है, जो "मेरे अपने ऑडियो काम के लिए बहुत अच्छा है, लेकिन ओपन सोर्स प्रोग्रामिंग के लिए पर्याप्त नहीं है" = –

6

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

एमएसडीएन में आपके द्वारा कार्यान्वित करने के लिए आवश्यक कार्यों के बारे में कुछ जानकारी है - Audio Device Messages for MIDI - दुर्भाग्य से यह कुछ हद तक कम है।

एनटी 4 डीडीके के हिस्से के रूप में इस तरह के ड्राइवर के लिए नमूना कोड होता था, लेकिन दुर्भाग्य से डीडीके/डब्लूडीके की हालिया रिलीज में इसे और शामिल नहीं किया गया था।

कुछ बेहतर (हालांकि पुराने) दस्तावेज और नमूना कोड अभी भी कुछ खोज के बाद पाया जा सकता है: