私は外部USBデバイスからMIDIデータを読み取るC++プロジェクトに取り組んでいます。プログラムは、USBデバイスのどのフェーダー/ノブ/ボタンがシフテット/回転/押されているかに応じて特定の関数を呼び出すことになっています(vol +-またはミュート/ミュート解除チャネルなど)。
どのフェーダー/ノブ/ボタンが変更されたかを知る唯一の方法は、基本的にすべての着信midiイベントをチェックするかなり大きなswitchステートメントを使用することでした。
このように見えます:
switch(MidiMessage.get2ndByte()){
case 1 : cout << "Fader 1 Value : " << MidiMessage.get3rdByte() << endl;
case 2 : cout << "Fader 2 Value : " << MidiMessage.get3rdByte() << endl;
case 10 : cout << "Button 1 Value : << "MidiMessage.get3rdByte() << endl;
...
...
...
}
これを行うためのより効率的でスマートな方法はありませんか?