Here is a new version of the patch bringing MIDI MTC messages handling, including the surrounding code improvements suggested by Jörg Hoehle <a href="http://wine.1045685.n5.nabble.com/winealsa-drv-midi-c-Adds-the-midi-MTC-Quarter-Frame-messages-support-td4387453.html" target="_blank">http://wine.1045685.n5.nabble.com/winealsa-drv-midi-c-Adds-the-midi-MTC-Quarter-Frame-messages-support-td4387453.html</a><br>
Corrects bug #26928<br>Tested in several ways with hardware + software<br>
Regards.<br><br>---<br> dlls/winealsa.drv/midi.c | 9 ++++++---<br> 1 files changed, 6 insertions(+), 3 deletions(-)<br><br>diff --git a/dlls/winealsa.drv/midi.c b/dlls/winealsa.drv/midi.c<br>index 8bd048e..1e5b436 100644<br>
--- a/dlls/winealsa.drv/midi.c<br>
+++ b/dlls/winealsa.drv/midi.c<br>@@ -362,14 +362,17 @@ static DWORD WINAPI midRecThread(LPVOID arg)<br> toSend = 0xFC;<br> break;<br> case SND_SEQ_EVENT_SONGPOS:<br>
- toSend = (((ev->data.control.value >> 7) & 0x7f) << 16) | ((ev->data.control.value & 0x7f) << 8) | 0xF2;<br>+ toSend = (((ev->data.control.value >> 7) & 0x7f) << 16) | ((ev->data.control.value & 0x7f) << 8) | MIDI_CMD_COMMON_SONG_POS;<br>
break;<br> case SND_SEQ_EVENT_SONGSEL:<br>- toSend = ((ev->data.control.value & 0x7f) << 8) | 0xF3;<br>+ toSend = ((ev->data.control.value & 0x7f) << 8) | MIDI_CMD_COMMON_SONG_SELECT;<br>
break;<br> case SND_SEQ_EVENT_RESET:<br> toSend = 0xFF;<br> break;<br>+ case SND_SEQ_EVENT_QFRAME:<br>+ toSend = ((ev->data.control.value & 0x7f) << 8) | MIDI_CMD_COMMON_MTC_QUARTER;<br>
+ break;<br> case SND_SEQ_EVENT_SYSEX:<br> {<br> int pos = 0;<br>@@ -864,7 +867,6 @@ static DWORD modData(WORD wDevID, DWORD dwParam)<br> switch (evt & 0x0F) {<br>
case 0x00: /* System Exclusive, don't do it on modData,<br> * should require modLongData*/<br>- case 0x01: /* Undefined */<br> case 0x04: /* Undefined. */<br> case 0x05: /* Undefined. */<br>
case 0x07: /* End of Exclusive. */<br>@@ -890,6 +892,7 @@ static DWORD modData(WORD wDevID, DWORD dwParam)<br> snd_seq_ev_set_sysex(&event, sizeof(reset_sysex_seq), reset_sysex_seq);<br> }<br>
break;<br>+ case 0x01: /* MTC Quarter frame */<br> case 0x03: /* Song Select. */<br> {<br> BYTE buf[2];<br>-- <br>1.7.4.1<br><br>