From 19315ac6e832d53dd8e96574ee64d8bf9819e314 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 19 Nov 2023 01:47:32 +0900 Subject: [PATCH] reduced number of tracks; highpass filter wip --- src/net/torvald/terrarum/audio/AudioMixer.kt | 4 +- .../terrarum/audio/TerrarumAudioFilter.kt | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarum/audio/AudioMixer.kt b/src/net/torvald/terrarum/audio/AudioMixer.kt index fb09477dc..8ee20400f 100644 --- a/src/net/torvald/terrarum/audio/AudioMixer.kt +++ b/src/net/torvald/terrarum/audio/AudioMixer.kt @@ -36,9 +36,11 @@ object AudioMixer: Disposable { get() = App.getConfigDouble("sfxvolume") - val tracks = Array(10) { TerrarumAudioMixerTrack( + val tracks = Array(4) { TerrarumAudioMixerTrack( if (it == 0) "BGM" else if (it == 1) "AMB" + else if (it == 2) "Sfx Mix" + else if (it == 3) "GUI" else "Trk${it+1}" ) } diff --git a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt index 789c83fe9..33c2665c1 100644 --- a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt +++ b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt @@ -64,6 +64,48 @@ class Lowpass(cutoff0: Float, val rate: Int): TerrarumAudioFilter() { } + +class Highpass(cutoff0: Float, val rate: Int): TerrarumAudioFilter() { + + var cutoff = cutoff0.toDouble(); private set + private var alpha: Float = 0f + + init { + setCutoff(cutoff0) + } + + fun setCutoff(cutoff: Float) { +// println("LP Cutoff: $cutoff") + val RC: Float = 1f / (cutoff * FastMath.TWO_PI) + val dt: Float = 1f / rate + alpha = dt / (RC + dt) + this.cutoff = cutoff.toDouble() + } + + fun setCutoff(cutoff: Double) { +// println("LP Cutoff: $cutoff") + val RC: Double = 1.0 / (cutoff * Math.PI * 2.0) + val dt: Double = 1.0 / rate + alpha = (dt / (RC + dt)).toFloat() + this.cutoff = cutoff + } + + override fun thru(inbuf0: List, inbuf1: List, outbuf0: List, outbuf1: List) { + for (ch in outbuf1.indices) { + val out = outbuf1[ch] + val inn = inbuf1[ch] + + out[0] = outbuf0[ch].last() + + for (i in 1 until outbuf1[ch].size) { + out[i] = inn[i] - inn[i-1] + (alpha * out[i-1]) // this actually works but setCutoff need to be changed + } + } + } + +} + + object Buffer : TerrarumAudioFilter() { init { bypass = true