From 69a43a70fc90710503b0e624acb89ffa1ee05e83 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 5 Mar 2025 05:40:39 -0500 Subject: [PATCH] Amiga: improve filter calc --- src/engine/platform/amiga.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index d05b55e2a..044c6f399 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -382,14 +382,18 @@ void DivPlatformAmiga::acquireDirect(blip_buffer_t** bb, size_t off, size_t len) void DivPlatformAmiga::postProcess(short* buf, int outIndex, size_t len, int sampleRate) { // filtering - if (amigaModel) { - filtConstOff=4000; - filtConstOn=sin(M_PI*8000.0/((double)sampleRate*2.0))*4096.0; + double filtFreq=100000.0; + if (filterOn) { + if (amigaModel) { + filtFreq=8000.0; + } else { + filtFreq=5500.0; + } } else { - filtConstOff=sin(M_PI*16000.0/((double)sampleRate*2.0))*4096.0; - filtConstOn=sin(M_PI*5500.0/((double)sampleRate*2.0))*4096.0; + if (!amigaModel) filtFreq=16000.0; } - filtConst=filterOn?filtConstOn:filtConstOff; + if (filtFreq>=(sampleRate/2)) return; + filtConst=sin(M_PI*filtFreq/((double)sampleRate*2.0))*4096.0; for (size_t i=0; i>12;