स्पष्टीकरण के लिए: मैं MIDI फ़ाइल उत्पन्न नहीं करना चाहता हूं और न ही मैं MIDI फ़ाइल खेलना चाहता हूं, मैं फ्लाई पर MIDI नोट्स खेलना चाहता हूं।मैं जावास्क्रिप्ट के साथ मनमानी MIDI नोट्स कैसे खेलूं?
मैंने MID12 लाइब्रेरी के रूप में https://github.com/mudcube/MIDI.js का उपयोग करने का प्रयास किया, और यह कुछ हद तक काम करता है।
मैं MIDI.noteOn(0,midiNumber,100);
पर कॉल करके नोट्स चलाने में सक्षम हूं। हालांकि, यह कुछ सेकंड के लिए एक नोट बजाता है और तब मैं कागजात बंद करता हूं भले ही मैं MIDI.noteOff
पर कॉल न करूं।
मुझे विश्वास नहीं है कि एमआईडीआई कैसे काम करने का इरादा रखता है। मैं नोट पर कॉल करने में सक्षम होना चाहता हूं और जब तक नोट को कॉल नहीं किया जाता है तब तक एक नोट प्ले और बनाए रखें।
लक्षित ब्राउज़र: आधुनिक फ़ायरफ़ॉक्स/क्रोम।
var playChannel = function (id) {
var note = notes[id];
if (!note) return;
var nid = (channel_nid + 1) % channels.length;
var time = (new Date()).getTime();
var audio = channels[nid];
channel_map[note.id] = audio;
audio.src = MIDI.Soundfont[note.id];
audio.volume = volume;
audio.play();
channel_nid = nid;
};
आप playChannel
देख सकते हैं किसी दिए गए नोट लोड और यह खेलेंगे:
वाह। एक बग देखा अच्छा लगा। +1, हालांकि आप पुल अनुरोध नहीं करना चाहते हैं? –
@ एच 2CO3: मैं वर्तमान में अपने पीसी पर नहीं हूं और मुझे अभी भी जिथब इंटरफ़ेस (मैं बिटबकेट पसंद नहीं करता) में उपयोग नहीं किया जाता है। हालांकि, मुझे विश्वास है कि कुछ एप्लिकेशन इस बग का उपयोग करते हैं और काम करना बंद कर देंगे, क्योंकि उन्होंने 'नोटऑफ' का उपयोग नहीं किया है (सभी के बाद संभव हो सकता है)। शायद ~ 11h (21:00 यूटीसी + 1) में। – Zeta
आह, कोड पढ़ने के दौरान मैंने यह बग देखा लेकिन यह सुनिश्चित नहीं था कि फिक्स क्या था। कुछ कार्यान्वयन के रूप में देखकर नोटऑफ में कोई भी कोड नहीं है() यह बग वास्तव में एक इच्छित डिज़ाइन दोष हो सकता है। मैं विरासत उद्देश्यों के लिए कोड संशोधित करने के खिलाफ अपने योग्यता से सहमत हूं। आपको इसके बजाय कांटा अनुरोध करना चाहिए। अभी के लिए मैं सिर्फ बंदर पैच करूँगा और देखें कि यह काम करता है या नहीं। –