Midi Message需要帮助

时间:2010-05-13 14:20:59

标签: midi

如何将midiInProc代表中的dwParam1解释为midi状态消息,如note-off或note-on,control change?

因为只要我尝试dwParam1是254,并且不等于音符关闭或其他任何东西。

4 个答案:

答案 0 :(得分:1)

您不一定会收到每个输入设备的注释。 IIRC设备发送音量= 0的音符作为音符关闭的替代是合法的。另外一个鼓流(来自鼓机和/或MIDI通道10)我相信通常只包含音符,没有音符。

答案 1 :(得分:1)

鉴于您的问题提及dwParam1和midiInProc,我假设这是针对Windows的。当您在MIM_DATA中收到midiInProc时,可以按如下方式解析dwParam1:

对于status byte (command and channel),请使用LOBYTE(dwParam1)

对于第一个数据字节,请使用HIBYTE(dwParam1)

如果适用,对于第二个数据字节,请使用LOBYTE(HIWORD(dwParam1))

答案 2 :(得分:0)

我不完全确定你在问什么,但我想你正试图弄清楚如何解释MIDI数据。

我建议这个资源: http://www.midi.org/techspecs/midimessages.php

与音符相关的MIDI信息由前4位区分,而不是由整个字节区分。第一个字节的最后四位指定通道。

答案 3 :(得分:0)

@Conrad Albrecht的答案大多是正确的,但我想填写一个答案(而不是评论),因为我认为原始海报可能会被MIDI running status混淆。

如果您看到的字节与普通MIDI状态字节不相似,则可以假设它们与您收到的前一个字节的类型相同。因此,对速度为0的事件使用MIDI音符代替MIDI音符不仅合法,而且非常常见。

您应该将这些字节解释为事件上MIDI音符的正常后两个字节。