diff --git a/src/cmds.c b/src/cmds.c index 9fead77..3226803 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -159,7 +159,6 @@ void commandSG() { if (num == 0) { mus_midi_stop(); } else { - mus_midi_stop(); mus_midi_start(num, loopcnt); } DEBUG_COMMAND("SG1 %d:\n", num); diff --git a/src/midi.emscripten.c b/src/midi.emscripten.c index c498dbd..251a78d 100644 --- a/src/midi.emscripten.c +++ b/src/midi.emscripten.c @@ -67,6 +67,9 @@ static int midi_exit() { } static int midi_start(int no, int loop, char *data, int datalen) { + if (midino == no) + return OK; + EM_ASM_ARGS({ xsystem35.midiPlayer.play($0, $1, $2); }, loop, data, datalen); midino = no; diff --git a/src/midi.sdlmixer.c b/src/midi.sdlmixer.c index 97558ee..5312717 100644 --- a/src/midi.sdlmixer.c +++ b/src/midi.sdlmixer.c @@ -75,6 +75,9 @@ static int midi_exit() { } static int midi_start(int no, int loop, char *data, int datalen) { + if (midino == no) + return OK; + midi_stop(); SDL_RWops *rwops = SDL_RWFromConstMem(data, datalen);