Fix! transpose note&octave on modulation '>..>..'
This commit is contained in:
parent
9b783200df
commit
dcc5a67818
2 changed files with 18 additions and 10 deletions
|
|
@ -48,9 +48,11 @@ class TUNote (private val detailNote: MutableList<Note> = 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<Note> = mutableListOf()){
|
|||
.replace(Regex("^-.- *,"), "-. ,")
|
||||
.replace(Regex("(?<!,[drmfslt])\\.-\\s*$"), "")
|
||||
.replace(Regex(" ,-\\s*$"), "")
|
||||
.replace(Regex("\\((-[\\.,;][a-zA-Z][ia]*[¹²³₁₂₃]?)\\)"), "$1")
|
||||
.replace(Regex("\\((-[\\.,;][a-zA-Z][ia]*[₁₂₃₄¹²³⁴]?)\\)"), "$1")
|
||||
.replace(Regex("^-\\.z$"), "")
|
||||
.replace("-", "―")
|
||||
.replace(".", "\u2022")
|
||||
.replace("z", "")
|
||||
if ((fromKey != "") && (toKey != "")) {
|
||||
result = ">" + 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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue