【发布时间】:2020-10-12 18:43:28
【问题描述】:
要从 MIDI 键盘读取数据,我使用以下回调函数,但是:如何管理多个数据?例如,当同时按下键盘上的多个键(和弦)时?
void CALLBACK midi_in_proc_(HMIDIIN hMidiIn, UINT wMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{
unsigned char ch_msg, data1, data2, data3;
switch(wMsg) {
case MIM_OPEN:
_tprintf_s(_T("wMsg=MIM_OPEN\n"));
break;
case MIM_CLOSE:
_tprintf_s(_T("wMsg=MIM_CLOSE\n"));
break;
case MIM_DATA:
ch_msg = (unsigned char)(0xFF & dwParam1);
data1 = (unsigned char)(0xFF & (dwParam1 >> 8));
data2 = (unsigned char)(0xFF & (dwParam1 >> 16));
data3 = (unsigned char)(0xFF & (dwParam1 >> 24));
on_short_message(ch_msg, data1, data2, data3);
break;
default:
_tprintf_s(_T("wMsg = unknown\n"));
break;
}
}
【问题讨论】:
-
没有任何事情发生在同一时刻;弹奏和弦将发送有关事件的一系列音符。