NOTES_OF_OCTAVE = { 0: ['C', 'B#'], 1: ['C#', 'Db'], 2: ['D'], 3: ['D#', 'Eb'], 4: ['E', 'Fb'], 5: ['F', 'E#'], 6: ['F#', 'Gb'], 7: ['G'], 8: ['G#', 'Ab'], 9: ['A'], 10: ['A#', 'Bb'], 11: ['B', 'Cb'] } def note_to_freq(note): note_no = note_to_note_no(note) return note_no_to_freq(note_no) def note_to_note_no(note): octave = int(note[-1]) note = note[:-1] note_no_oct = 1 for note_no_oct, notelst in NOTES_OF_OCTAVE.items(): if note in notelst: break corr_note_no_oct = note_no_oct - 8 return corr_note_no_oct + (octave*12) def note_no_to_freq(note_no): return 2**((note_no-49) / 12.0) * 440