やってみる

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

音階と音度から音名を取得する

D Major Scaleの構成音はD, E, F#, G, A, B, C#

成果物

GitHubPython.MusicTheory.Scale.Names.201709241021

前回まで

今回

ついに音階の構成音名を取得できた。

テストしたのは12調(C〜B)で、Major/Minorスケールの場合のみ。他の音階については未テスト。とくに民族系の音階は仮作成状態。

ScaleとScaleKeyクラスが密結合すぎてわかりにくいことになってしまったのが残念。

テストコード 項目数
TestScale.py, TestScaleKey.py 14

テスト計165項目。

音名の付け方

名付け基準は異なる音名である。極力、音名をみれば別の音度であることがわかるようにする。

  • A. 各音度にはできるだけ異なる音名(C〜B)を割り当てる
  • B. 音名に変化記号を付与することで該当ピッチクラスにする
  • C. 五度圏表からみて記号を割り当てるべき音であっても、幹音にあたるピッチであれば幹音名にする(CbならBにする)

Cについては正しいのか微妙。

音名

以下のように音名が取得できる。メジャースケールとマイナースケールは平行調がある。それらは構成音が同じ。

調 構成音
C C, D, E, F, G, A, B
Am A, B, C, D, E, F, G
調 構成音
D D, E, F#, G, A, B, C#
Bm B, C#, D, E, F#, G, A
調 構成音
E E, F#, G#, A, B, C#, D#
C#m C#, D#, E, F#, G#, A, B
調 構成音
F F, G, A, Bb, C, D, E
Dm D, E, F, G, A, Bb, C
調 構成音
G G, A, B, C, D, E, F#
Em E, F#, G, A, B, C, D
調 構成音
A A, B, C#, D, E, F#, G#
F#m F#, G#, A, B, C#, D, E
調 構成音
B B, C#, D#, E, F#, G#, A#
G#m G#, A#, B, C#, D#, E, F#
調 構成音
C# C#, D#, F, F#, G#, A#, C
Bbm Bb, C, Db, Eb, F, Gb, Ab
調 構成音
D# D#, F, G, G#, A#, C, D
Cm C, D, Eb, F, G, Ab, Bb
調 構成音
F# F#, G#, A#, B, C#, D#, F
Ebm Eb, F, Gb, Ab, Bb, B, Db
調 構成音
G# G#, A#, C, C#, D#, F, G
Fm F, G, Ab, Bb, C, Db, Eb
調 構成音
A# A#, C, D, D#, F, G, A
Gm G, A, Bb, C, D, Eb, F

所感

音名は五度圏表でも算出できる。五度圏表の実装は今は考えていない。