Yuma.M
yura.qrunch.io

周波数からC3やF4などのノート名に変換する

2018/10/23に投稿

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'

参考URL

関連記事

コメントはありません。
ブログを開設

クランチで技術ブログを
始めてみませんか?

この先は、クランチへのアカウント登録、及びログインが必要なページになります。

Markdownの書き方
見出し # 見出し(h1)
## 見出し(h2) , ### 見出し(h3) ...
リスト - 箇条書き
   - タブでインデント
番号付きリスト 1. テキスト
2. テキスト
改行 行末に半角スペース2つ
リンクの挿入 [タイトル](https://xxx.com)
引用 > テキスト
コード挿入 ```cpp:title
code
```
画像の挿入 ![代替テキスト](URL "タイトル")
太字 **テキスト**
斜体 *テキスト*
打消し線 ~~テキスト~~
水平線 ***
技術ブログを開設
ログイン