2013-07-20 17 views
5

Tôi đã cố gắng sử dụng midi.js http://mudcu.be/midi-js/Sử dụng midi.js dựa trên trình duyệt javascript để tạo âm thanh trống?

Tôi đã cố gắng tìm kiếm một nơi để gửi câu hỏi về việc sử dụng nó, nhưng sau khi tìm thấy không có vì vậy tôi sẽ cố gắng ở đây ..

1st tắt thư viện hoạt động tốt.

Tôi đang cố gắng để có được một âm thanh trống chỉ để kích hoạt nhưng nó không hoạt động. Tôi có thể nhận được các ghi chú khác để kích hoạt từ "acoustic_grand_piano" nhưng không chỉ từ "synth_drum".

Tôi nghĩ rằng chú thích giữa 35 nên liên quan đến "Drum Bass Drum".

Sử dụng mẫu từ bản 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

Gửi tới kênh 10? Hầu hết các bộ tổng hợp MIDI GM đều mong đợi bản nhạc trống trên kênh 10. –

+0

Thật không may là tôi không nghĩ rằng thư viện midi.js sử dụng các kênh theo cách đó. –

+0

@DonavonLerman Bạn đã tìm thấy giải pháp nào cho vấn đề này chưa? – Amruta

Trả lời

3

Trước khi chơi "synth_drum" âm thanh bạn phải tải công cụ đó vào một kênh. Điều này được thực hiện với chức năng programChange. Phương pháp đúng là như sau.

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 (hoặc MIDI chung) gán tên và số cụ thể cho từng công cụ. Tìm kiếm "Synth Drum" trong đặc tả MIDI cung cấp số thiết bị là 118 và do đó cần tải 118 vào kênh 0.

Bạn có thể tìm danh sách các bản đồ công cụ in the MIDI.js source. Ngoài ra còn có các chức năng tiện dụng trong MIDI.GeneralMIDI sẽ tìm nạp thông tin công cụ byName, byId và byCategory.

+0

Trống Synth không phải là bộ trống có ghi chú để lập bản đồ âm thanh mà câu hỏi ban đầu được đề cập (35 = trống âm bass). –

Các vấn đề liên quan