mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-19 06:54:05 +09:00
BUFFER_SIZE is now strictly samples count
This commit is contained in:
@@ -17,7 +17,7 @@ class BinoPan(var pan: Float, var earDist: Float = 0.18f): TerrarumAudioFilter()
|
||||
|
||||
private val PANNING_CONST = 3.0 // 3dB panning rule
|
||||
|
||||
private val delayLine = FloatArray(TerrarumAudioMixerTrack.BUFFER_SIZE / 4)
|
||||
private val delayLine = FloatArray(TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE)
|
||||
|
||||
private fun getFrom(index: Float, buf0: FloatArray, buf1: FloatArray): Float {
|
||||
val index = index.toInt() // TODO resampling
|
||||
@@ -55,7 +55,7 @@ class BinoPan(var pan: Float, var earDist: Float = 0.18f): TerrarumAudioFilter()
|
||||
}
|
||||
|
||||
for (ch in 0..1) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE / 4) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
outbuf[ch][i] = getFrom(i - delays[ch], delayLine, inbuf[0]) * mults[ch]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ 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) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
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
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package net.torvald.terrarum.audio.dsp
|
||||
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.terrarum.App.measureDebugTime
|
||||
import net.torvald.terrarum.App.setDebugTime
|
||||
import net.torvald.terrarum.audio.*
|
||||
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.BUFFER_SIZE
|
||||
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack.Companion.AUDIO_BUFFER_SIZE
|
||||
import java.io.File
|
||||
|
||||
class Convolv(ir: File, val gain: Float = 1f / 256f): TerrarumAudioFilter() {
|
||||
@@ -13,7 +12,7 @@ class Convolv(ir: File, val gain: Float = 1f / 256f): TerrarumAudioFilter() {
|
||||
private val convFFT: Array<ComplexArray>
|
||||
private val inbuf: Array<ComplexArray>
|
||||
|
||||
private val BLOCKSIZE = TerrarumAudioMixerTrack.BUFFER_SIZE / 4
|
||||
private val BLOCKSIZE = TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE
|
||||
|
||||
var processingSpeed = 1f; private set
|
||||
|
||||
@@ -60,7 +59,7 @@ class Convolv(ir: File, val gain: Float = 1f / 256f): TerrarumAudioFilter() {
|
||||
|
||||
// fill up part* dictionary
|
||||
// define "master" array
|
||||
var c = BUFFER_SIZE / 4
|
||||
var c = AUDIO_BUFFER_SIZE
|
||||
val master0 = arrayListOf(c)
|
||||
while (c < fftLen) {
|
||||
master0.add(c)
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.torvald.terrarum.audio.TerrarumAudioMixerTrack
|
||||
|
||||
class Gain(var gain: Float): TerrarumAudioFilter() {
|
||||
override fun thru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE / 4) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
outbuf[0][i] = inbuf[0][i] * gain
|
||||
outbuf[1][i] = inbuf[1][i] * gain
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class Reverb(val delayMS: Float = 36f, var feedback: Float = 0.92f, var lowpass:
|
||||
val alphaHi = RCHi / (RCHi + dt)
|
||||
|
||||
for (ch in outbuf.indices) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE / 4) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
val inn = inbuf[ch][i]
|
||||
|
||||
// reverb
|
||||
|
||||
@@ -4,10 +4,10 @@ import net.torvald.terrarum.audio.TerrarumAudioMixerTrack
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class Scope : TerrarumAudioFilter() {
|
||||
val backbufL = Array((4096f / TerrarumAudioMixerTrack.BUFFER_SIZE * 4).roundToInt().coerceAtLeast(1)) { FloatArray(
|
||||
TerrarumAudioMixerTrack.BUFFER_SIZE / 4) }
|
||||
val backbufR = Array((4096f / TerrarumAudioMixerTrack.BUFFER_SIZE * 4).roundToInt().coerceAtLeast(1)) { FloatArray(
|
||||
TerrarumAudioMixerTrack.BUFFER_SIZE / 4) }
|
||||
val backbufL = Array((4096f / TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE).roundToInt().coerceAtLeast(1)) { FloatArray(
|
||||
TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) }
|
||||
val backbufR = Array((4096f / TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE).roundToInt().coerceAtLeast(1)) { FloatArray(
|
||||
TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) }
|
||||
|
||||
private val sqrt2p = 0.7071067811865475
|
||||
|
||||
@@ -17,11 +17,11 @@ class Scope : TerrarumAudioFilter() {
|
||||
backbufL[i] = backbufL[i - 1]
|
||||
backbufR[i] = backbufR[i - 1]
|
||||
}
|
||||
backbufL[0] = FloatArray(TerrarumAudioMixerTrack.BUFFER_SIZE / 4)
|
||||
backbufR[0] = FloatArray(TerrarumAudioMixerTrack.BUFFER_SIZE / 4)
|
||||
backbufL[0] = FloatArray(TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE)
|
||||
backbufR[0] = FloatArray(TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE)
|
||||
|
||||
// plot dots
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE /4) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
val y0 = inbuf[0][i] * 0.7
|
||||
val x0 = -inbuf[1][i] * 0.7 // rotate the domain by -90 deg
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.torvald.terrarum.audio.TerrarumAudioMixerTrack
|
||||
|
||||
object XYtoMS: TerrarumAudioFilter() {
|
||||
override fun thru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE / 4) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
val X = inbuf[0][i]
|
||||
val Y = inbuf[1][i]
|
||||
val M = (X + Y) / 2f
|
||||
@@ -17,7 +17,7 @@ object XYtoMS: TerrarumAudioFilter() {
|
||||
|
||||
object MStoXY: TerrarumAudioFilter() {
|
||||
override fun thru(inbuf: List<FloatArray>, outbuf: List<FloatArray>) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.BUFFER_SIZE / 4) {
|
||||
for (i in 0 until TerrarumAudioMixerTrack.AUDIO_BUFFER_SIZE) {
|
||||
val M = inbuf[0][i]
|
||||
val S = inbuf[1][i]
|
||||
val X = M + S
|
||||
|
||||
Reference in New Issue
Block a user