Resolve default dynamic to ZERO 1.0 on MidiPlayer
This commit is contained in:
parent
38edfe4834
commit
2ca6b2039a
1 changed files with 8 additions and 8 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue