如何将midiInProc委托中的dwParam1解释为midi状态消息,如note-off或note-on,control change?Midi消息需要帮助
因为只要我尝试dwParam1是254,并不等于注释或其他任何东西。
如何将midiInProc委托中的dwParam1解释为midi状态消息,如note-off或note-on,control change?Midi消息需要帮助
因为只要我尝试dwParam1是254,并不等于注释或其他任何东西。
我不完全确定你在问什么,但我认为你正试图弄清楚如何解释MIDI数据。
我建议这个资源: http://www.midi.org/techspecs/midimessages.php
相关票据MIDI消息由前4位分化,而不是整个字节。第一个字节的最后四位指定通道。
鉴于您的问题提到了dwParam1和midiInProc,我假设这是针对Windows的。当你在midiInProc收到MIM_DATA,您可以解析dwParam1如下:
对于status byte (command and channel),使用LOBYTE(dwParam1)
。
对于第一个数据字节,使用HIBYTE(dwParam1)
。
如果适用,对于第二个数据字节,请使用LOBYTE(HIWORD(dwParam1))
。
@康拉德阿尔布雷希特的回答大多是正确的,但我想用一个答案(而不是一个评论),因为我认为原来的海报可能被MIDI running status弄糊涂了。
如果您看到的字节与正常的MIDI状态字节不相似,则可以假定它们与您收到的前一个字节的类型相同。因此,对速度为0的事件使用MIDI音符作为MIDI音符关闭的替代品不仅合法但非常常见。
您应该将这些字节解释为MIDI音符事件的正常后两个字节。
你的问题是关于细节。如果您将更多细节(例如操作系统,编程语言和可能的代码段)以及您尝试解码的MIDI消息的具体细节分开,那么您将有更多机会获得适当的答案。 – mdma 2010-05-13 14:28:08