1

私は、transmitterMIDI キーボードのキーの押下をreceivers受信し、いくつかのバイト操作の後にそれらのメッセージをスピーカーに送信するために使用する MIDI ピアノを作成しています。

私の問題は、ユーザーがキーを押しているかどうかを検出したいということです。ユーザーがキーを押している場合、ノートは持続する必要があります。そうでない場合、音符は徐々に消えて無音になります。

isRunning()Java MIDI には、のように呼び出すことができる送信機用のメソッドがありませんisActive()。つまり、ユーザーがキーを押していると、送信機であることがわかります。これを検出する方法はありますか?

私のコード内には、が にデータを送信したかwhileどうかを常にチェックする無限ループがあり、そのデータを処理した場合は何もしません。ただし、MIDI キーボードでキーを押したままにすると、キーを押したときに MIDI データがレシーバーに送信されますが、while ループが再び開始されると、キーが所定の位置に保持されているため、MIDI データは受信されません。transmitterreceiver

4

1 に答える 1

1

ユーザーがキーを押すと、Note On メッセージが送信されます。キーが離されると、ノート オフ メッセージ (またはベロシティ 0 のノート オン メッセージ) が送信されます。その情報を使用して、メモが保持されているかどうかを判断できます。

1 つの方法: Note On (ベロシティ > 0) が表示されるたびに、カウンターをインクリメントします。ノート オフ (またはベロシティ 0 のノート オン) が表示されるたびに、カウンターが減少します。すべてのノートがオフになっている場合は、カウンターをゼロに設定します。カウンタが 0 より大きい場合は常に、キーが保持されています。

于 2013-03-12T00:16:15.120 に答える