From 7b23e349071d3e5d5b64e9db91f89010ee221fa6 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 21 Aug 2024 23:47:01 +0900 Subject: [PATCH] spectrometer slope is now 10dB/decade, which makes pink noise to appear flat --- .../net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt | 2 +- src/net/torvald/terrarum/audio/dsp/Spectro.kt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt b/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt index 8a4b17afb..36c22239a 100644 --- a/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt +++ b/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt @@ -1203,7 +1203,7 @@ class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() { // apply slope to the fft bins, also converts fullscale to decibels for (bin in binHeights.indices) { val freqR = (TerrarumAudioMixerTrack.SAMPLING_RATED / FFTSIZE) * (bin + 1) - val magn0 = fftOut.reim[2 * bin].absoluteValue / FFTSIZE * (freqR / 20.0) // apply slope + val magn0 = fftOut.reim[2 * bin].absoluteValue / FFTSIZE * freqR.sqrt() // apply slope val magn = FastMath.interpolateLinear(FFT_SMOOTHING_FACTOR, magn0, oldFFTmagn[bin]) val magnLog = fullscaleToDecibels(magn) - dbOffset diff --git a/src/net/torvald/terrarum/audio/dsp/Spectro.kt b/src/net/torvald/terrarum/audio/dsp/Spectro.kt index 794e6c20b..f499487a1 100644 --- a/src/net/torvald/terrarum/audio/dsp/Spectro.kt +++ b/src/net/torvald/terrarum/audio/dsp/Spectro.kt @@ -6,6 +6,7 @@ import com.jme3.math.FastMath import net.torvald.terrarum.App import net.torvald.terrarum.audio.* import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.SAMPLING_RATED +import net.torvald.terrarum.sqrt import net.torvald.terrarum.ui.BasicDebugInfoWindow import net.torvald.terrarum.ui.BasicDebugInfoWindow.Companion.STRIP_W import net.torvald.terrarum.ui.Toolkit @@ -77,7 +78,7 @@ class Spectro(var gain: Float = 1f) : TerrarumAudioFilter() { for (bin in 0 until FFTSIZE / 2) { val freqL = (SAMPLING_RATED / FFTSIZE) * bin val freqR = (SAMPLING_RATED / FFTSIZE) * (bin + 1) - val magn0 = fftOut.reim[2 * bin].absoluteValue / FFTSIZE * (freqR / 20.0) // apply slope + val magn0 = fftOut.reim[2 * bin].absoluteValue / FFTSIZE * freqR.sqrt() // apply slope val magn = FastMath.interpolateLinear(BasicDebugInfoWindow.FFT_SMOOTHING_FACTOR, magn0, oldFFTmagn[bin]) val magnLog = fullscaleToDecibels(magn)