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 51a3a51..c42de51 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt @@ -132,8 +132,8 @@ actual class FMediaPlayer actual constructor( @Volatile private var isHolding = false private var currentTickPos: Long = 0L private var lastEventNano: Long = System.nanoTime() - private var targetBpm: Float = 120f - private var initialBpm: Float = 120f + private var targetBpm: Float = sharedScreenModel.currentBpmFlow.value + private var initialBpm: Float = sharedScreenModel.currentBpmFlow.value @Volatile private var currentPlaybackBpm: Float = 120f @Volatile private var isInTempoChange: Boolean = false diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index 44104ad..58b8459 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -242,6 +242,8 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository parseOneLine(line) } } + val songBpm = meta["p"]?.toFloatOrNull() ?: 120f + sharedScreenModel.setBpmFlow(songBpm) unparsedNote.forEach { preloadN(it) } @@ -278,10 +280,11 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository ) val originalKey = sharedScreenModel.songKey.value val transposedKey = Transpose.transposeKey(baseKey = originalKey, interval = transpI) + val initialSongBpm = meta["p"]?.toFloatOrNull() ?: bpm midiWriter.process( pitchesSorted, sharedScreenModel.getFullMarkers(), - initialBpm = bpm, + initialBpm = initialSongBpm, instruments, initialKey = transposedKey ) diff --git a/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt index 976f3c5..03472cd 100644 --- a/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt +++ b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt @@ -35,8 +35,8 @@ actual class FMediaPlayer actual constructor( private var currentDynamicVelocity: Int = Dynamic.MF.velocity private var currentDynamicFactor: Float = Dynamic.MF.factor - private var targetBpm: Float = 120f - private var initialBpm: Float = 120f + private var targetBpm: Float = sharedScreenModel.currentBpmFlow.value + private var initialBpm: Float = sharedScreenModel.currentBpmFlow.value private val playerScope = CoroutineScope(Dispatchers.Default + SupervisorJob()) private var abJob: Job? = null