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] } }