From 7cef8e0df4defb6020d22a420c4dd24ab08e4ee9 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 23 Nov 2023 19:44:40 +0900 Subject: [PATCH] filter info view for BinoPan --- src/net/torvald/terrarum/audio/AudioMixer.kt | 19 +++++++++++++++---- .../terrarum/audio/TerrarumAudioFilter.kt | 3 +-- .../terrarum/ui/BasicDebugInfoWindow.kt | 19 ++++++++++++++++++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/net/torvald/terrarum/audio/AudioMixer.kt b/src/net/torvald/terrarum/audio/AudioMixer.kt index bdf791748..aa957e860 100644 --- a/src/net/torvald/terrarum/audio/AudioMixer.kt +++ b/src/net/torvald/terrarum/audio/AudioMixer.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.audio import com.badlogic.gdx.Gdx +import com.badlogic.gdx.Input import com.badlogic.gdx.backends.lwjgl3.audio.Lwjgl3Audio import com.badlogic.gdx.utils.Disposable import com.jme3.math.FastMath @@ -95,6 +96,8 @@ object AudioMixer: Disposable { init { +// musicTrack.filters[0] = BinoPan((Math.random() * 2.0 - 1.0).toFloat()) + masterTrack.filters[0] = SoftClp masterTrack.filters[1] = Buffer masterTrack.filters[2] = Scope() @@ -138,11 +141,19 @@ object AudioMixer: Disposable { private var lpStart = SAMPLING_RATED / 2.0 private var lpTarget = SAMPLING_RATED / 2.0 - // TODO make sidechaining work - // TODO master volume controls the master track - // TODO fadein/out controls the master track - fun update(delta: Float) { + // test the panning + /*(musicTrack.filters[0] as? BinoPan)?.let { + if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) { + it.pan = (it.pan + 0.001f).coerceIn(-1f, 1f) + } + else if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) { + it.pan = (it.pan - 0.001f).coerceIn(-1f, 1f) + } + }*/ + + + // the real updates (Gdx.audio as? Lwjgl3Audio)?.update() masterTrack.volume = masterVolume diff --git a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt index 106868a30..2633d7ade 100644 --- a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt +++ b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt @@ -207,8 +207,7 @@ class BinoPan(var pan: Float, var soundSpeed: Float = 340f, var earDist: Float = val delayInSamples = (timeDiffMax * sin(angle)).absoluteValue val volMultDbThis = PANNING_CONST * pan.absoluteValue val volMultFsThis = decibelsToFullscale(volMultDbThis).toFloat() - val volMultDbOther = -(PANNING_CONST * pan.absoluteValue) - val volMUltFsOther = decibelsToFullscale(volMultDbOther).toFloat() + val volMUltFsOther = 1f / volMultFsThis if (pan >= 0) { delays[0] = delayInSamples diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index 2af7ecf57..febf29c8c 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -21,6 +21,7 @@ import net.torvald.terrarum.imagefont.TinyAlphNum import net.torvald.terrarum.modulebasegame.IngameRenderer import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory +import net.torvald.terrarum.modulebasegame.ui.abs import net.torvald.terrarum.weather.WeatherDirBox import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.weather.WeatherStateBox @@ -588,7 +589,8 @@ class BasicDebugInfoWindow : UICanvas() { private val paramViewHeight = hashMapOf( "Lowpass" to 16, "Buffer" to 16, - "Scope" to stripW + "BinoPan" to 32, + "Scope" to stripW, ) @@ -606,6 +608,21 @@ class BasicDebugInfoWindow : UICanvas() { batch.color = FILTER_NAME_ACTIVE App.fontSmallNumbers.draw(batch, "F:${filter.cutoff.toInt()}", x+3f, y+1f) } + is BinoPan -> { + val w = filter.pan * 0.5f * stripW + batch.color = COL_METER_GRAD2 + Toolkit.fillArea(batch, x + stripW / 2f, y.toFloat(), w, 14f) + batch.color = COL_METER_GRAD + Toolkit.fillArea(batch, x + stripW / 2f, y+14f, w, 2f) + + batch.color = FILTER_NAME_ACTIVE + val panLabel = if (filter.pan == 0f) "" + else if (filter.pan < 0) "L${filter.pan.absoluteValue.times(100).toIntAndFrac(3,1)}" + else "R${filter.pan.absoluteValue.times(100).toIntAndFrac(3,1)}" + App.fontSmallNumbers.draw(batch, panLabel, x+3f, y+1f) + + App.fontSmallNumbers.draw(batch, "AS:${filter.soundSpeed.roundToInt()}", x+3f, y+17f) + } is Buffer -> { batch.color = FILTER_NAME_ACTIVE App.fontSmallNumbers.draw(batch, "Bs:${BUFFER_SIZE/4}", x+3f, y+1f)