Try & Error for Sound Program

FoxDotを始めました。色々と試してみます。

和音をプログラムで扱うには その2

3音和音(トライアド)をアルゴリズムで扱うと、馬鹿みたいに単純です。だけど音楽理論が頭に有ると邪魔をします。 4音和音(セブンス)も単純です。さて、説明にあぐねています。
言葉での説明を考えたけどFoxDotの方が良いかなで。

p1>>pluck(P[0,1,2,3,4,5,6]+(0,2,4))

これで、I ,IIm, IIIm, IV, V, VIm, VIIm(♭5)の和音が順次なります。
ここでメジャースケールの配列を見てみます。

>>> print(Scale.major)
P[0, 2, 4, 5, 7, 9, 11]

では、
Iの和音の構成を見ます。0,4,7 これは長3度でメジャーになります。
IIの和音の構成を見ます。2,5,9 これは短3度でマイナーになります。
IIIの和音の構成を見ます。4,7,11 これは短3度でマイナーになります。
スケールを使ってインデックスで0,2,4に組み合わせると、勝手に和音になり、メジャー、マイナーを意識しないでよくなります。
4音和音(セブンス)でも同じ事。

p1>>pluck(P[0,1,2,3,4,5,6]+(0,2,4,6))

なので扱いはディグリーネームIVのトライアドとか、ディグリーネームVIのセブンスという感じになる訳です。

以前の図より、sus4なら

p1>>pluck(P[0,1,2,3,4,5,6]+(0,3,4))

解れば、単純なんですね。ただ覚えた音楽理論が有ると頭の整理に時間が要ります。 慣れなのですかね スケールが変わってもルールは変わりません。これが絶妙です。音楽理論の本質って、むしろこれだろうって思っています。

和音には転回と言うのが有ります。トライアドの場合、3音の内低い音をオクターブ上げて和音にするか、3音の内高い音をオクターブ下げて和音にするかのようですが、この辺りもコントロールしないとならないのですかね。