メジャースケールは長音階。
成果物
Python.MusicTheory.ScaleIntervals.201709251111
前回まで
- ClassPropertyを他のclassのclassmethodから参照するとプロパティとして見てくれない
- メタクラスを継承してsetattrによる再代入禁止とsys.modulesへのクラスインスタンス代入を共通化した
- readonlyな定数を音度、変化記号、ピッチクラスに実装した
- 音程から半音数を取得する
- Python音楽理論ライブラリの細かい点を修正した
- 音名から半音数(ピッチクラス)を取得する
- ピッチクラスとオクターブからMIDIノート番号を取得する
- MIDIノート名からMIDIノート番号を取得する
- 変化記号を各国の表記で取得する
- 音名を各国の表記で取得する
- 絶対オクターブ値(国際式,YAMAHA式)から相対オクターブ値(0〜10)を取得する
- 基音を設定、取得するクラスを作った
- 12平均律で周波数を取得する
- ピタゴラス音律で周波数を取得する
- 12平均律の基音クラスを弱参照するよう修正した
- 純正律で周波数を算出する
- 音階と音度からピッチクラスを取得する
- ScaleKeyクラスを作った
- ScaleKeyクラスをScaleの内部クラスとして作り変えた
- 音階と音度から音名を取得する
- Scaleクラス修正に伴い純正律クラスの修正をした
- ScaleIntervalsクラスをenum型に修正した
- 音階の和名を得る
今回
一般的な音階の音程を定義した。音名の取得でエラーになる。
今回はエラーがある状態。
- 民族音階は未実装または中途半端
./src/MusicTheory/scale/ScaleIntervals.py
- 音名の取得アルゴリズムが作りこめていない(どうするのが正しいのかの判断もできていない)
テストコード | 項目数 |
---|---|
TestScale.py, TestScaleKey.py | 15 |
TestScaleIntervals.py | 12(エラー) |
テスト計178項目。
所感
Wikipediaをみると民族系スケールもある。1/4音など特殊な実装が必要そう。そもそも音階だけ作れてもその民族風の曲を作るには別の知識も必要そう。ひとまず民族系スケールの実装は見送る予定。