midiInProc 델리게이트에서 dwParam1을 메모 오프 나 노트 변경, 컨트롤 변경과 같은 미디 상태 메시지로 어떻게 해석합니까?미디 메시지 도움 필요
나는 dwParam1이 254이므로, 노트 오프 또는 다른 것과 같지 않기 때문에.
midiInProc 델리게이트에서 dwParam1을 메모 오프 나 노트 변경, 컨트롤 변경과 같은 미디 상태 메시지로 어떻게 해석합니까?미디 메시지 도움 필요
나는 dwParam1이 254이므로, 노트 오프 또는 다른 것과 같지 않기 때문에.
나는 당신이 무엇을 요구하고 있는지 완전히 모르겠다. 그러나 나는 당신이 MIDI 데이터를 해석하는 방법을 고민하고 있다고 생각한다. 노트와 관련된 http://www.midi.org/techspecs/midimessages.php
MIDI 메시지가 아닌 전체 바이트로, 최초의 4 비트에 의해 구분됩니다 :
나는이 자원을 제안한다. 첫 번째 바이트의 마지막 4 비트는 채널을 지정합니다.
dwParam1 및 midiInProc에 대한 질문에 Windows 용이라고 가정합니다. 의 status byte (command and channel)를 들어
을 LOBYTE(dwParam1)
를 사용 : 당신이 당신의 midiInProc에 MIM_DATA를받을 때, 다음과 같이 dwParam1을 구문 분석 할 수 있습니다.
첫 번째 데이터 바이트의 경우 HIBYTE(dwParam1)
을 사용하십시오.
해당하는 경우 두 번째 데이터 바이트의 경우 LOBYTE(HIWORD(dwParam1))
을 사용하십시오.
@Conrad Albrecht의 답은 대부분 옳다.하지만 원래의 포스터가 아마도 MIDI running status에 의해 혼동되고 있다고 생각하기 때문에 (답장이 아닌) 대답으로 칩에 넣고 싶었다.
정상적인 MIDI 상태 바이트와 닮지 않은 바이트가 표시되는 경우, 수신 한 이전 바이트와 동일한 유형이라고 가정 할 수 있습니다. 따라서 MIDI 노트 오프를 대신하여 0의 속도로 MIDI 노트 온 이벤트를 사용하는 것은 합법적 일뿐만 아니라 매우 일반적입니다.
이벤트를 MIDI 노트의 일반적인 두 번째 2 바이트로 해석해야합니다.
세부 사항이 밝습니다. 운영 체제, 프로그래밍 언어 및 코드 스 니펫과 같은 세부 정보와 디코딩하려는 MIDI 메시지의 세부 정보를 구분하면 적절한 대답을 얻을 수있는 기회가 더 많습니다. – mdma