MIDIには変更されません。js note durationはmudcube MIDIのドキュメントとして

に変更されません。jsはこの点で欠けているようですが、私は正しい方向に私を向けることができるかもしれない誰かがいることを望んでいます。 Midiを使用して、はっきりとそれを置くために。jsは、どのようにmidiノートの持続時間と終了を調整するのですか?

いくつかの背景のために、私はmidiを再生するために呼び出すことができるシーケンスを形成するために、追加または削除することができ、ドラッグ可 しかし、私はこのウィジェットの機能をより複雑なタイミングで拡張しようとしているので、私はいくつかの問題に遭遇しました。

私は設定された期間でのみノートを再生することができ、すべての私の努力のために、半分のノート、四分の一のノート、八つのノートなど、この期間を変えるこ また、これは、MIDIの原因の一つであってもよいです。noteOffは出力に知覚可能な影響を与えません。 一つは、与えられたノートは、MIDIまで無期限に再生されると思うだろう。noteOffが呼び出されますが、noteoffが呼び出されたかどうかにかかわらず、noteoffが再生され、その後引きずり出されます。

私はこれの底に到達するために、SOとweb一般に関する広範な研究を行っていることをここで言わせてください。 私は同様の問題を抱えている人を見つけて修正を適用しましたが、彼らの答えは私のためにはうまくいきません。 JavascriptとMIDIを使用してMidiで任意のノートを再生する方法を参照してください。noteOffが確実に動作しないようです

私はnoteSequenceと呼ばれる一連の音符を持っています。 ‘C4’)および関数convertToMidiSequenceでmidiSequenceに変換されるnoteDurationプロパティ。 すべてが旋律シーケンスと和音でうまく動作し、私はちょうど期間機能が追加されているしたいです。 また、’delay’変数またはnoteDurationプロパティを調整すると、シーケンスが再生される前の時間が加算されるだけであると言う必要があります。 その後、最初の遅延の後、シーケンスは以前と同じタイミングで再生されます。

これを見て、うまくいけば助けるためにいくつかの時間を割いてくれてありがとう。 それは非常に高く評価されるでしょう。 ここに私のMIDIを実行する該当するコードがあります:

$(document).ready(function() { MIDI.loadPlugin({ soundfontUrl: GLOBALS.SOUNDFONT_URL, instrument: 'acoustic_grand_piano', callback: function() { var channel = 0, instrument = 0, velocity = 127, delay = 1; MIDI.programChange(0, instrument); } });});function playCurrentSequence() { playSequence(noteSequence);}function playSequence(sequence) { var midiSequence = convertToMidiSequence(sequence); for (var i = 0; i < midiSequence.length; i++) { if (!(midiSequence instanceof Array)) { playNote(midiSequence, i); } else { playChord(midiSequence, i); } }}function playNote(midiNote, notePositionInMeasure) { var channel = 0, velocity = 127, delay = 1; MIDI.noteOn(channel, midiNote, velocity, delay + notePositionInMeasure + 1); MIDI.noteOff(channel, midiNote, delay + midiNote.noteDuration + notePositionInMeasure + 1); MIDI.Player.stop();}function playChord(midiChord, notePositionInMeasure) { var channel = 0, velocity = 127, delay = 1; for (var i = 0; i < midiChord.length; i++) { MIDI.noteOn(channel, midiChord, velocity, delay + notePositionInMeasure + 1); MIDI.noteOff(channel, midiChord, delay + midiChord.noteDuration + notePositionInMeasure + 1); MIDI.Player.stop(); }}

コメントを残す

メールアドレスが公開されることはありません。