diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index 05a95b4..75037b1 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -2360,10 +2360,16 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository meta[subKey] = line.substring(2) } if ("c" == subKey) { - val tonality = line.uppercaseFirstMeta() - meta["C"] = tonality - sharedScreenModel.setSongKey(tonality) - sharedScreenModel.setTransposeAsIf(tonality) + val validKeys = Transpose.keyToNumber.sortedByDescending { it.length } + val keyRegex = Regex("\\b(${validKeys.joinToString("|")})\\b", RegexOption.IGNORE_CASE) + val rawText = line.substringAfter("c:") + val matchedKey = keyRegex.find(rawText)?.value + val tonality = Transpose.keyToNumber.firstOrNull { it.equals(matchedKey, ignoreCase = true) } + if(tonality != null) { + meta["C"] = tonality + sharedScreenModel.setSongKey(tonality) + sharedScreenModel.setTransposeAsIf(tonality) + } } }