音楽におけるコードはあんまり好きじゃない。
と常々勝手に思っていたが、まあしかしなんだかんだ実作業の面では便利だったりするので、結局学ばざるをえなかったりもする。
音楽のコード進行
C -> F -> Gのような
立ち上がり(トニック)、ちょっと盛り上がり(サブドミナント)、盛り上がり(ドミナント)、みたいな形が基本。
例外はあるにせよ、C F# Dm Abみたいな脈絡のない妙なコード進行がくることはあんまりない。
コードのデジタル表現
これはドレミファソラシドを12bitのまとまりに置き換えて、
Cメジャーならば
[1,0,0,0,1,0,0,1,0,0,0,0]
Cmならば
[1,0,0,1,0,0,0,1,0,0,0,0]
[1,0,0,0,1,0,0,1,0,0,1,0]
とすることにする。
[1,0,0,0,1,0,0,1,0,0,0,0] [1,0,0,0,0,1,0,0,0,1,0,0] [0,0,1,0,0,0,0,1,0,0,0,1]
学習データ
そのうちkeyがCと明記されているもの2000曲あまりを学習データとした。
Epoch 1/50 33/33 [==============================] - 1s 21ms/step - loss: 0.6694 - val_loss: 0.5621 Epoch 2/50 33/33 [==============================] - 0s 2ms/step - loss: 0.5366 - val_loss: 0.4543 Epoch 3/50 33/33 [==============================] - 0s 2ms/step - loss: 0.4366 - val_loss: 0.3682 Epoch 4/50 33/33 [==============================] - 0s 2ms/step - loss: 0.3468 - val_loss: 0.2882 . . Epoch 46/50 33/33 [==============================] - 0s 2ms/step - loss: 8.5190e-04 - val_loss: 8.1676e-04 Epoch 47/50 33/33 [==============================] - 0s 2ms/step - loss: 8.0641e-04 - val_loss: 7.7746e-04 Epoch 48/50 33/33 [==============================] - 0s 1ms/step - loss: 7.6571e-04 - val_loss: 7.4075e-04 Epoch 49/50 33/33 [==============================] - 0s 1ms/step - loss: 7.3260e-04 - val_loss: 7.0640e-04 Epoch 50/50 33/33 [==============================] - 0s 2ms/step - loss: 6.9866e-04 - val_loss: 6.7435e-04
コード進行生成
C, F , G , C, F, G, C, F C, Am, F , G ,C ,F ,G ,C ,F
ありゃ、どちらも、C->F->Gに収束してしまった。 まあ基本だからしょうがないな。
G ,Am ,G ,C ,F ,G ,C
では次は2小節目から転調してやれ、ということで、C->Eを与えてみる。
C ,E ,G ,C ,F ,G ,C ,F