package audio import "math" // Converts note name to frequency in Hz func noteToFreq(note string) float64 { noteFreqs := map[string]float64{ "C": 16.35, "C#": 17.32, "D": 18.35, "D#": 19.45, "E": 20.60, "F": 21.83, "F#": 23.12, "G": 24.50, "G#": 25.96, "A": 27.50, "A#": 29.14, "B": 30.87, } if len(note) < 2 { return 440.0 } noteName := note[:1] if len(note) > 2 && (note[1] == '#' || note[1] == 'b') { noteName = note[:2] } octave := 4 if len(note) > 1 { if note[len(note)-1] >= '0' && note[len(note)-1] <= '9' { octave = int(note[len(note)-1] - '0') } } baseFreq, exists := noteFreqs[noteName] if !exists { return 440.0 } return baseFreq * math.Pow(2, float64(octave)) }