From 87ae995ff916847c2e5f48af9c428188e2f8e266 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 02:14:55 -0500 Subject: [PATCH] MSM5232: fix chan osc again issue #1435 --- src/engine/platform/msm5232.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/msm5232.cpp b/src/engine/platform/msm5232.cpp index 8ad6b1da9..997ab607e 100644 --- a/src/engine/platform/msm5232.cpp +++ b/src/engine/platform/msm5232.cpp @@ -49,20 +49,23 @@ void DivPlatformMSM5232::acquire(short** buf, size_t len) { for (size_t h=0; hwrite(w.addr,w.val); regPool[w.addr&0x0f]=w.val; writes.pop(); } for (int i=0; i<8; i++) { - int o=( - ((regPool[12+(i>>2)]&1)?((msm->vo16[i]*partVolume[3+(i&4)])>>8):0)+ - ((regPool[12+(i>>2)]&2)?((msm->vo8[i]*partVolume[2+(i&4)])>>8):0)+ - ((regPool[12+(i>>2)]&4)?((msm->vo4[i]*partVolume[1+(i&4)])>>8):0)+ - ((regPool[12+(i>>2)]&8)?((msm->vo2[i]*partVolume[i&4])>>8):0) - )<<2; - oscBuf[i]->data[oscBuf[i]->needle++]=CLAMP(o,-32768,32767); + if (isMuted[i]) { + oscBuf[i]->data[oscBuf[i]->needle++]=0; + } else { + int o=( + ((regPool[12+(i>>2)]&1)?((msm->vo16[i]*partVolume[3+(i&4)])>>8):0)+ + ((regPool[12+(i>>2)]&2)?((msm->vo8[i]*partVolume[2+(i&4)])>>8):0)+ + ((regPool[12+(i>>2)]&4)?((msm->vo4[i]*partVolume[1+(i&4)])>>8):0)+ + ((regPool[12+(i>>2)]&8)?((msm->vo2[i]*partVolume[i&4])>>8):0) + )<<2; + oscBuf[i]->data[oscBuf[i]->needle++]=CLAMP(o,-32768,32767); + } } clockDriftLFOPos+=clockDriftLFOSpeed;