From 3837fe59fb5038544efcfe2679140c3201da1676 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 3 Aug 2023 01:10:25 -0500 Subject: [PATCH] SN: fix key off --- src/engine/platform/sms.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 640f364e..76aa62fc 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -296,6 +296,10 @@ void DivPlatformSMS::tick(bool sysTick) { rWrite(0,0x90|(i<<5)|(isMuted[i]?15:(15-(chan[i].outVol&15)))); chan[i].writeVol=false; } + if (chan[i].keyOff) { + rWrite(0,0x9f|i<<5); + chan[i].keyOff=false; + } } } @@ -309,6 +313,7 @@ int DivPlatformSMS::dispatch(DivCommand c) { chan[c.chan].actualNote=c.value; } chan[c.chan].active=true; + chan[c.chan].keyOff=false; //if (!parent->song.brokenOutVol2) { chan[c.chan].writeVol=true; chan[c.chan].outVol=chan[c.chan].vol; @@ -321,7 +326,7 @@ int DivPlatformSMS::dispatch(DivCommand c) { break; case DIV_CMD_NOTE_OFF: chan[c.chan].active=false; - rWrite(0,0x9f|c.chan<<5); + chan[c.chan].keyOff=true; chan[c.chan].macroInit(NULL); break; case DIV_CMD_NOTE_OFF_ENV: