From 73a47c350af71fcbb43a3f894023c1dab235d813 Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Thu, 14 Dec 2023 03:47:42 +0800 Subject: [PATCH] Fix bugs --- .../kotlin/com/eimsound/daw/impl/processor/TrackImpl.kt | 3 ++- dsp/src/commonMain/kotlin/com/eimsound/dsp/BPMDetector.kt | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/daw/src/jvmMain/kotlin/com/eimsound/daw/impl/processor/TrackImpl.kt b/daw/src/jvmMain/kotlin/com/eimsound/daw/impl/processor/TrackImpl.kt index 984c47c5..e0a9f706 100644 --- a/daw/src/jvmMain/kotlin/com/eimsound/daw/impl/processor/TrackImpl.kt +++ b/daw/src/jvmMain/kotlin/com/eimsound/daw/impl/processor/TrackImpl.kt @@ -121,7 +121,8 @@ open class TrackImpl(description: AudioProcessorDescription, factory: TrackFacto levelMeter.right = levelMeter.right.update(rightPeak) lastUpdateTime += (1000.0 * position.bufferSize / position.sampleRate).toLong() if (lastUpdateTime > 300) { - levelMeter.cachedMaxLevelString = levelMeter.maxLevel.toString() + val max = levelMeter.maxLevel + levelMeter.cachedMaxLevelString = if (max <= -60F) "inf" else max.toString() lastUpdateTime = 0 } } diff --git a/dsp/src/commonMain/kotlin/com/eimsound/dsp/BPMDetector.kt b/dsp/src/commonMain/kotlin/com/eimsound/dsp/BPMDetector.kt index df4d1060..3b60f44b 100644 --- a/dsp/src/commonMain/kotlin/com/eimsound/dsp/BPMDetector.kt +++ b/dsp/src/commonMain/kotlin/com/eimsound/dsp/BPMDetector.kt @@ -32,16 +32,18 @@ private fun findPeaks(data: LowPassedAudioSource): List { private fun findPeaksAtThreshold(data: LowPassedAudioSource, threshold: Double): List { val peaks = mutableListOf() - while (data.target.position < data.length) { + var pos = data.target.position + while (pos < data.length) { var i = 0 data.process() while (i < data.bufferSize) { if (data.data[i] > threshold) { - peaks.add(data.target.position + i) + peaks.add(pos + i) i += (data.sampleRate / 4).roundToInt() } i++ } + pos += i data.target.position += i } return peaks