diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 5dc024a70..d87bcf688 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -686,6 +686,11 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { for (int i=0; i<6; i++) { if (rssOut[i]<-32768) rssOut[i]=-32768; if (rssOut[i]>32767) rssOut[i]=32767; + if (isMuted[adpcmAChanOffs+i]) { + oscBuf[9+i]->putSample(h,0); + } else { + oscBuf[9+i]->putSample(h,rssOut[i]); + } oscBuf[9+i]->putSample(h,rssOut[i]); } // ADPCM diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index a12048230..3ecd410e3 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -618,7 +618,11 @@ void DivPlatformYM2610::acquire_lle(short** buf, size_t len) { for (int i=0; i<6; i++) { if (rssOut[i]<-32768) rssOut[i]=-32768; if (rssOut[i]>32767) rssOut[i]=32767; - oscBuf[7+i]->putSample(h,rssOut[i]); + if (isMuted[adpcmAChanOffs+i]) { + oscBuf[7+i]->putSample(h,0); + } else { + oscBuf[7+i]->putSample(h,rssOut[i]); + } } // ADPCM oscBuf[13]->putSample(h,fm_lle.ac_ad_output); diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index bdad880ce..970a33d2a 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -686,6 +686,11 @@ void DivPlatformYM2610B::acquire_lle(short** buf, size_t len) { for (int i=0; i<6; i++) { if (rssOut[i]<-32768) rssOut[i]=-32768; if (rssOut[i]>32767) rssOut[i]=32767; + if (isMuted[adpcmAChanOffs+i]) { + oscBuf[9+i]->putSample(h,0); + } else { + oscBuf[9+i]->putSample(h,rssOut[i]); + } oscBuf[9+i]->putSample(h,rssOut[i]); } // ADPCM