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(",-$"), "")
|
||||||
.replace(Regex("(- *,z|- *,-|0$)"), "-")
|
.replace(Regex("(- *,z|- *,-|0$)"), "-")
|
||||||
.replace(Regex("([^\\.,])-"), "$1")
|
.replace(Regex("([^\\.,])-"), "$1")
|
||||||
|
.replace(Regex("(?<=[drmfsltia]),,,,"), "₄")
|
||||||
.replace(Regex("(?<=[drmfsltia]),,,"), "₃")
|
.replace(Regex("(?<=[drmfsltia]),,,"), "₃")
|
||||||
.replace(Regex("(?<=[drmfsltia]),,"), "₂")
|
.replace(Regex("(?<=[drmfsltia]),,"), "₂")
|
||||||
.replace(Regex("(?<=[drmfsltia]),"), "₁")
|
.replace(Regex("(?<=[drmfsltia]),"), "₁")
|
||||||
|
.replace("''''", "⁴")
|
||||||
.replace("'''", "³")
|
.replace("'''", "³")
|
||||||
.replace("''", "²")
|
.replace("''", "²")
|
||||||
.replace("'", "¹")
|
.replace("'", "¹")
|
||||||
|
|
@ -60,13 +62,24 @@ class TUNote (private val detailNote: MutableList<Note> = mutableListOf()){
|
||||||
.replace(Regex("^-.- *,"), "-. ,")
|
.replace(Regex("^-.- *,"), "-. ,")
|
||||||
.replace(Regex("(?<!,[drmfslt])\\.-\\s*$"), "")
|
.replace(Regex("(?<!,[drmfslt])\\.-\\s*$"), "")
|
||||||
.replace(Regex(" ,-\\s*$"), "")
|
.replace(Regex(" ,-\\s*$"), "")
|
||||||
.replace(Regex("\\((-[\\.,;][a-zA-Z][ia]*[¹²³₁₂₃]?)\\)"), "$1")
|
.replace(Regex("\\((-[\\.,;][a-zA-Z][ia]*[₁₂₃₄¹²³⁴]?)\\)"), "$1")
|
||||||
.replace(Regex("^-\\.z$"), "")
|
.replace(Regex("^-\\.z$"), "")
|
||||||
.replace("-", "―")
|
.replace("-", "―")
|
||||||
.replace(".", "\u2022")
|
.replace(".", "\u2022")
|
||||||
.replace("z", "")
|
.replace("z", "")
|
||||||
if ((fromKey != "") && (toKey != "")) {
|
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
|
return result
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class Transpose {
|
||||||
val oldIdx = noteToNumber.indexOf(oldNoteCore)
|
val oldIdx = noteToNumber.indexOf(oldNoteCore)
|
||||||
val newIdx = noteToNumber.indexOf(newNoteCore)
|
val newIdx = noteToNumber.indexOf(newNoteCore)
|
||||||
|
|
||||||
currentModulationInterval = newIdx - oldIdx
|
//currentModulationInterval = newIdx - oldIdx
|
||||||
|
|
||||||
val transposedOld = transpose(note = oldNoteCore + oldOctave, fromKey = "C", toKey = "C", alter = interval)
|
val transposedOld = transpose(note = oldNoteCore + oldOctave, fromKey = "C", toKey = "C", alter = interval)
|
||||||
val transposedNew = transpose(note = newNoteCore + newOctave, 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 calculatedToKey = keyToNumber[targetKeyIndex]
|
||||||
val transposedBody = NOTE_UNIT_REGEX.replace(remaining) { matchResult ->
|
val transposedBody = NOTE_UNIT_REGEX.replace(remaining) { matchResult ->
|
||||||
val fullNote = matchResult.value
|
val fullNote = matchResult.value
|
||||||
transpose(note = fullNote, fromKey = "C", toKey = calculatedToKey)
|
transpose(note = fullNote, fromKey = calculatedToKey, toKey = "C")
|
||||||
}
|
}
|
||||||
|
|
||||||
val result = separators + transposedBody
|
val result = separators + transposedBody
|
||||||
|
|
@ -207,12 +207,7 @@ class Transpose {
|
||||||
val newKey = keyToNumber.indexOf(toKey)
|
val newKey = keyToNumber.indexOf(toKey)
|
||||||
if (oldKey == -1 || newKey == -1) return note
|
if (oldKey == -1 || newKey == -1) return note
|
||||||
|
|
||||||
var keyShift = newKey - oldKey
|
var keyShift = oldKey - newKey
|
||||||
if (keyShift > 6) {
|
|
||||||
keyShift -= 12
|
|
||||||
} else if (keyShift < -6) {
|
|
||||||
keyShift += 12
|
|
||||||
}
|
|
||||||
|
|
||||||
var newNoteNum = noteNum + keyShift + alter
|
var newNoteNum = noteNum + keyShift + alter
|
||||||
var octaveShift = 0
|
var octaveShift = 0
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue