foxygit / doom Log in
commit 4de3985fdce7025070a4291faa5ab2e4a7025ea6
Author:     ceski <56656010+ceski-1@users.noreply.github.com>
AuthorDate: Sat Nov 11 10:41:07 2023 -0800
Commit:     ceski <56656010+ceski-1@users.noreply.github.com>
CommitDate: Mon Nov 13 10:09:16 2023 -0800

    win midi: Fix EMIDI events and designation

    EMIDI events were skipped due to a copying mistake introduced by: https://github.com/chocolate-doom/chocolate-doom/commit/833d0c2aa176356a362099b24899a69d86f56b1e
---
 src/i_winmusic.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/i_winmusic.c b/src/i_winmusic.c
index 54341f18..524b6f3e 100644
--- a/src/i_winmusic.c
+++ b/src/i_winmusic.c
@@ -96,6 +96,8 @@ static HANDLE hBufferReturnEvent;
 static HANDLE hExitEvent;
 static HANDLE hPlayerThread;

+#define EMIDI_DEVICE (1U << EMIDI_DEVICE_GENERAL_MIDI)
+
 // This is a reduced Windows MIDIEVENT structure for MEVT_F_SHORT
 // type of events.

@@ -708,7 +710,7 @@ static void SendEMIDI(unsigned int delta_time, const midi_event_t *event,
     unsigned int flag;
     int count;

-    switch ((int) event->event_type)
+    switch (event->data.channel.param1)
     {
         case EMIDI_CONTROLLER_TRACK_DESIGNATION:
             if (track->elapsed_time < timediv)
@@ -722,7 +724,7 @@ static void SendEMIDI(unsigned int delta_time, const midi_event_t *event,
                 }
                 else if (flag <= EMIDI_DEVICE_ULTRASOUND)
                 {
-                    track->emidi_device_flags |= 1 << flag;
+                    track->emidi_device_flags |= 1U << flag;
                     track->emidi_designated = true;
                 }
             }
@@ -746,7 +748,7 @@ static void SendEMIDI(unsigned int delta_time, const midi_event_t *event,

                 if (flag <= EMIDI_DEVICE_ULTRASOUND)
                 {
-                    track->emidi_device_flags &= ~(1 << flag);
+                    track->emidi_device_flags &= ~(1U << flag);
                 }
             }
             SendNOPMsg(delta_time);
@@ -838,10 +840,6 @@ static void SendEMIDI(unsigned int delta_time, const midi_event_t *event,
             }
             SendNOPMsg(delta_time);
             break;
-
-        default:
-            SendNOPMsg(delta_time);
-            break;
     }
 }

@@ -970,8 +968,7 @@ static boolean AddToBuffer_Standard(unsigned int delta_time,
             return true;
     }

-    if (track->emidi_designated &&
-        (EMIDI_DEVICE_GENERAL_MIDI & ~track->emidi_device_flags))
+    if (track->emidi_designated && (EMIDI_DEVICE & ~track->emidi_device_flags))
     {
         // Send NOP if this device has been excluded from this track.
         SendNOPMsg(delta_time);