mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 20:31:51 +09:00
static effect looops
This commit is contained in:
BIN
assets/mods/basegame/audio/effects/static/film_pops_lowpass.ogg
LFS
Normal file
BIN
assets/mods/basegame/audio/effects/static/film_pops_lowpass.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/audio/effects/static/phono_pops.ogg
LFS
Normal file
BIN
assets/mods/basegame/audio/effects/static/phono_pops.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/audio/effects/static/tape_hiss.ogg
LFS
Normal file
BIN
assets/mods/basegame/audio/effects/static/tape_hiss.ogg
LFS
Normal file
Binary file not shown.
@@ -32,6 +32,9 @@ class AudioMixer(val bufferSize: Int): Disposable {
|
||||
const val SPEED_OF_SOUND = 340f
|
||||
|
||||
const val DEFAULT_FADEOUT_LEN = 1.8
|
||||
|
||||
internal const val DS_FLTIDX_PAN = 2
|
||||
internal const val DS_FLTIDX_LOW = 3
|
||||
}
|
||||
|
||||
|
||||
@@ -229,11 +232,11 @@ class AudioMixer(val bufferSize: Int): Disposable {
|
||||
it.addSidechainInput(sfxSumBus, 1.0)
|
||||
}
|
||||
|
||||
convolveBusOpen.filters[1] = Convolv(ModMgr.getFile("basegame", "audio/convolution/EchoThief - PurgatoryChasm.bin"), decibelsToFullscale(-6.0).toFloat())
|
||||
convolveBusOpen.filters[1] = Convolv("basegame", "audio/convolution/EchoThief - PurgatoryChasm.bin", decibelsToFullscale(-6.0).toFloat())
|
||||
convolveBusOpen.filters[2] = Gain(decibelsToFullscale(17.0).toFloat()) // don't make it too loud; it'll sound like a shit
|
||||
convolveBusOpen.volume = 0.5 // will be controlled by the other updater which surveys the world
|
||||
|
||||
convolveBusCave.filters[1] = Convolv(ModMgr.getFile("basegame", "audio/convolution/EchoThief - WaterplacePark-trimmed.bin"), decibelsToFullscale(-3.0).toFloat())
|
||||
convolveBusCave.filters[1] = Convolv("basegame", "audio/convolution/EchoThief - WaterplacePark-trimmed.bin", decibelsToFullscale(-3.0).toFloat())
|
||||
convolveBusCave.filters[2] = Gain(decibelsToFullscale(16.0).toFloat())
|
||||
convolveBusCave.volume = 0.5 // will be controlled by the other updater which surveys the world
|
||||
|
||||
@@ -247,8 +250,8 @@ class AudioMixer(val bufferSize: Int): Disposable {
|
||||
|
||||
|
||||
dynamicTracks.forEach {
|
||||
it.filters[0] = BinoPan(0f)
|
||||
it.filters[1] = Lowpass(SAMPLING_RATE / 2f)
|
||||
it.filters[DS_FLTIDX_PAN] = BinoPan(0f)
|
||||
it.filters[DS_FLTIDX_LOW] = Lowpass(SAMPLING_RATE / 2f)
|
||||
sfxSumBus.addSidechainInput(it, 1.0)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ package net.torvald.terrarum.audio
|
||||
import com.badlogic.gdx.utils.Queue
|
||||
import net.torvald.reflection.forceInvoke
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.audio.AudioMixer.Companion.DS_FLTIDX_LOW
|
||||
import net.torvald.terrarum.audio.AudioMixer.Companion.DS_FLTIDX_PAN
|
||||
import net.torvald.terrarum.audio.AudioMixer.Companion.SPEED_OF_SOUND_AIR
|
||||
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.SAMPLING_RATE
|
||||
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.SAMPLING_RATED
|
||||
@@ -117,22 +119,22 @@ class MixerTrackProcessor(bufferSize: Int, val rate: Int, val track: TerrarumAud
|
||||
|
||||
// update panning and shits
|
||||
if (track.trackType == TrackType.DYNAMIC_SOURCE && track.isPlaying) {
|
||||
(track.filters[0] as BinoPan).earDist = App.audioMixer.listenerHeadSize
|
||||
(track.filters[DS_FLTIDX_PAN] as BinoPan).earDist = App.audioMixer.listenerHeadSize
|
||||
|
||||
if (App.audioMixer.actorNowPlaying != null) {
|
||||
if (track.trackingTarget == null || track.trackingTarget == App.audioMixer.actorNowPlaying) {
|
||||
// "reset" the track
|
||||
track.volume = track.maxVolume
|
||||
(track.filters[0] as BinoPan).pan = 0f
|
||||
(track.filters[1] as Lowpass).setCutoff(SAMPLING_RATE / 2f)
|
||||
(track.filters[DS_FLTIDX_PAN] as BinoPan).pan = 0f
|
||||
(track.filters[DS_FLTIDX_LOW] as Lowpass).setCutoff(SAMPLING_RATE / 2f)
|
||||
}
|
||||
else if (track.trackingTarget is ActorWithBody) {
|
||||
val relativeXpos = relativeXposition(App.audioMixer.actorNowPlaying!!, track.trackingTarget as ActorWithBody)
|
||||
val distFromActor = distBetweenActors(App.audioMixer.actorNowPlaying!!, track.trackingTarget as ActorWithBody)
|
||||
val vol = track.maxVolume * getVolFun(distFromActor / distFalloff).coerceAtLeast(0.0)
|
||||
track.volume = vol
|
||||
(track.filters[0] as BinoPan).pan = (1.3f * relativeXpos / distFalloff).toFloat()
|
||||
(track.filters[1] as Lowpass).setCutoff(
|
||||
(track.filters[DS_FLTIDX_PAN] as BinoPan).pan = (1.3f * relativeXpos / distFalloff).toFloat()
|
||||
(track.filters[DS_FLTIDX_LOW] as Lowpass).setCutoff(
|
||||
(SAMPLING_RATED*0.5) / (24.0 * (distFromActor / distFalloff).sqr() + 1.0)
|
||||
)
|
||||
|
||||
@@ -155,8 +157,8 @@ class MixerTrackProcessor(bufferSize: Int, val rate: Int, val track: TerrarumAud
|
||||
else {
|
||||
// "reset" the track
|
||||
track.volume = track.maxVolume
|
||||
(track.filters[0] as BinoPan).pan = 0f
|
||||
(track.filters[1] as Lowpass).setCutoff(SAMPLING_RATE / 2f)
|
||||
(track.filters[DS_FLTIDX_PAN] as BinoPan).pan = 0f
|
||||
(track.filters[DS_FLTIDX_LOW] as Lowpass).setCutoff(SAMPLING_RATE / 2f)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.torvald.reflection.forceInvoke
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.audio.AudioHelper
|
||||
import net.torvald.terrarum.audio.AudioProcessBuf.Companion.MP3_CHUNK_SIZE
|
||||
import net.torvald.terrarum.audio.decibelsToFullscale
|
||||
import net.torvald.terrarum.serialise.toUint
|
||||
import java.io.File
|
||||
import kotlin.math.absoluteValue
|
||||
@@ -43,8 +44,8 @@ open class LoFi(
|
||||
|
||||
private fun staticMixThru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
|
||||
for (h in 0 until App.audioBufferSize) {
|
||||
outbuf[0][h] = inbuf[0][h] + staticSample[0][staticSamplePlayCursor]
|
||||
outbuf[1][h] = inbuf[1][h] + staticSample[1][staticSamplePlayCursor]
|
||||
outbuf[0][h] = inbuf[0][h] + staticSample[0][staticSamplePlayCursor] * 2.512f // +8 dB
|
||||
outbuf[1][h] = inbuf[1][h] + staticSample[1][staticSamplePlayCursor] * 2.512f // +8 dB
|
||||
staticSamplePlayCursor = (staticSamplePlayCursor + 1) % staticSample[0].size
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,6 @@ class Tape(irModule: String, irPath: String, crossfeed: Float, gain: Float) : Lo
|
||||
* Created by minjaesong on 2024-01-24.
|
||||
*/
|
||||
class Holo(irModule: String, irPath: String, crossfeed: Float, gain: Float) : LoFi(
|
||||
"basegame", "audio/effects/static/film_pops.ogg",
|
||||
"basegame", "audio/effects/static/film_pops_lowpass.ogg",
|
||||
irModule, irPath, crossfeed, gain
|
||||
)
|
||||
@@ -42,7 +42,7 @@ class FixtureJukebox : Electric, PlaysMusic {
|
||||
|
||||
@Transient private val backLamp: SheetSpriteAnimation
|
||||
|
||||
@Transient private val filterIndex = 2
|
||||
@Transient private val filterIndex = 0
|
||||
|
||||
internal val discInventory = ArrayList<ItemID>()
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import net.torvald.terrarum.Terrarum.mouseTileY
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
|
||||
import net.torvald.terrarum.audio.*
|
||||
import net.torvald.terrarum.audio.AudioMixer.Companion.DS_FLTIDX_PAN
|
||||
import net.torvald.terrarum.audio.dsp.*
|
||||
import net.torvald.terrarum.controller.TerrarumController
|
||||
import net.torvald.terrarum.gameworld.GameWorld
|
||||
@@ -519,7 +520,7 @@ class BasicDebugInfoWindow : UICanvas() {
|
||||
Toolkit.fillArea(batch, x, y, miniW, miniH)
|
||||
|
||||
// pan
|
||||
val panw = (track.filters[0] as BinoPan).pan * 0.5f * miniW
|
||||
val panw = (track.filters[DS_FLTIDX_PAN] as BinoPan).pan * 0.5f * miniW
|
||||
batch.color = COL_METER_GRAD
|
||||
Toolkit.fillArea(batch, x.toFloat(), y.toFloat(), miniW.toFloat(), 2f)
|
||||
batch.color = COL_METER_GRAD2
|
||||
|
||||
Reference in New Issue
Block a user