やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Pythonで変化記号を実装し、音度から半音数を取得する

#5は半音8つ分、など。

成果物

GitHubPython.MusicTheory.Pitch.201709131811

前回まで

やりたいこと

音楽理論などにおける音高の表現方法を相互変換したい。

項目|英名|型|例 ----|ーーー-|--|-- 周波数|Frequency|float|440.0(Hz) 音程|Interval|int|-1,0,1,2,...半音数。12で1オクターブ。 PitchClass|PitchClass|0〜11。C〜Bの12音。 OctaveClass|OctaveClass|0〜10。PitchClassと組み合わせることで周波数を算出できる。 音名|Key|str|C,C#,Db 変化記号|Accidental|str|♯/♭(#/b, +/-) 音程|Interval|P1,m3,a5 音度|Degree|1,#2,b3 ノート番号|NoteNumber|0〜127。C0〜G9。MIDI規格における音高ID。 ノート名|NoteName|C0,C#0,D0,...[音名][変化記号][オクターブ]の組合せ。

これらはすべて音高を意味する。たとえばC#5などのテキストを周波数に変換できれば、サイン波など何らかの波形生成の引数として渡せる。最後にPyAudioで再生するという目算。

今回

表題のとおり。音度から半音数を得る。前回のやつに半音数を渡せばピッチクラスと相対オクターブを得られる。

所感

現状、classのpropertyが作れなくて妥協している。何とかしたい。