mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-17 22:14:05 +09:00
scope view on mixer
This commit is contained in:
@@ -97,6 +97,7 @@ object AudioMixer: Disposable {
|
||||
init {
|
||||
masterTrack.filters[0] = SoftLim
|
||||
masterTrack.filters[1] = Buffer
|
||||
masterTrack.filters[2] = Scope
|
||||
|
||||
fadeBus.addSidechainInput(musicTrack, 1.0)
|
||||
fadeBus.addSidechainInput(ambientTrack, 1.0)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.torvald.terrarum.audio
|
||||
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.BUFFER_SIZE
|
||||
import kotlin.math.tanh
|
||||
|
||||
abstract class TerrarumAudioFilter {
|
||||
@@ -37,6 +38,40 @@ object SoftLim : TerrarumAudioFilter() {
|
||||
}
|
||||
}
|
||||
|
||||
object Scope : TerrarumAudioFilter() {
|
||||
val backbufL = Array(8) { FloatArray(BUFFER_SIZE / 4) }
|
||||
val backbufR = Array(8) { FloatArray(BUFFER_SIZE / 4) }
|
||||
|
||||
private val sqrt2p = 0.7071067811865476
|
||||
|
||||
override fun thru(inbuf0: List<FloatArray>, inbuf1: List<FloatArray>, outbuf0: List<FloatArray>, outbuf1: List<FloatArray>) {
|
||||
// shift buffer
|
||||
for (i in backbufL.lastIndex downTo 1) {
|
||||
backbufL[i] = backbufL[i - 1]
|
||||
backbufR[i] = backbufR[i - 1]
|
||||
}
|
||||
backbufL[0] = FloatArray(BUFFER_SIZE / 4)
|
||||
backbufR[0] = FloatArray(BUFFER_SIZE / 4)
|
||||
|
||||
// plot dots
|
||||
for (i in 0 until BUFFER_SIZE/4) {
|
||||
val x0 = inbuf1[0][i] * 0.7
|
||||
val y0 = inbuf1[1][i] * 0.7
|
||||
|
||||
val x = (x0*sqrt2p + y0*sqrt2p) * 1.414
|
||||
val y = (x0*sqrt2p - y0*sqrt2p) * 1.414
|
||||
|
||||
backbufL[0][i] = x.toFloat()
|
||||
backbufR[0][i] = y.toFloat()
|
||||
}
|
||||
|
||||
// copy samples over
|
||||
outbuf1.forEachIndexed { index, outTrack ->
|
||||
System.arraycopy(inbuf1[index], 0, outTrack, 0, outTrack.size)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Lowpass(cutoff0: Float, val rate: Int): TerrarumAudioFilter() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user