gpt4 book ai didi

c++ - 阅读更多 midi 数据

转载 作者:行者123 更新时间:2023-12-02 09:58:00 27 4
gpt4 key购买 nike

从 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;
}
}

最佳答案

MIDI 协议(protocol)不使用“和弦”的概念。您所说的和弦只是一系列具有相同(精确或近似)时序的 MIDI 音符。例如,MIDI 音序器在播放音符或在 MIDI 编辑器中呈现音符时不需要任何和弦。但是当它在乐谱编辑器中显示音符时,它必须决定如何在和弦中逻辑地重新组合它们,为此它使用时序,但也使用音高范围,有时是 MIDI channel 等等。这是乐谱编辑器工作的特定内容,而不是 MIDI 协议(protocol)的意图。
无论如何,具有相同时序的音符被顺序接收,与其他音符完全一样。因此,您必须分析接收到的数据以确定它们是否是和弦的成员。

关于c++ - 阅读更多 midi 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64323592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com