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 var tempoChangeJob: Job? = null
|
||||||
private val voiceVolumes = FloatArray(4) { 127f }
|
private val voiceVolumes = FloatArray(4) { 127f }
|
||||||
private var currentGlobalVolume: Float = 0.8f
|
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 transpositionSemitones: Int = 0
|
||||||
|
|
||||||
private var pointA: Long = -1L
|
private var pointA: Long = -1L
|
||||||
|
|
@ -225,7 +225,7 @@ actual class FMediaPlayer actual constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private fun applyDynamic(dynamic: Dynamic) {
|
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) {
|
private fun applyDynamicSmooth(targetFactor: Float, durationMs: Long = 300L) {
|
||||||
dynamicJob?.cancel()
|
dynamicJob?.cancel()
|
||||||
|
|
@ -306,7 +306,7 @@ actual class FMediaPlayer actual constructor(
|
||||||
it.label == marker.trim().removeSuffix("=").trim()
|
it.label == marker.trim().removeSuffix("=").trim()
|
||||||
}
|
}
|
||||||
fun factorToDynamic(factor: Float) =
|
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 {
|
fun nextDynamic(currentFactor: Float, symbol: Char): Float {
|
||||||
val idx = Dynamic.entries.indexOf(factorToDynamic(currentFactor))
|
val idx = Dynamic.entries.indexOf(factorToDynamic(currentFactor))
|
||||||
return if (symbol == '<') Dynamic.entries.getOrElse(idx+1){Dynamic.FFF}.factor
|
return if (symbol == '<') Dynamic.entries.getOrElse(idx+1){Dynamic.FFF}.factor
|
||||||
|
|
@ -442,8 +442,8 @@ actual class FMediaPlayer actual constructor(
|
||||||
sharedScreenModel.setBpmFlow(initialOrPreviousBpm)
|
sharedScreenModel.setBpmFlow(initialOrPreviousBpm)
|
||||||
val lastDyn = navigationSteps
|
val lastDyn = navigationSteps
|
||||||
.filter { it.dynamic != null && it.gridIndex <= gridIndex }
|
.filter { it.dynamic != null && it.gridIndex <= gridIndex }
|
||||||
.maxByOrNull { it.gridIndex }?.dynamic ?: Dynamic.MF
|
.maxByOrNull { it.gridIndex }?.dynamic ?: Dynamic.ZERO
|
||||||
currentDynamicFactor = if (lastDyn == Dynamic.MF) 1.0f else lastDyn.factor
|
currentDynamicFactor = lastDyn.factor
|
||||||
navigationSteps.forEach { step ->
|
navigationSteps.forEach { step ->
|
||||||
if (step.gridIndex > gridIndex) {
|
if (step.gridIndex > gridIndex) {
|
||||||
if (step.isFarany) {
|
if (step.isFarany) {
|
||||||
|
|
@ -472,7 +472,7 @@ actual class FMediaPlayer actual constructor(
|
||||||
val metadataList = sharedScreenModel.getFullMarkers()
|
val metadataList = sharedScreenModel.getFullMarkers()
|
||||||
navigationSteps.clear()
|
navigationSteps.clear()
|
||||||
var lastSegno=0;
|
var lastSegno=0;
|
||||||
var lastFactor=Dynamic.MF.factor
|
var lastFactor=Dynamic.ZERO.factor
|
||||||
val ritRegex = Regex("""rit\.?|ritard\.?|ritenuto\.?|ritardando""", RegexOption.IGNORE_CASE)
|
val ritRegex = Regex("""rit\.?|ritard\.?|ritenuto\.?|ritardando""", RegexOption.IGNORE_CASE)
|
||||||
val rallRegex = Regex("""rall\.?|rallent\.?|rallentando""", RegexOption.IGNORE_CASE)
|
val rallRegex = Regex("""rall\.?|rallent\.?|rallentando""", RegexOption.IGNORE_CASE)
|
||||||
val dsR = Regex("""D\.?S\.?""");
|
val dsR = Regex("""D\.?S\.?""");
|
||||||
|
|
@ -619,7 +619,7 @@ actual class FMediaPlayer actual constructor(
|
||||||
|
|
||||||
extractDynamic(marker) != null && mTrim != "=" -> {
|
extractDynamic(marker) != null && mTrim != "=" -> {
|
||||||
val dyn = extractDynamic(marker) ?: return@forEach
|
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))
|
navigationSteps.add(NavigationStep(marker=marker, gridIndex=ci, dynamic=dyn))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -928,7 +928,7 @@ actual class FMediaPlayer actual constructor(
|
||||||
playJob?.cancel(); navigationJob?.cancel()
|
playJob?.cancel(); navigationJob?.cancel()
|
||||||
allNotesOff(); currentTickPos = 0L
|
allNotesOff(); currentTickPos = 0L
|
||||||
resetNavigationFlags(); navigationSteps.clear(); clearLoop()
|
resetNavigationFlags(); navigationSteps.clear(); clearLoop()
|
||||||
currentDynamicFactor = Dynamic.MF.factor
|
currentDynamicFactor = Dynamic.ZERO.factor
|
||||||
//resetTempoToNormal()
|
//resetTempoToNormal()
|
||||||
currentPlaybackBpm = targetBpm
|
currentPlaybackBpm = targetBpm
|
||||||
usPerTick = (60_000_000.0 / targetBpm.toDouble()) / resolution.toDouble()
|
usPerTick = (60_000_000.0 / targetBpm.toDouble()) / resolution.toDouble()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue