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 45305a7..d9ecb8c 100644 --- a/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt +++ b/composeApp/src/desktopMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt @@ -3,13 +3,16 @@ package mg.dot.feufaro.midi import SharedScreenModel import kotlinx.coroutines.* import mg.dot.feufaro.getConfigDirectoryPath +import mg.dot.feufaro.viewmodel.MidiMarkers import java.io.File import java.util.prefs.Preferences import javax.sound.midi.MetaMessage import javax.sound.midi.MidiSystem import javax.sound.midi.Sequence import javax.sound.midi.Sequencer +import javax.sound.midi.ShortMessage import javax.sound.midi.Synthesizer +import javax.sound.midi.Track import javax.sound.sampled.AudioSystem import javax.sound.sampled.FloatControl @@ -288,10 +291,9 @@ actual class FMediaPlayer actual constructor( marker.trim().equals("Farany_GROUP_PART", ignoreCase = true) -> { val hasDcAfter = metadataList.any { (_, gi, _, _, mk, _, _, _) -> (gi ?: 0) > currentIndex && - (dcGPattern.matches(mk.trim()) || - dcRegex.matches(mk.trim())) + (dcGPattern.matches(mk.trim()) || + dcRegex.matches(mk.trim())) } - if (hasDcAfter) { navigationSteps.add( NavigationStep( @@ -482,13 +484,11 @@ actual class FMediaPlayer actual constructor( synthetizer?.channels?.forEach { it?.controlChange(64, 0) } sequencer?.tempoFactor = 1f - navigationSteps.filter { it.isFin }.forEach { faranyStep -> - if (step.gridIndex > faranyStep.gridIndex) { - faranyStep.finActive = true - faranyStep.alreadyDone = false + navigationSteps.filter { it.isFin && step.gridIndex > it.gridIndex } + .forEach { + it.finActive = true + it.alreadyDone = false } - } - if (sequencer?.isRunning == false) { sequencer?.tempoInBPM = targetBpm sequencer?.start()