diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TUNote.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TUNote.kt index f3d763c..3e7d815 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TUNote.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TUNote.kt @@ -48,9 +48,11 @@ class TUNote (private val detailNote: MutableList = mutableListOf()){ .replace(Regex(",-$"), "") .replace(Regex("(- *,z|- *,-|0$)"), "-") .replace(Regex("([^\\.,])-"), "$1") + .replace(Regex("(?<=[drmfsltia]),,,,"), "₄") .replace(Regex("(?<=[drmfsltia]),,,"), "₃") .replace(Regex("(?<=[drmfsltia]),,"), "₂") .replace(Regex("(?<=[drmfsltia]),"), "₁") + .replace("''''", "⁴") .replace("'''", "³") .replace("''", "²") .replace("'", "¹") @@ -60,13 +62,24 @@ class TUNote (private val detailNote: MutableList = mutableListOf()){ .replace(Regex("^-.- *,"), "-. ,") .replace(Regex("(?" + Transpose.transposeToSolfa(result, toKey, fromKey) + ">" + result + val originalResult = result + + val firstNoteMatch = Regex("([drmfslt][ia]?)([₄₃₂₁¹²³⁴',]*)").find(originalResult) + + if (firstNoteMatch != null) { + val firstNote = firstNoteMatch.value + val transposedFirst = Transpose.transposeToSolfa(firstNote, fromKey = fromKey, toKey = toKey) + + result = ">$transposedFirst>$originalResult" + } else { + result = "" + } } return result } diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Transpose.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Transpose.kt index e4440e8..716aa30 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Transpose.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Transpose.kt @@ -49,7 +49,7 @@ class Transpose { val oldIdx = noteToNumber.indexOf(oldNoteCore) val newIdx = noteToNumber.indexOf(newNoteCore) - currentModulationInterval = newIdx - oldIdx + //currentModulationInterval = newIdx - oldIdx val transposedOld = transpose(note = oldNoteCore + oldOctave, fromKey = "C", toKey = "C", alter = interval) val transposedNew = transpose(note = newNoteCore + newOctave, fromKey = "C", toKey = "C", alter = interval) @@ -66,7 +66,7 @@ class Transpose { val calculatedToKey = keyToNumber[targetKeyIndex] val transposedBody = NOTE_UNIT_REGEX.replace(remaining) { matchResult -> val fullNote = matchResult.value - transpose(note = fullNote, fromKey = "C", toKey = calculatedToKey) + transpose(note = fullNote, fromKey = calculatedToKey, toKey = "C") } val result = separators + transposedBody @@ -207,12 +207,7 @@ class Transpose { val newKey = keyToNumber.indexOf(toKey) if (oldKey == -1 || newKey == -1) return note - var keyShift = newKey - oldKey - if (keyShift > 6) { - keyShift -= 12 - } else if (keyShift < -6) { - keyShift += 12 - } + var keyShift = oldKey - newKey var newNoteNum = noteNum + keyShift + alter var octaveShift = 0