music track resampling

This commit is contained in:
minjaesong
2023-12-11 03:35:03 +09:00
parent cc7f7b11d8
commit 949376b26a
6 changed files with 133 additions and 7 deletions

View File

@@ -1,11 +1,16 @@
package net.torvald.terrarum.audio
import com.badlogic.gdx.backends.lwjgl3.audio.Mp3
import com.badlogic.gdx.utils.Queue
import javazoom.jl.decoder.Bitstream
import javazoom.jl.decoder.MP3Decoder
import net.torvald.reflection.extortField
import net.torvald.reflection.forceInvoke
import net.torvald.terrarum.App
import net.torvald.terrarum.audio.dsp.BinoPan
import net.torvald.terrarum.audio.dsp.NullFilter
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.printStackTrace
import net.torvald.terrarum.relativeXposition
import net.torvald.terrarum.sqr
import kotlin.math.*
@@ -44,11 +49,17 @@ class MixerTrackProcessor(val bufferSize: Int, val rate: Int, val track: Terraru
}
private fun allocateStreamBuf(track: TerrarumAudioMixerTrack) {
printdbg("Allocating a StreamBuf with rate ${track.currentTrack!!.samplingRate}")
streamBuf = AudioProcessBuf(track.currentTrack!!.samplingRate, {
track.currentTrack?.gdxMusic?.forceInvoke<Int>("read", arrayOf(it))
val l = track.currentTrack?.gdxMusic?.forceInvoke<Int>("read", arrayOf(it))
track.currentTrack?.let {
it.samplesRead += l!! / 4
}
l
}, {
track.stop()
this.streamBuf = null
printdbg("StreamBuf is now null")
})
}