The data model
One row drives notation, audio, and the app — pitch classes 0–11, step labels H·W·W+H·m3·M3 (W=Whole Tone, H=Half Tone/Semitone, W+H=Whole+Semitone, m3=Minor Third, M3=Major Third)
All scales are written in C and then transposed to all other keys.
SCALES = [
("Major (Ionian)", ["C","D","E","F","G","A","B","C5"],
["W","W","H","W","W","W","H"], "Cmaj7"),
("Minor Pentatonic b5", ["C","Eb","F","Gb","Bb","C5"],
["m3","W","H","M3","W"], "Cm7(b5)"),
]