more audio device things

This commit is contained in:
minjaesong
2023-11-17 17:24:59 +09:00
parent 8826119f79
commit 95500053fb
17 changed files with 125 additions and 67 deletions

View File

@@ -75,13 +75,17 @@ class TerrarumAudioMixerTracks(val isMaster: Boolean = false): Disposable {
it.isAccessible = true
it.get(Gdx.audio) as Int
}
private val adev = OpenALBufferedAudioDevice(
Gdx.audio as OpenALLwjgl3Audio,
SAMPLING_RATE,
false,
deviceBufferSize,
deviceBufferCount
) {}
private val adev: OpenALBufferedAudioDevice? =
if (isMaster) {
OpenALBufferedAudioDevice(
Gdx.audio as OpenALLwjgl3Audio,
SAMPLING_RATE,
false,
deviceBufferSize,
deviceBufferCount
) {}
}
else null
/**
@@ -104,7 +108,7 @@ class TerrarumAudioMixerTracks(val isMaster: Boolean = false): Disposable {
get() = currentTrack?.gdxMusic?.isPlaying
override fun dispose() {
adev.dispose()
adev?.dispose()
}
override fun equals(other: Any?) = this.hash == (other as TerrarumAudioMixerTracks).hash
@@ -158,12 +162,21 @@ class TerrarumAudioMixerTracks(val isMaster: Boolean = false): Disposable {
}
}
else {
adev!!.writeSamples(interleave(samplesL1, samplesR1), 0, samplesL1.size * 2)
withContext(Dispatchers.IO) {
Thread.sleep(12)
}
getSidechains().forEach {
it?.processContinuation?.resume(Unit)
}
}
}
}
private fun interleave(f1: FloatArray, f2: FloatArray) = FloatArray(f1.size + f2.size) {
if (it % 2 == 0) f1[it / 2] else f2[it / 2]
}
}
fun fullscaleToDecibels(fs: Double) = 10.0 * log10(fs)