0

midiInProc デリゲートからの dwParam1 を、ノート オフ、ノート オン、コントロール チェンジなどの MIDI ステータス メッセージに解釈するにはどうすればよいですか?

私が試している限り、dwParam1 は 254 であり、ノートオフなどと等しくないからです。

4

4 に答える 4

1

すべての入力デバイスからノートオフを受け取るとは限りません。IIRCは、デバイスがノートオフの代わりにボリューム=0のノートオンを送信することは合法です。また、ドラムストリーム(ドラムマシンおよび/またはMIDIチャンネル10)には、通常、ノートオンのみが含まれ、ノートオフは含まれないと思います。

于 2010-05-13T14:43:28.863 に答える
1

あなたの質問がdwParam1とmidiInProcに言及していることを考えると、これはWindows用であると思います。midiInProcMIM_DATAを受け取ったら、次のようにdwParam1を解析できます。

ステータスバイト(コマンドとチャネル)には、を使用しますLOBYTE(dwParam1)

最初のデータバイトには、を使用しますHIBYTE(dwParam1)

該当する場合は、2番目のデータバイトに。を使用しますLOBYTE(HIWORD(dwParam1))

于 2011-04-21T05:20:06.837 に答える
0

@Conrad Albrecht による回答はほとんど正しいですが、元のポスターはおそらくMIDI の実行状況によって混乱していると思われるため、(コメントではなく) 回答を付けたいと思いました。

通常の MIDI ステータス バイトに似ていないバイトが表示されている場合は、受信した前のバイトと同じタイプであると想定できます。したがって、MIDI ノート オフの代わりにベロシティ 0 のイベントで MIDI ノートを使用することは、合法であるだけでなく、非常に一般的です。

これらのバイトは、イベントの MIDI ノートの通常の 2 番目の 2 バイトとして解釈する必要があります。

于 2011-04-21T08:09:54.670 に答える
0

あなたが何を求めているのか完全にはわかりませんが、MIDI データを解釈する方法を理解しようとしていると思います。

このリソースをお勧めします: http://www.midi.org/techspecs/midimessages.php

ノートに関連する MIDI メッセージは、バイト全体ではなく、最初の 4 ビットで区別されます。最初のバイトの最後の 4 ビットはチャネルを指定します。

于 2010-07-14T02:36:20.900 に答える