From 411d43b37b09d6ebb38de997aa09c8226e6da7b2 Mon Sep 17 00:00:00 2001 From: ceski <56656010+ceski-1@users.noreply.github.com> Date: Wed, 25 Jan 2023 19:36:19 -0800 Subject: [PATCH] winmidi: Send "reset all controllers" when song loops (#878) * winmidi: Fix songs with missing "hold pedal off" events * Revert "winmidi: Fix songs with missing "hold pedal off" events" This reverts commit a12e8e6a5a7c06236bc3f0e4d9abc03c19758f1e. * Send "reset all controllers" when song loops * Use consistent int type --- src/i_winmusic.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/i_winmusic.c b/src/i_winmusic.c index 242a47ce..094cd4a2 100644 --- a/src/i_winmusic.c +++ b/src/i_winmusic.c @@ -1082,6 +1082,10 @@ static void FillBuffer(void) } else if (song.looping) { + for (i = 0; i < MIDI_CHANNELS_PER_TRACK; ++i) + { + SendShortMsg(0, MIDI_EVENT_CONTROLLER, i, MIDI_CONTROLLER_RESET_ALL_CTRLS, 0); + } RestartTracks(); continue; } @@ -1398,8 +1402,8 @@ static void I_WIN_UnRegisterSong(void *handle) { if (song.tracks) { - int i; - for (i = 0; i < MIDI_NumTracks(song.file); ++i) + unsigned int i; + for (i = 0; i < song.num_tracks; ++i) { MIDI_FreeIterator(song.tracks[i].iter); song.tracks[i].iter = NULL;