mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
bandpass dsp
This commit is contained in:
48
src/net/torvald/terrarum/audio/dsp/Bandpass.kt
Normal file
48
src/net/torvald/terrarum/audio/dsp/Bandpass.kt
Normal file
@@ -0,0 +1,48 @@
|
||||
package net.torvald.terrarum.audio.dsp
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.ui.BasicDebugInfoWindow.Companion.FILTER_NAME_ACTIVE
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2024-12-22.
|
||||
*/
|
||||
class Bandpass(cutoffLo0: Float, cutoffHi0: Float): TerrarumAudioFilter() {
|
||||
|
||||
private val LP = Lowpass(cutoffHi0)
|
||||
private val HP = Highpass(cutoffLo0)
|
||||
|
||||
private var midbufLen = App.audioBufferSize
|
||||
private var midbuf: List<FloatArray> = listOf(FloatArray(midbufLen), FloatArray(midbufLen))
|
||||
|
||||
override fun thru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
|
||||
if (inbuf[0].size != midbufLen) {
|
||||
midbufLen = inbuf[0].size
|
||||
midbuf = listOf(FloatArray(midbufLen), FloatArray(midbufLen))
|
||||
}
|
||||
|
||||
HP.thru(inbuf, midbuf)
|
||||
LP.thru(midbuf, outbuf)
|
||||
}
|
||||
|
||||
override fun drawDebugView(batch: SpriteBatch, x: Int, y: Int) {
|
||||
// val perc = linToLogPerc(cutoff, 24.0, 24000.0).toFloat()
|
||||
// batch.color = COL_METER_GRAD2
|
||||
// Toolkit.fillArea(batch, x.toFloat(), y.toFloat(), BasicDebugInfoWindow.STRIP_W * perc, 14f)
|
||||
// batch.color = COL_METER_GRAD
|
||||
// Toolkit.fillArea(batch, x.toFloat(), y+14f, BasicDebugInfoWindow.STRIP_W * perc, 2f)
|
||||
|
||||
batch.color = FILTER_NAME_ACTIVE
|
||||
App.fontSmallNumbers.draw(batch, "FL:${HP.cutoff.toInt()}", x+3f, y+1f)
|
||||
App.fontSmallNumbers.draw(batch, "FH:${LP.cutoff.toInt()}", x+3f, y+17f)
|
||||
}
|
||||
|
||||
override val debugViewHeight = 32
|
||||
|
||||
override fun copyParamsFrom(other: TerrarumAudioFilter) {
|
||||
if (other is Bandpass) {
|
||||
other.LP.setCutoff(this.LP.cutoff)
|
||||
other.HP.setCutoff(this.HP.cutoff)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user