2010-08-02 7 views
12

से लाइव MIDI जेनरेट करें मैंने कुछ शोध किया और ऐसा लगता है कि जावास्क्रिप्ट और मिडी इन दिनों एक साथ अच्छी तरह से नहीं चल रहे हैं। कम से कम Google कहते हैं।जावास्क्रिप्ट

जैसा कि इस विषय में कहा गया है: generating MIDI in javascript, जावास्क्रिप्ट या सर्वर-साइड में फ़ाइल बनाना संभव है, और इसे चलाने के लिए एक सामान्य फ़ाइल खेलना संभव है।

लेकिन, मैं वास्तव में व्यक्तिगत मिडी घटनाओं को "लाइव" भेजने में सक्षम होना चाहता हूं, क्योंकि यह निरंतर उपयोगकर्ता इंटरैक्शन होगा। मुझे लगता है कि मेरी योजना बी जावा ऐपलेट बनाना होगा जो ऐसा करता है, लेकिन फिर मेरा ऐप अब एचटीएमएल 5 नहीं होगा।

मैंने यह भी सुना है कि HTML5 का ऑडियो समर्थन अभी प्रसिद्ध नहीं है, इसलिए मैंने यह भी सोचा कि अगर कोई समाधान उपलब्ध नहीं है, तो संभावित भविष्य के परिणाम क्या हैं?

धन्यवाद।

उत्तर

3

this blog post by John Resig का संगीत एम्बेडिंग भाग देखें। (किसी कारण से, मारियो गेम जो रेज़िग लिंक फ़ायरफ़ॉक्स में मेरे लिए ध्वनि बजाता है लेकिन क्रोम या सफारी नहीं; यह जांचने लायक होगा क्यों)।

विचार यह है कि आप HTML फ़ाइल के भीतर अपने डेटा के बेस 64 एन्कोडेड संस्करण को एम्बेड करने के लिए data URI का उपयोग करते हैं। तो आप MIDI format में MIDI format में डेटा उत्पन्न करने के लिए जावास्क्रिप्ट लिख सकते हैं, और उसके बाद इसे HTML5 <audio> तत्व

+0

यही वह है जो मैं पहले से ही पूरे अनुक्रम उत्पन्न करने के लिए कर रहा हूं, और मुझे लगता है कि मुझे एकल नोट्स खेलने के लिए चिपकना होगा। समस्या यह है कि विलंबता थोड़ी ध्यान देने योग्य है, भले ही यह इतना बड़ा न हो। लेकिन मुझे लगता है कि जावा एप्लेट का उपयोग करने से कम, यह अभी सबसे अच्छा समाधान है। – Manux

+0

क्या आप अपने कोड का लिंक पोस्ट कर सकते हैं? पृष्ठभूमि में टोन उत्पन्न करने और उन्हें भरने के लिए कई ऑडियो तत्व बनाकर विलंबता को कम करना संभव हो सकता है। –

0

यदि एचटीएमएल 5 एक विकल्प है, तो आप websockets का उपयोग करके ओएससी घटनाएं उत्पन्न करने और सर्वर प्रॉक्सी का उपयोग करके मिडी सिग्नल में कनवर्ट करने का प्रयास कर सकते हैं।

मुझे क्या पता नहीं है कि जावास्क्रिप्ट में टाइमर सटीक समय उत्पन्न करने के लिए पर्याप्त स्थिर हैं।

+0

प्रतीक्षा करें, तो मुझे क्लाइंट को संगीत स्ट्रीम करना होगा? उस दर पर मैं नहीं देखता कि मैं ओएससी का उपयोग क्यों करूंगा। या, जब मुझे क्लाइंट की मशीन पर मिडी सिग्नल मिल जाए, तो मैं उन्हें कहां भेजूं: ^? – Manux

+0

ओएससी घटनाएं लाइव संगीत नहीं हैं जो उपयोग के लिए स्ट्रीम की जाती हैं, लेकिन नियंत्रण संकेत जो udp या tcp के माध्यम से पहुंचे जाते हैं। डेस्कटॉप पर आप एक छोटी प्रॉक्सी चला सकते हैं जो ओएससी घटनाओं को मिडी सिग्नल में अनुवादित करता है जो मिडी-डिवाइस पर भेजे जाते हैं जिन्हें आप –

+0

पर नियंत्रित करना चाहते हैं तो मुझे क्लाइंट की मशीन पर उस प्रॉक्सी को इंस्टॉल करना होगा? मुझे लगता है कि मैं जावास्क्रिप्ट में ऐसा नहीं कर सकता। – Manux

1

मेरा मानना ​​है कि इस समय आपका सबसे अच्छा विकल्प आपके एचटीएमएल एप्लिकेशन से एक्सएचआर या वेबसाइकिलों के माध्यम से अपने सर्वर पर चल रहे बैकएंड सिस्टम में संवाद करना है जो मिडी घटनाओं में वास्तविक अनुवाद कर सकता है। आप पाएंगे कि कई धूमकेतु सर्वर जो पहले से उपलब्ध हैं, आपके जीवन के इस हिस्से को आसान बना सकते हैं, हालांकि कई मिडी अनुप्रयोगों को अपेक्षाकृत कम विलंबता की आवश्यकता होती है, और आप धूमकेतु तकनीक को 100ms से नीचे कम करने के लिए संघर्ष करेंगे।

+0

पर चलता है यह वास्तव में मदद नहीं करता है, मुझे अभी भी क्लाइंट के ओएस में MIDI ईवेंट भेजने का तरीका ढूंढना है । – Manux

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^