From 62e45d3281b9b8909ccc5f94f32ac675b9be25b9 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 11 Jan 2024 15:07:23 +0900 Subject: [PATCH] improved audio source threading --- src/net/torvald/terrarum/audio/AudioMixer.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/net/torvald/terrarum/audio/AudioMixer.kt b/src/net/torvald/terrarum/audio/AudioMixer.kt index 7c47ddda5..a326d5945 100644 --- a/src/net/torvald/terrarum/audio/AudioMixer.kt +++ b/src/net/torvald/terrarum/audio/AudioMixer.kt @@ -6,11 +6,13 @@ import com.badlogic.gdx.backends.lwjgl3.audio.Lwjgl3Audio import com.badlogic.gdx.utils.Disposable import com.jme3.math.FastMath import net.torvald.terrarum.* +import net.torvald.terrarum.App.THREAD_COUNT import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.SAMPLING_RATE import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.SAMPLING_RATED import net.torvald.terrarum.audio.dsp.* import net.torvald.terrarum.concurrent.ThreadExecutor +import net.torvald.terrarum.concurrent.sliceEvenly import net.torvald.terrarum.modulebasegame.BuildingMaker import net.torvald.terrarum.modulebasegame.MusicContainer import java.lang.Thread.MAX_PRIORITY @@ -214,13 +216,13 @@ object AudioMixer: Disposable { sfxSumBus.addSidechainInput(it, 1.0) } - parallelProcessingSchedule = arrayOf( - arrayOf(musicTrack, ambientTrack, guiTrack), - dynamicTracks, - arrayOf(sfxSumBus, sumBus, convolveBusOpen, convolveBusCave), - arrayOf(fadeBus), + parallelProcessingSchedule = + arrayOf(musicTrack, ambientTrack, guiTrack).sliceEvenly(THREAD_COUNT / 2).toTypedArray() + + dynamicTracks.sliceEvenly(THREAD_COUNT / 2).toTypedArray() + + arrayOf(sfxSumBus, sumBus, convolveBusOpen, convolveBusCave).sliceEvenly(THREAD_COUNT / 2).toTypedArray() + + arrayOf(fadeBus) + arrayOf(masterTrack) - ) + processingThread.priority = MAX_PRIORITY // higher = more predictable; audio delay is very noticeable so it gets high priority processingThread.start()