From: <rel...@us...> - 2008-02-11 22:26:13
|
Revision: 201 http://modplug.svn.sourceforge.net/modplug/?rev=201&view=rev Author: relabsoluness Date: 2008-02-11 14:26:06 -0800 (Mon, 11 Feb 2008) Log Message: ----------- . Fixed MIDI mapping not checking MIDI event, which could cause events like pitch bend to trigger some mapping item. Modified Paths: -------------- trunk/OpenMPT/mptrack/Mpt_midi.cpp trunk/OpenMPT/soundlib/midi.h Modified: trunk/OpenMPT/mptrack/Mpt_midi.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpt_midi.cpp 2008-02-02 19:03:19 UTC (rev 200) +++ trunk/OpenMPT/mptrack/Mpt_midi.cpp 2008-02-11 22:26:06 UTC (rev 201) @@ -260,6 +260,12 @@ //---------------------------------------------------------------------------------------------------- { bool captured = false; + + if(GetFromMIDIMsg_Event(midimsg) != MIDIEVENT_CONTROLLERCHANGE) return captured; + //For now only controllers can be mapped so if event is not controller change, + //no mapping will be found and thus no search is done. + //NOTE: The event value is not checked in code below. + const BYTE controller = GetFromMIDIMsg_DataByte1(midimsg); const_iterator citer = std::lower_bound(Begin(), End(), controller); Modified: trunk/OpenMPT/soundlib/midi.h =================================================================== --- trunk/OpenMPT/soundlib/midi.h 2008-02-02 19:03:19 UTC (rev 200) +++ trunk/OpenMPT/soundlib/midi.h 2008-02-11 22:26:06 UTC (rev 201) @@ -11,10 +11,18 @@ void ApplyTransposeKeyboardSetting(CMainFrame& rMainFrm, DWORD& dwParam1); inline BYTE GetFromMIDIMsg_Channel(const DWORD MIDImsg) {return static_cast<BYTE>((MIDImsg & 0xF));} inline BYTE GetFromMIDIMsg_Event(const DWORD MIDImsg) {return static_cast<BYTE>(((MIDImsg >> 4) & 0xF));} -inline BYTE GetFromMIDIMsg_DataByte1(const DWORD MIDImsg) {return static_cast<BYTE>(((MIDImsg >> 8) & 0x7F));} -inline BYTE GetFromMIDIMsg_DataByte2(const DWORD MIDImsg) {return static_cast<BYTE>(((MIDImsg >> 16) & 0x7F));} +inline BYTE GetFromMIDIMsg_DataByte1(const DWORD MIDImsg) {return static_cast<BYTE>(((MIDImsg >> 8) & 0xFF));} +inline BYTE GetFromMIDIMsg_DataByte2(const DWORD MIDImsg) {return static_cast<BYTE>(((MIDImsg >> 16) & 0xFF));} +enum +{ + MIDIEVENT_NOTEOFF = 0x8, + MIDIEVENT_NOTEON = 0x9, + MIDIEVENT_CONTROLLERCHANGE = 0xB, + MIDIEVENT_PITCHBEND = 0xE, +}; + //========================= class CMIDIMappingDirective //========================= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |