mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-19 06:54:05 +09:00
audio filters moved to its own files
This commit is contained in:
17
src/net/torvald/terrarum/audio/dsp/Bitcrush.kt
Normal file
17
src/net/torvald/terrarum/audio/dsp/Bitcrush.kt
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.torvald.terrarum.audio.dsp
|
||||
|
||||
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack
|
||||
import net.torvald.terrarum.roundToFloat
|
||||
|
||||
class Bitcrush(var steps: Int, var inputGain: Float = 1f): TerrarumAudioFilter() {
|
||||
override fun thru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
|
||||
for (ch in outbuf.indices) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE / 4) {
|
||||
val inn = ((inbuf[ch][i] * inputGain).coerceIn(-1f, 1f) + 1f) / 2f // 0f..1f
|
||||
val stepped = (inn * (steps - 1)).roundToFloat() / (steps - 1)
|
||||
val out = (stepped * 2f) - 1f // -1f..1f
|
||||
outbuf[ch][i] = out
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user