sonnum/pysonnum/notes.py
2025-09-12 21:16:39 +03:00

37 lines
No EOL
635 B
Python

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