2

私は独自の MIDI パーサーを作成していますが、すべてうまくいっているようです。

私は、実際に目にするいくつかのファイルに対してテストしています。MIDI トラックが一度に複数のノートを持っているように見えない (複数のトーンを生成する) ことに気付きました。これは仕様によるものですか? MIDI トラックでは、一度に複数のノートを再生する必要がありますか?

(同時トラック数ではなく、1トラックのトーン数のことです。)

私がテストした midi ファイルは次のようになります。

ON_NOTE71:ON_NOTE75:ON_NOTE79 ON_NOTE71:OFF_NOTE71:ON_NOTE75:OFF_NOTE75:ON_NOTE79:OFF_NOTE79

このように見えますか?

ON_NOTE71:ON_NOTE73:OFF_NOTE73:OFF_NOTE71

この代替構造を検出するにはどうすればよいですか?

4

3 に答える 3

2

はい。一度に複数の音を鳴らすことをポリフォニーと呼びます。異なる MIDI 仕様では、異なるレベルのポリフォニーのサポートが定義されています。

http://www.midi.org/techspecs/gm.phpを参照してください。

于 2012-04-24T05:31:06.533 に答える
1

一度に再生できるノートの数は、ハードウェア実装の詳細です。ソフトウェアでは、任意の数のノートを同時に再生できるようにする必要があります。再生が停止したときに各ノートを送信できるように、現在オンになっているノートのテーブルを保持することをお勧めします。理想的には、テーブルには、ノートオンが発生すると増加し、ノートオフが発生すると減少する各ノートのカウントが必要です。そうすれば、特定のピッチに保留中のイベントに関する2つのノートがある場合、2つのノートオフイベントを送信できます。通信しているデバイスが同じピッチのイベントの連続するノートをどのように処理するかを知ることができないため、同じ数のノートオフイベントを送信するのが最も安全です。

于 2012-04-24T16:40:32.447 に答える
0

はい。コントローラとソフトウェアの両方がこのようなイベントを生成できます。

于 2012-04-24T05:26:09.150 に答える