debug view for dynamic tracks only

This commit is contained in:
minjaesong
2024-02-05 05:12:03 +09:00
parent 23921c7f7c
commit 17c7571915
5 changed files with 70 additions and 10 deletions

View File

@@ -16,7 +16,7 @@ object TerrarumAppConfiguration {
// CONFIGURATION FOR THE APP ITSELF //
//////////////////////////////////////
const val GAME_NAME = "Terrarum"
const val COPYRIGHT_DATE_NAME = "Copyright 2013-2024 CuriousToꝛvald (minjaesong)"
const val COPYRIGHT_DATE_NAME = "© 2013-2024 CuriousToꝛvald (minjaesong)"
val COPYRIGHT_LICENSE: String; get() = Lang["COPYRIGHT_GNU_GPL_3"]
const val COPYRIGHT_LICENSE_ENGLISH = "Distributed under GNU GPL 3"
const val COPYRIGHT_LICENSE_TERMS_SHORT = """

View File

@@ -114,7 +114,7 @@ class AudioMixer(val bufferSize: Int): Disposable {
get() = tracks[11]
val ambientTracks = arrayOf(
ambientTrack1, ambientTrack2
ambientTrack1, ambientTrack2, ambientTrack3, ambientTrack4
)
var processing = false
@@ -214,7 +214,7 @@ class AudioMixer(val bufferSize: Int): Disposable {
init {
// initialise audio paths //
listOf(musicTrack, ambientTrack1, ambientTrack2).forEach {
listOf(musicTrack, ambientTrack1, ambientTrack2, ambientTrack3, ambientTrack4).forEach {
it.filters[0] = Gain(1f)
}
@@ -228,8 +228,11 @@ class AudioMixer(val bufferSize: Int): Disposable {
ambientTracks.forEach {
it.filters[1] = Vecto(decibelsToFullscale(24.0).toFloat())
it.filters[2] = Spectro()
amb1plus2.addSidechainInput(it, 1.0)
}
amb1plus2.addSidechainInput(ambientTrack1, 1.0)
amb1plus2.addSidechainInput(ambientTrack2, 1.0)
sfxSumBus.filters[1] = Vecto(0.7071f)
sfxSumBus.filters[2] = Spectro()

View File

@@ -140,7 +140,7 @@ class BinoPan(var pan: Float, var earDist: Float = EARDIST_DEFAULT): TerrarumAud
else "R${pan.absoluteValue.times(100).toIntAndFrac(3,1)}"
App.fontSmallNumbers.draw(batch, panLabel, x+3f, y+1f)
App.fontSmallNumbers.draw(batch, "AS:${AudioMixer.SPEED_OF_SOUND.roundToInt()}", x+3f, y+17f)
App.fontSmallNumbers.draw(batch, "H:${earDist.toIntAndFrac(1,3)}", x+3f, y+17f)
}
override val debugViewHeight = 32

View File

@@ -51,6 +51,8 @@ open class LoFi(
}
private fun saturatorThru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
downForce.fill(1.0f)
for (ch in inbuf.indices) {
for (i in inbuf[ch].indices) {
val u = inbuf[ch][i]
@@ -74,9 +76,10 @@ open class LoFi(
}
override fun drawDebugView(batch: SpriteBatch, x: Int, y: Int) {
convolver.drawDebugView(batch, x, y)
}
override val debugViewHeight = 0
override val debugViewHeight = 16
override fun copyParamsFrom(other: TerrarumAudioFilter) {
this.convolver.copyParamsFrom((other as LoFi).convolver)

View File

@@ -77,11 +77,13 @@ class BasicDebugInfoWindow : UICanvas() {
private val KEY_TIMERS = Input.Keys.T // + CONTROL_LEFT
private val KEY_WEATHERS = Input.Keys.W // + CONTROL_LEFT
private val KEY_AUDIOMIXER = Input.Keys.M // + CONTROL_LEFT
private val KEY_AUDIOMIXER2 = Input.Keys.N // + CONTROL_LEFT
private val KEY_CHUNKS = Input.Keys.C // + CONTROL_LEFT
private var showTimers = false
private var showWeatherInfo = false
private var showAudioMixer = false
private var showAudioMixer2 = false
private var showChunks = false
override fun show() {
@@ -139,15 +141,45 @@ class BasicDebugInfoWindow : UICanvas() {
// toggle show-something
showTimers = showTimers xor (Gdx.input.isKeyJustPressed(KEY_TIMERS) && Gdx.input.isKeyPressed(Keys.CONTROL_LEFT))
showWeatherInfo = showWeatherInfo xor (Gdx.input.isKeyJustPressed(KEY_WEATHERS) && Gdx.input.isKeyPressed(Keys.CONTROL_LEFT))
showAudioMixer = showAudioMixer xor (Gdx.input.isKeyJustPressed(KEY_AUDIOMIXER) && Gdx.input.isKeyPressed(Keys.CONTROL_LEFT))
val _showAudioMixer = showAudioMixer xor (Gdx.input.isKeyJustPressed(KEY_AUDIOMIXER) && Gdx.input.isKeyPressed(Keys.CONTROL_LEFT))
val _showAudioMixer2 = showAudioMixer2 xor (Gdx.input.isKeyJustPressed(KEY_AUDIOMIXER2) && Gdx.input.isKeyPressed(Keys.CONTROL_LEFT))
showChunks = showChunks xor (Gdx.input.isKeyJustPressed(KEY_CHUNKS) && Gdx.input.isKeyPressed(Keys.CONTROL_LEFT))
App.audioMixer.masterTrack.filters[2].bypass = !showAudioMixer
if (showAudioMixer && _showAudioMixer2) {
showAudioMixer2 = true
showAudioMixer = false
}
else if (showAudioMixer2 && _showAudioMixer) {
showAudioMixer = true
showAudioMixer2 = false
}
else if (_showAudioMixer2 != _showAudioMixer) {
showAudioMixer = _showAudioMixer
showAudioMixer2 = _showAudioMixer2
}
else if (!_showAudioMixer && !_showAudioMixer2) {
showAudioMixer = false
showAudioMixer2 = false
}
val bypassScopes = (!showAudioMixer && !showAudioMixer2)
App.audioMixer.musicTrack.filters[1].bypass = bypassScopes
App.audioMixer.musicTrack.filters[2].bypass = bypassScopes
App.audioMixer.ambientTracks.forEach {
it.filters[1].bypass = bypassScopes
it.filters[2].bypass = bypassScopes
}
App.audioMixer.sfxSumBus.filters[1].bypass = bypassScopes
App.audioMixer.sfxSumBus.filters[2].bypass = bypassScopes
App.audioMixer.masterTrack.filters[2].bypass = bypassScopes
App.audioMixer.masterTrack.filters[3].bypass = bypassScopes
drawMain(batch)
if (showTimers) drawTimers(batch)
if (showWeatherInfo) drawWeatherInfo(batch)
if (showAudioMixer) drawAudioMixer(batch)
if (showAudioMixer2) drawAudioMixer2(batch)
if (showChunks) drawChunks(batch)
}
@@ -474,11 +506,11 @@ class BasicDebugInfoWindow : UICanvas() {
private val clippingHoldTime = 60000L * 3 // 3 mins
private fun drawAudioMixer(batch: SpriteBatch) {
val strips = App.audioMixer.tracks + App.audioMixer.masterTrack
val x = App.scr.width - 186 - (App.audioMixer.tracks.size + 1) * (STRIP_W + stripGap)
val x = App.scr.width - 186 - strips.size * (STRIP_W + stripGap)
val y = App.scr.height - 38 - stripH
val strips = App.audioMixer.tracks + App.audioMixer.masterTrack
// batch.color = COL_MIXER_BACK
// Toolkit.fillArea(batch, x - stripGap, y - stripGap, strips.size * (stripW + stripGap) + stripGap, stripH + 2*stripGap)
@@ -502,6 +534,28 @@ class BasicDebugInfoWindow : UICanvas() {
}
}
private fun drawAudioMixer2(batch: SpriteBatch) {
val strips = App.audioMixer.dynamicTracks.filter { it.isPlaying }.sortedBy { it.playStartedTime }.reversed() +
App.audioMixer.sfxSumBus + App.audioMixer.masterTrack
val x = App.scr.width - 186 - strips.size * (STRIP_W + stripGap)
val y = App.scr.height - 38 - stripH
// batch.color = COL_MIXER_BACK
// Toolkit.fillArea(batch, x - stripGap, y - stripGap, strips.size * (stripW + stripGap) + stripGap, stripH + 2*stripGap)
strips.forEachIndexed { index, track ->
// get clipping status
track.processor.hasClipping.forEachIndexed { channel, b ->
if (b) mixerLastTimeHadClipping[index][channel] = System.currentTimeMillis()
}
// draw
drawStrip(batch, x + index * (STRIP_W + stripGap), y, track, index)
}
}
private val dbOver = 6.0
private val dbLow = 60.0