diff --git a/src/net/torvald/terrarum/audio/AudioMixer.kt b/src/net/torvald/terrarum/audio/AudioMixer.kt index aa957e860..0d929b670 100644 --- a/src/net/torvald/terrarum/audio/AudioMixer.kt +++ b/src/net/torvald/terrarum/audio/AudioMixer.kt @@ -20,6 +20,11 @@ import kotlin.math.* * Created by minjaesong on 2023-11-07. */ object AudioMixer: Disposable { + var SPEED_OF_SOUND = 340f + + const val SPEED_OF_SOUND_AIR = 340f + const val SPEED_OF_SOUND_WATER = 1480f + const val DEFAULT_FADEOUT_LEN = 1.8 val masterVolume: Double diff --git a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt index 2633d7ade..7f0b27195 100644 --- a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt +++ b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.audio import com.jme3.math.FastMath import com.jme3.math.FastMath.sin +import net.torvald.terrarum.audio.AudioMixer.SPEED_OF_SOUND import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.BUFFER_SIZE import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.SAMPLING_RATEF import kotlin.math.absoluteValue @@ -187,7 +188,7 @@ object Buffer : TerrarumAudioFilter() { * @param soundSpeed speed of the sound in meters per seconds * @param earDist distance between ears in meters */ -class BinoPan(var pan: Float, var soundSpeed: Float = 340f, var earDist: Float = 0.18f): TerrarumAudioFilter() { +class BinoPan(var pan: Float, var earDist: Float = 0.18f): TerrarumAudioFilter() { private val PANNING_CONST = 3.0 // 3dB panning rule @@ -203,7 +204,7 @@ class BinoPan(var pan: Float, var soundSpeed: Float = 340f, var earDist: Float = override fun thru(inbuf0: List, inbuf1: List, outbuf0: List, outbuf1: List ) { val angle = pan * 1.5707963f - val timeDiffMax = earDist / soundSpeed * SAMPLING_RATEF + val timeDiffMax = earDist / SPEED_OF_SOUND * SAMPLING_RATEF val delayInSamples = (timeDiffMax * sin(angle)).absoluteValue val volMultDbThis = PANNING_CONST * pan.absoluteValue val volMultFsThis = decibelsToFullscale(volMultDbThis).toFloat() diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index febf29c8c..3b0918283 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -621,7 +621,7 @@ class BasicDebugInfoWindow : UICanvas() { else "R${filter.pan.absoluteValue.times(100).toIntAndFrac(3,1)}" App.fontSmallNumbers.draw(batch, panLabel, x+3f, y+1f) - App.fontSmallNumbers.draw(batch, "AS:${filter.soundSpeed.roundToInt()}", x+3f, y+17f) + App.fontSmallNumbers.draw(batch, "AS:${AudioMixer.SPEED_OF_SOUND.roundToInt()}", x+3f, y+17f) } is Buffer -> { batch.color = FILTER_NAME_ACTIVE