固定比で12音を算出できた。
成果物
Python.MusicTheory.Temperament.JustIntonation.201709221413
前回まで
- ClassPropertyを他のclassのclassmethodから参照するとプロパティとして見てくれない
- メタクラスを継承してsetattrによる再代入禁止とsys.modulesへのクラスインスタンス代入を共通化した
- readonlyな定数を音度、変化記号、ピッチクラスに実装した
- 音程から半音数を取得する
- Python音楽理論ライブラリの細かい点を修正した
- 音名から半音数(ピッチクラス)を取得する
- ピッチクラスとオクターブからMIDIノート番号を取得する
- MIDIノート名からMIDIノート番号を取得する
- 変化記号を各国の表記で取得する
- 音名を各国の表記で取得する
- 絶対オクターブ値(国際式,YAMAHA式)から相対オクターブ値(0〜10)を取得する
- 基音を設定、取得するクラスを作った
- 12平均律で周波数を取得する
- ピタゴラス音律で周波数を取得する
- 12平均律の基音クラスを弱参照するよう修正した
今回
純正律の算出には、基音のほかに調も必要だった。そこで、Scaleクラスを作り、Keyプロパティをもたせた。値はPitchClass(0〜11)。
f = FundamentalTone(hz=440, pitchClass=9, octaveClass=5) s = Scale(0, ScaleIntervals.Minor) j = JustIntonation(f, s) 周波数 = j.GetFrequency(pitch, octave)
テストコード | 項目数 |
---|---|
TestJustIntonation。py | 7 |
テスト計151項目。
所感
これで音高を算出するための音楽理論はあらかた実装できたと思う。
音を出すには波形、周波数、時間、の算出が必要。次は音価(時間)か。