From 6813c30e3a30b9a7b3bdd3641f4947ee06077b73 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 2 Mar 2025 18:02:38 -0500 Subject: [PATCH] new chan osc, part 8 fix remaining bugs --- src/engine/platform/msm6258.cpp | 2 +- src/engine/platform/tx81z.cpp | 2 +- src/engine/platform/vera.cpp | 2 +- src/gui/chanOsc.cpp | 9 +++++---- src/gui/gui.h | 3 ++- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/msm6258.cpp b/src/engine/platform/msm6258.cpp index a6a19f100..91547feb6 100644 --- a/src/engine/platform/msm6258.cpp +++ b/src/engine/platform/msm6258.cpp @@ -92,7 +92,7 @@ void DivPlatformMSM6258::acquire(short** buf, size_t len) { } else { buf[0][h]=(msmPan&2)?0:msmOut; buf[1][h]=(msmPan&1)?0:msmOut; - oscBuf[0]->putSample(h,msmPan?(msmOut>>1):0); + oscBuf[0]->putSample(h,(msmPan!=3)?(msmOut>>1):0); } } diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index 9bf490c51..1a1b1134e 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -102,7 +102,7 @@ void DivPlatformTX81Z::acquire(short** buf, size_t len) { } for (int i=0; i<8; i++) { - oscBuf[i]->begin(len); + oscBuf[i]->end(len); } } diff --git a/src/engine/platform/vera.cpp b/src/engine/platform/vera.cpp index 4bd4683c3..9a7692039 100644 --- a/src/engine/platform/vera.cpp +++ b/src/engine/platform/vera.cpp @@ -66,7 +66,7 @@ void DivPlatformVERA::acquire(short** buf, size_t len) { // argument right into both could cause an overflow short whyCallItBuf[4][128]; size_t pos=0; - size_t lenCopy=0; + size_t lenCopy=len; DivSample* s=parent->getSample(chan[16].pcm.sample); while (lenCopy>0) { if (s->samples>0 && chan[16].pcm.possamples) { diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index e262f355a..a9b574cd7 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -643,7 +643,6 @@ void FurnaceGUI::drawChanOsc() { float minLevel=1.0f; float maxLevel=-1.0f; - float dcOff=0.0f; if (debugFFT) { // FFT debug code! @@ -717,7 +716,8 @@ void FurnaceGUI::drawChanOsc() { if (maxLeveldcOff; + fft->dcOff+=(y-fft->dcOff)*0.001; if (yOut<-0.5f) yOut=-0.5f; if (yOut>0.5f) yOut=0.5f; yOut*=chanOscAmplify*2.0f; @@ -737,14 +737,15 @@ void FurnaceGUI::drawChanOsc() { if (maxLeveldcOff; + fft->dcOff+=(y-fft->dcOff)*0.001; if (yOut<-0.5f) yOut=-0.5f; if (yOut>0.5f) yOut=0.5f; yOut*=chanOscAmplify*2.0f; fft->oscTex[kTex]=yOut; } } - dcOff=(minLevel+maxLevel)*0.5f; + //dcOff=(minLevel+maxLevel)*0.5f; if (!(rend->supportsDrawOsc() && settings.shaderOsc)) { for (unsigned short j=0; j