周波数からC3やF4などのノート名に変換する
以前 Qrunch に投稿してた記事を持ってきました。
Python 3 で周波数からノート名に変換
A4 は 440Hz、 C3 は 130.8Hz のようにノート毎に周波数が決まっていますが、周波数からノートに変換するコードを Python 3 で書いてみました。
import math SCALE_LIST = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"] C0_FREQUENCY = 16.35 def frequency_to_note(freq): n = round(math.log2(freq / C0_FREQUENCY) * 12) return SCALE_LIST[n % 12] + str(n // 12)
実行するとこんな感じ。ノートの音程ぴったりじゃない場合は四捨五入で丸めています。
>>> frequency_to_note(55) 'A1' >>> frequency_to_note(440) 'A4' >>> frequency_to_note(130) 'C3' >>> frequency_to_note(185) 'F#3'