diff --git a/app/src/main/java/com/lukas/music/song/ScaleType.kt b/app/src/main/java/com/lukas/music/song/ScaleType.kt index 2f385dd..7807cb9 100644 --- a/app/src/main/java/com/lukas/music/song/ScaleType.kt +++ b/app/src/main/java/com/lukas/music/song/ScaleType.kt @@ -16,6 +16,6 @@ ) { MAJOR( "major", - arrayOf(0, 2, 4, 5, 7, 9, 11, 12), + arrayOf(0, 2, 4, 5, 7, 9, 11), ) } \ No newline at end of file diff --git a/app/src/main/java/com/lukas/music/song/ScaleType.kt b/app/src/main/java/com/lukas/music/song/ScaleType.kt index 2f385dd..7807cb9 100644 --- a/app/src/main/java/com/lukas/music/song/ScaleType.kt +++ b/app/src/main/java/com/lukas/music/song/ScaleType.kt @@ -16,6 +16,6 @@ ) { MAJOR( "major", - arrayOf(0, 2, 4, 5, 7, 9, 11, 12), + arrayOf(0, 2, 4, 5, 7, 9, 11), ) } \ No newline at end of file diff --git a/app/src/main/java/com/lukas/music/ui/fragments/EditChordFragment.kt b/app/src/main/java/com/lukas/music/ui/fragments/EditChordFragment.kt index 9e618ed..5fc9dfe 100644 --- a/app/src/main/java/com/lukas/music/ui/fragments/EditChordFragment.kt +++ b/app/src/main/java/com/lukas/music/ui/fragments/EditChordFragment.kt @@ -60,9 +60,17 @@ Array(ScaleType.MAJOR.steps.size) { (Song.currentSong.root + ScaleType.MAJOR.steps[it]).noteName.toString() } } else Interval.IntervalName.NAMES binding.pitchSpinner.setup(pitches, chord.interval.name.ordinal) { + if (chord.note == ScaleType.MAJOR.steps[it]) { + update() + return@setup + } chord.note = ScaleType.MAJOR.steps[it] + chord.accidental = Accidental.None + chord.accidentals[0] = + Accidental.VALUES[(ScaleType.MAJOR.steps[(it + 2) % ScaleType.MAJOR.steps.size] distance chord.note) - 3] + chord.accidentals[1] = + Accidental.VALUES[(ScaleType.MAJOR.steps[(it + 4) % ScaleType.MAJOR.steps.size] distance chord.note) - 6] update() - // todo: setup chord to be the correct type } } @@ -117,4 +125,13 @@ companion object { val descriptions = arrayOf("III", "V", "VII", "IX") } +} + +infix fun Int.distance(other: Int): Int { + var result = this - other + while (result < 0) { + result += 12 + } + result %= 12 + return result } \ No newline at end of file