Generalized Coltrane Changes
- 本記事は、 divrot-hajime.tumblr.com の http://divrot-hajime.tumblr.com/post/125174466518/generalized-coltrane-changes http://divrot-hajime.tumblr.com/post/125341867738/generalized-coltrane-changes-%E3%81%AE%E5%AE%9F%E8%A3%85 初出: Jul 28th, 2015 & Jul 29th, 2015を改訂して再掲したものです。 (gistとの連携をやってみたかったんです)
Coltrane changesは、IIm-V7-I もしくはV7-Iなどが+5度上に転調していく進行のことである。これを数学的に表記してみよう。Giant Stepsを例にとると
B D7 G Bb7 Eb ~
という感じではじまるが、これはトニックだけをとりだすと
B G Eb
なので、+5度上に+5度上に動いているだけである。もう一度+5度上にいくと戻って
B G Eb B
になるわけだから三回の操作で元に戻る循環である。これは+5度とかいうと分かりにくいのだけれど、Cから順に、
C=0, Db=1, D=2, Eb=3, E=4, F=5, Gb=6, G=7, Ab=8, A=9, Bb=10, B=11
という風に数字(index)を割り付けると考えやすい。オクターブを無視すると音階は12回でもとにもどるから、12以上のindexや負のindexやindexは12で割った余りと等しいとする(つまり12を法とした整数を考える)。
そうすると+5度上にいくという変換F8は、単にindex iに8を足すだけである
F8(i) = i + 8 (mod 12)
具体的に見てみよう。Bはi=11だから一回目の変換は
F8(11) = 11 + 8 (mod 12) = 7 つまりGになる。もう一度変換すると
F8(7) = 7 + 8 (mod 12) = 3 つまりEbとなっている。さらに変換すると
F8(3) = 3 + 8 (mod 12) = 11 でBに戻っている
上では8を足す変換を考えたが、いま一般にnを足す変換
Fn(i) = i + n (mod 12)
は循環をつくる。例えばF5(i)は普通のいわゆるDominant motion (C-F-Bb-Eb-Ab….)を表現できる。
では、もともとのGiant Steps
B D7 G Bb7 Eb ~
はどのような変換で表記できるだろうか?これにはnを偶数回目と奇数回目の変換で異なる物をとればよい。kを変換の回数として
F(i) = i + n_k (mod 12)
n_k = 5 (kが偶数) 、n_k = 3 (k が奇数)
さらにkが偶数のときはt_1=Major、奇数のときは t_2=7thをとるとする。
具体的に見てみよう。Bはi=11だからk=1回目の変換は
F(11) = 11 + 3 (mod 12) = 2 つまりD7になる。k=2回目の変換は F(2) = 2 + 5 (mod 12) = 7 つまりGになる。k=3回目の変換は F(7) = 7 + 3 (mod 12) = 10 つまりBb7になる。k=3回目の変換は F(10) = 10 + 5 (mod 12) = 3 つまりEbになり、Giant Stepsの最初の部分が再現される。ここで3+5=8となっていることが、先ほどの+5度の進行に対応している。
というわけで、このColtrane Changeの法則を一般化してみよう。いまn_kをM回で元に戻る数列{n_1, n_2, … , n_M}
n_k = n_(k mod M)
だとして、コードの部分をL回で元に戻るハーモニー部分{t_1, t_2,…,t_L}とする(ここにはMajorだとか7thだとかdiminishだとかがはいる)
t_k = t_(k mod L)
一般化コルトレーンチェンジ列はこれら{n_1, n_2, … , n_M}と{t_1, t_2,…,t_L}
を用い ルート音: F(i) = i + n_k (mod 12) とハーモニー t_kで構成される。
一番下に簡単なPythonコードを添付しておく。Giant stepsの場合はn_k={5,3}, t_k={Major, 7th}である。計算結果
GCC: for n_k= [5, 3] t_k= [“, ‘7’] B D7 G Bb7 Eb Gb7 B D7 G Bb7 Eb Gb7 B D7 G Bb7 Eb Gb7 B D7 G Bb7 Eb Gb7 B
ちゃんと再現されてますね。
LはMと等しくなくても良い。一般化コルトレーンチェンジで様々なコード進行が作成できるので試されたし、
GCC: for n_k= [5, 3, 1] and t_k= ['mb5’, '7’, ’m’, '7’, ”] Bmb5 D7 Ebm Ab7 B Cmb5 F7 Abm A7 D Fmb5 Gb7 Bm D7 Eb Abmb5 B7 Cm F7 Ab Amb5 D7 Fm Gb7 B Dmb5 Eb7 Abm B7 C Fmb5 Ab7 Am D7 F Gbmb5 B7 Dm Eb7 Ab Bmb5 C7 Fm Ab7 A Dmb5 F7 Gbm B7 D Ebmb5 Ab7 Bm C7 F Abmb5 A7 Dm F7 Gb Bmb5
※ レヴィ・ストロース「親族の基本構造」内にあるアンドレ・ヴェイユの補遺を参考にしました。
追加
pyaudioを用いて、一般化コルトレーンチェンジの音が出るようにしました。下にコードあり。Thanks, matu_mitani !
GCC音声ファイル: http://secondearths.sakura.ne.jp/music/gcc/
ただ、正弦波はイマイチなので波形はそのうち変えたい。
matu_mitaniのご助言に従って倍音成分入れました。コードが聞きやすくなった(30 July 2015)。それからedgeをexpでdampしてプチプチいうのを防ぎました。(31 July 2015)
Hajime_dxdydz (July 29, 2015)
環境
使用法
./gcc.py -key 11 -nk 5 3 -tk Maj 7 -o coltrane.wav