From 2ca6b2039ac3518db87fc1380cfa843a24c9bd45 Mon Sep 17 00:00:00 2001 From: Hasinjato Date: Wed, 7 Oct 2026 16:04:27 +0300 Subject: [PATCH] Resolve default dynamic to ZERO 1.0 on MidiPlayer --- .../kotlin/mg/dot/feufaro/midi/MidiPlayer.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt index 9fff707..5a9138d 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt @@ -141,7 +141,7 @@ actual class FMediaPlayer actual constructor( private var tempoChangeJob: Job? = null private val voiceVolumes = FloatArray(4) { 127f } private var currentGlobalVolume: Float = 0.8f - private var currentDynamicFactor: Float = Dynamic.MF.factor + private var currentDynamicFactor: Float = Dynamic.ZERO.factor private var transpositionSemitones: Int = 0 private var pointA: Long = -1L @@ -225,7 +225,7 @@ actual class FMediaPlayer actual constructor( } } private fun applyDynamic(dynamic: Dynamic) { - applyDynamicSmooth(if (dynamic == Dynamic.MF) 1.0f else dynamic.factor, 300L) + applyDynamicSmooth(dynamic.factor, 300L) } private fun applyDynamicSmooth(targetFactor: Float, durationMs: Long = 300L) { dynamicJob?.cancel() @@ -306,7 +306,7 @@ actual class FMediaPlayer actual constructor( it.label == marker.trim().removeSuffix("=").trim() } fun factorToDynamic(factor: Float) = - Dynamic.entries.minByOrNull { kotlin.math.abs(it.factor - factor) } ?: Dynamic.MF + Dynamic.entries.minByOrNull { kotlin.math.abs(it.factor - factor) } ?: Dynamic.ZERO fun nextDynamic(currentFactor: Float, symbol: Char): Float { val idx = Dynamic.entries.indexOf(factorToDynamic(currentFactor)) return if (symbol == '<') Dynamic.entries.getOrElse(idx+1){Dynamic.FFF}.factor @@ -442,8 +442,8 @@ actual class FMediaPlayer actual constructor( sharedScreenModel.setBpmFlow(initialOrPreviousBpm) val lastDyn = navigationSteps .filter { it.dynamic != null && it.gridIndex <= gridIndex } - .maxByOrNull { it.gridIndex }?.dynamic ?: Dynamic.MF - currentDynamicFactor = if (lastDyn == Dynamic.MF) 1.0f else lastDyn.factor + .maxByOrNull { it.gridIndex }?.dynamic ?: Dynamic.ZERO + currentDynamicFactor = lastDyn.factor navigationSteps.forEach { step -> if (step.gridIndex > gridIndex) { if (step.isFarany) { @@ -472,7 +472,7 @@ actual class FMediaPlayer actual constructor( val metadataList = sharedScreenModel.getFullMarkers() navigationSteps.clear() var lastSegno=0; - var lastFactor=Dynamic.MF.factor + var lastFactor=Dynamic.ZERO.factor val ritRegex = Regex("""rit\.?|ritard\.?|ritenuto\.?|ritardando""", RegexOption.IGNORE_CASE) val rallRegex = Regex("""rall\.?|rallent\.?|rallentando""", RegexOption.IGNORE_CASE) val dsR = Regex("""D\.?S\.?"""); @@ -619,7 +619,7 @@ actual class FMediaPlayer actual constructor( extractDynamic(marker) != null && mTrim != "=" -> { val dyn = extractDynamic(marker) ?: return@forEach - lastFactor = if(dyn==Dynamic.MF) 1.0f else dyn.factor + lastFactor = dyn.factor navigationSteps.add(NavigationStep(marker=marker, gridIndex=ci, dynamic=dyn)) } @@ -928,7 +928,7 @@ actual class FMediaPlayer actual constructor( playJob?.cancel(); navigationJob?.cancel() allNotesOff(); currentTickPos = 0L resetNavigationFlags(); navigationSteps.clear(); clearLoop() - currentDynamicFactor = Dynamic.MF.factor + currentDynamicFactor = Dynamic.ZERO.factor //resetTempoToNormal() currentPlaybackBpm = targetBpm usPerTick = (60_000_000.0 / targetBpm.toDouble()) / resolution.toDouble()