やってみる

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

音階と音度からピッチクラスを取得する

CMajorScaleの1度はC音である。

成果物

GitHubPython.MusicTheory.Scale.PitchClasses.201709230801

前回まで

今回

音階における構成音の周波数を取得するための礎。

たとえばAm(Aマイナースケール。イ短調)は以下のように指定し、PitchClassesプロパティで構成音のピッチクラスを得る。

s = Scale(9, ScaleIntervals.Minor)
self.assertEqual(9, s.Key)
self.assertEqual(ScaleIntervals.Minor, s.Intervals)
self.assertEqual([(9,0),(11,0),(0,1),(2,1),(4,1),(5,1),(7,1)], s.PitchClasses)

戻り値は(ピッチクラス, 相対オクターブ)である。

テストコード 項目数
TestScale.py 9

テスト計160項目。

所感

ピッチクラスと絶対オクターブが決まれば、周波数が算出できる。今回、相対オクターブを付与したおかげで、どの音からオクターブ上げる必要があるか算出する必要がなくなる。後々楽になるはず。

ピッチクラスなら問題なく一意に特定できる。しかし、音名は違う。C#Dbのどちらにすべきかの処理が面倒。次回、やってみる。