37 lines
696 B
Go
37 lines
696 B
Go
package main
|
|
|
|
var NoteToSemitone map[string]int
|
|
var SemitoneToNote map[int]string
|
|
|
|
func init() {
|
|
baseNotes := []string{"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"}
|
|
|
|
NoteToSemitone = make(map[string]int, 26)
|
|
SemitoneToNote = make(map[int]string, 12)
|
|
|
|
for i, note := range baseNotes {
|
|
NoteToSemitone[note] = i
|
|
SemitoneToNote[i] = note
|
|
}
|
|
|
|
enharmonics := map[string]string{
|
|
"Cb": "B",
|
|
"B#": "C",
|
|
"Db": "C#",
|
|
"C##": "D",
|
|
"Eb": "D#",
|
|
"D##": "E",
|
|
"Fb": "E",
|
|
"E#": "F",
|
|
"Gb": "F#",
|
|
"F##": "G",
|
|
"Ab": "G#",
|
|
"G##": "A",
|
|
"Bb": "A#",
|
|
"A##": "B",
|
|
}
|
|
for enh, actual := range enharmonics {
|
|
NoteToSemitone[enh] = NoteToSemitone[actual]
|
|
}
|
|
}
|