17

明確にするために:私はMIDIファイルを生成したり、MIDIファイルを再生したりしたくありません。その場でMIDIノートを再生したいのです。

https://github.com/mudcube/MIDI.jsをMIDIライブラリとして使ってみたところ、何とか動きました。

を呼び出して音符を演奏できMIDI.noteOn(0,midiNumber,100);ます。ただし、これは数秒間ノートを再生し、その後、コールしない場合でも徐々に減少しますMIDI.noteOff

これが MIDI の本来の動作方法だとは思いません。noteOn を呼び出して、noteOff が呼び出されるまでノートを再生して維持できるようにしたいと考えています。

対象ブラウザ: 最新の firefox/chrome。

4

5 に答える 5

10

お使いのバージョンの MIDI.js のバグです。

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、特定のノートをロードして再生します。autoloop 属性がないため繰り返されないため、 の呼び出しはnoteOff必要ありません。audio要素を自動ループに設定すると、これを自分で修正できます。

于 2013-01-13T08:26:54.653 に答える
1

Web MIDI API の Google。まだすべてのブラウザーに実装されているわけではありませんが、GitHub に Chris Wilson によるポリフィルがあります。

于 2013-02-13T21:47:28.323 に答える