やってみる

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

Pythonで半音数からピッチクラスと相対オクターブを取得する。

Pythonに戻ってきた。

成果物

GitHubPython.MusicTheory.Pitch.201709131752

前回まで

C#で実装し直そうと思ったが環境が壊れた。

結局、Pythonに戻ってきた。前回は以下。

定数や分割など、やりたいような実装ができなかったのでC#にしようとした。さて、Pythonでどう実装するか。

やりたいこと

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

項目|英名|型|例 ----|ーーー-|--|-- 周波数|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で再生するという目算。

今回

表題のとおり。ピッチクラスは0〜11。相対オクターブは負数も含む整数。

所感

Pythonでの理想的な実装がわからず手探り状態。