2013-07-20 20 views
5

Ben .. yüzden burada denemek için gidiyorum hiçbiri bulunamadı sahip kullanmaktan ama hakkında sorular göndermek için bir yer arayan midi.js denedimBir davul sesi oluşturmak için javascript tarayıcı tabanlı midi.js'yi kullanın.

http://mudcu.be/midi-js/ kullanmaya çalışıyorlar kütüphanede kapalı 1

harika çalışıyor.

Tetiklemek için sadece bir davul sesi almaya çalışıyorum ama çalışmıyor. "Acoustic_grand_piano" ifadesinden tetiklemek için diğer notları alabilirim ancak "synth_drum" dan değil.

Midi note 35'in "Akustik Bas Davul" ile ilgili olması gerektiğini düşünüyorum. "Synth_drum" çalmadan önce demo-Basic.html

window.onload = function() { 
    MIDI.loadPlugin({ 
     soundfontUrl: "./soundfont/", 
     instrument: "synth_drum", 
     callback: function() { 
      var delay = 0; // play one note every quarter second 
      var note = 35; // the MIDI note 
      var velocity = 127; // how hard the note hits 
      // play the note 
      MIDI.setVolume(0, 127); 
      MIDI.noteOn(0, note, velocity, delay); 
      MIDI.noteOff(0, note, delay + 0.75); 
     } 
    }); 
}; 
+2

Kanal 10'a mı gönderiliyor? Çoğu MIDI GM synths, drum track'in 10. kanalda olmasını bekliyor. –

+0

Maalesef midi.js kütüphanesi bu kanalları kullanmıyor. –

+0

@DonavonLerman Bu problem için henüz bir çözüm buldunuz mu? – Amruta

cevap

3

gelen numuneyi kullanarak

bir kanala o enstrümanı yüklemek gerekir geliyor. Bu programChange işleviyle yapılır. Doğru yöntem aşağıdaki gibidir.

MIDI.loadPlugin({ 
    soundfontUrl: "/apps/spaceharp/static/soundfont/", 
    instrument: "synth_drum", 
    callback: function() { 
     var delay = 0; // play one note every quarter second 
     var note = 35; // the MIDI note 
     var velocity = 127; // how hard the note hits 
     // play the note 
     MIDI.programChange(0, 118); // Load "synth_drum" (118) into channel 0 
     MIDI.setVolume(0, 127); 
     MIDI.noteOn(0, note, velocity, delay); // Play note on channel 0 
     MIDI.noteOff(0, note, delay + 0.75); // Stop note on channel 0 
    } 
}); 

MIDI standardized specification (ya da genel MIDI), her enstrüman için belirli adı ve numarası atar. MIDI spesifikasyonunda "Synth Drum" ı ararken 118 no'lu cihaz numarası ve bu sayede kanalın 0'a yüklenmesi gerekir.

in the MIDI.js source cihaz eşlemelerinin bir listesini bulabilirsiniz. Ayrıca, MIDI.GeneralMIDI numaralı cihazda, cihaz bilgileri byName, byId ve byCategory öğelerini getirecek kullanışlı işlevler de vardır.

+0

Synth drum, belirtilen orijinal sorunun (35 = akustik bas davul vb.) Eşleştirilmesi için nota sahip bir bateri kiti değildir. –

İlgili konular