Support "DSFin" marker on MidiPlayer - android
This commit is contained in:
parent
790ed83ddc
commit
3bbe9367b7
1 changed files with 40 additions and 40 deletions
|
|
@ -410,21 +410,41 @@ actual class FMediaPlayer actual constructor(
|
||||||
var lastFactor=Dynamic.MF.factor
|
var lastFactor=Dynamic.MF.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 dcR = Regex("""D\.?C\.?""")
|
||||||
|
/*val dsG = Regex("""D\.?S\.?_GROUP_PART""");
|
||||||
|
val dcG = Regex("""D\.?C\.?_GROUP_PART""")*/
|
||||||
|
val finReg = Regex("""(fine|fin|farany|end)""", RegexOption.IGNORE_CASE)
|
||||||
|
|
||||||
metadataList.forEach { midiMarker ->
|
metadataList.forEach { midiMarker ->
|
||||||
val ci = midiMarker.gridIndex ?: 0
|
val ci = midiMarker.gridIndex ?: 0
|
||||||
val dsR = Regex("""D\.?S\.?""");
|
|
||||||
val dcR = Regex("""D\.?C\.?""")
|
|
||||||
val dsG = Regex("""D\.?S\.?_GROUP_PART""");
|
|
||||||
val dcG = Regex("""D\.?C\.?_GROUP_PART""")
|
|
||||||
val finReg = Regex("""(fine|fin|farany|end)""", RegexOption.IGNORE_CASE)
|
|
||||||
val last_grid = sharedScreenModel.getTotalGridCount()
|
val last_grid = sharedScreenModel.getTotalGridCount()
|
||||||
val hairPins = sharedScreenModel.getHairPins()
|
val hairPins = sharedScreenModel.getHairPins()
|
||||||
val markerList = midiMarker.marker
|
val markerList = midiMarker.marker
|
||||||
|
|
||||||
markerList.forEach { marker ->
|
var i = 0
|
||||||
|
while(i < markerList.size) {
|
||||||
|
val marker = markerList[i]
|
||||||
val mTrim = marker.trim()
|
val mTrim = marker.trim()
|
||||||
|
val nextMarker = markerList.getOrNull(i + 1)
|
||||||
|
val nextTrim = nextMarker?.trim() ?: ""
|
||||||
|
|
||||||
|
val isDsFin = (dsR.containsMatchIn(mTrim) && finReg.containsMatchIn(nextTrim)) ||
|
||||||
|
(dsR.containsMatchIn(nextTrim) && finReg.containsMatchIn(mTrim))
|
||||||
|
val isDcFin = (dcR.containsMatchIn(mTrim) && finReg.containsMatchIn(nextTrim)) ||
|
||||||
|
(dcR.containsMatchIn(nextTrim) && finReg.containsMatchIn(mTrim))
|
||||||
when {
|
when {
|
||||||
|
isDsFin || isDcFin -> {
|
||||||
|
val target = if (lastSegno > 0) lastSegno else 0
|
||||||
|
navigationSteps.add(NavigationStep(
|
||||||
|
marker = "$mTrim$nextTrim",
|
||||||
|
gridIndex = ci,
|
||||||
|
targetGrid = if (isDsFin) target else 0
|
||||||
|
))
|
||||||
|
i += 2
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
marker.contains("$") -> lastSegno = ci
|
marker.contains("$") -> lastSegno = ci
|
||||||
|
|
||||||
marker.contains("\uD834\uDD10") -> {
|
marker.contains("\uD834\uDD10") -> {
|
||||||
|
|
@ -457,24 +477,12 @@ actual class FMediaPlayer actual constructor(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
dsG.matches(mTrim) -> {
|
|
||||||
val target = if(lastSegno>0) lastSegno else 0
|
|
||||||
val indx = if((last_grid-ci)<=0) ci-1 else ci
|
|
||||||
navigationSteps.add(NavigationStep(marker, indx, targetGrid=target))
|
|
||||||
}
|
|
||||||
|
|
||||||
dsR.matches(mTrim) || marker == "DSFin" -> {
|
dsR.matches(mTrim) -> {
|
||||||
navigationSteps.add(NavigationStep(marker, ci,
|
navigationSteps.add(NavigationStep(marker, ci,
|
||||||
targetGrid = if(lastSegno>0) lastSegno else 0))
|
targetGrid = if(lastSegno>0) lastSegno else 0))
|
||||||
}
|
}
|
||||||
|
dcR.matches(mTrim) -> {
|
||||||
dcG.matches(mTrim) -> {
|
|
||||||
val indx = if((last_grid-ci)<=0) ci-1 else ci
|
|
||||||
navigationSteps.add(NavigationStep(marker, indx, targetGrid=0))
|
|
||||||
println("DC_GROUP créé à $indx → 0")
|
|
||||||
}
|
|
||||||
|
|
||||||
dcR.matches(mTrim) && !marker.contains("DC_GROUP_PART") -> {
|
|
||||||
val indx = if((last_grid-ci)<=0) ci else ci
|
val indx = if((last_grid-ci)<=0) ci else ci
|
||||||
navigationSteps.add(NavigationStep(marker, indx, targetGrid=0))
|
navigationSteps.add(NavigationStep(marker, indx, targetGrid=0))
|
||||||
println("DC créé à $indx → 0")
|
println("DC créé à $indx → 0")
|
||||||
|
|
@ -483,34 +491,25 @@ actual class FMediaPlayer actual constructor(
|
||||||
// ── Farany ────────────────────────────────
|
// ── Farany ────────────────────────────────
|
||||||
finReg.containsMatchIn(mTrim) -> {
|
finReg.containsMatchIn(mTrim) -> {
|
||||||
val hasDcAfter = metadataList.any { m ->
|
val hasDcAfter = metadataList.any { m ->
|
||||||
val after = (m.gridIndex ?: 0) > ci
|
(m.gridIndex ?: 0) > ci && m.marker.any { mk -> dcR.containsMatchIn(mk) }
|
||||||
|
|
||||||
val hasMarker = m.marker.any { mk ->
|
|
||||||
val value = mk.trim()
|
|
||||||
val ok = dcG.matches(value) || dcR.matches(value)
|
|
||||||
ok
|
|
||||||
}
|
|
||||||
after && hasMarker
|
|
||||||
}
|
}
|
||||||
if (hasDcAfter) {
|
if (hasDcAfter) {
|
||||||
navigationSteps.add(NavigationStep(
|
navigationSteps.add(
|
||||||
marker = marker,
|
NavigationStep(
|
||||||
gridIndex = ci,
|
marker,
|
||||||
|
ci,
|
||||||
targetGrid = last_grid,
|
targetGrid = last_grid,
|
||||||
isFarany = true,
|
isFarany = true, faranyActive = false)
|
||||||
faranyActive = false
|
)
|
||||||
))
|
|
||||||
println("Farany mémorisé à $ci")
|
|
||||||
} else {
|
} else {
|
||||||
val verse = sharedScreenModel.stanza.value
|
val verse = sharedScreenModel.stanza.value
|
||||||
val verses = sharedScreenModel.nbStanzas.value
|
val verses = sharedScreenModel.nbStanzas.value
|
||||||
println("Farany ignoré à $ci i $verse == $verses")
|
println("Farany ignoré à $ci i $verse == $verses")
|
||||||
navigationSteps.add(
|
navigationSteps.add(
|
||||||
NavigationStep(
|
NavigationStep(
|
||||||
marker="${marker}_STZ",
|
marker = "${marker}_STZ",
|
||||||
gridIndex=ci,
|
gridIndex = ci,
|
||||||
isFarany = true,
|
isFarany = true, faranyActive = (verse != verses)
|
||||||
faranyActive = if(verse == verses) false else true
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -553,6 +552,7 @@ actual class FMediaPlayer actual constructor(
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
i++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue