読者です 読者をやめる 読者になる 読者になる

bonar note

京都のエンジニア bonar の技術的なことや技術的でない日常のブログです。

7 degrees code bubble on Music::Phrase::MMLGenerator

music perl

Music::Phrase::MMLGenerator で楽曲の断片をどう効率よく、かつ素敵に出来るかを考えています。僕が考えるゴールは、

  • 興味をもった人が簡単に始められること
  • 音楽的な教養が必要ないこと
  • 「なんとなく」できること

なのですが、現状どれ一つとして達成していません。。簡単に、なんとなく出来る、という点を重視しているので、コード進行を指定してその成分の中からランダムで音階を選択してそれを指定された配置(ビート)で並べて終了という感じに現状はなっています。

ただ、これはこれで安定したフレーズが出るのですが(もろにアルペジエータですが)、多様性が生まれにくいという弱点があります。和音は通常3音か4音なので、ひとつの音の発生について最大で(オクターブ数*4)の組み合わせしかなくなってしまいます。ただし、この選択肢の中に闇雲に音を足しても、不協和音になってしまい聴けたものではなくなってしまいます。

どうしようと試行錯誤してたところ、「和音の構成音それぞれを7度増加させた音を選択肢として許容する」と割と素敵な感じになることを発見しました。例えば C のメジャーコードは構成音が C, E, G の3つですが、このそれぞれに7度を足すと、G, B, D# となります。Gはもともとあるので除外して、新たに B と D# が選択肢として追加されます。

こうやって選択肢を増やすと、若干安定感が失われる代わりに、非常に人間らしさが出るというか思い切ったフレーズが出て来たりするようです。この7度というのが絶妙みたいで、1から11まで全部調べてみましたが、7以外は全部めちゃくちゃになりました。7だけが何故かうまく行くみたいです。さすが神の数字7。なんでなんだろう、、本当に不思議。音楽の教養のある方是非ヒント教えて下さい。僕も勉強しよう。

Music::Phrase::MMLGenerator ではこの増殖法にbubbleという名前を付けています。make_phrase.pl で以下のように指定すると上記の方法で選択肢を増やせます。

  bonar$ perl make_phrase.pl --inst=1 --tempo=105 --octav=4,5 \
  "C:2011101010011000,G:1011112010112111,Am:1002100001021111,Em:2111021110102111," \
  "F:2111011110211111,C:1001001021111110,Fm7:1120021110102012,G:2111022111011111" \
  -play --bubble=7

聴いてみる

「C-G-Am-Em-F-C-Fm7-G」というコード進行に上記の選択肢増殖を使って簡単な曲を作りました。
実際どんな感じになるか聴いてみて下さい。以下 GarageBand, mp3 ファイルです。

7 degrees code expansion
Download

mp3: http://bonar.jp/sound/7_degrees_code_expansion.mp3
gb3: http://bonar.jp/sound/7_degrees_code_expansion.band.tar.gz

どんな感じでしょうか。

もうちょっと面白い仕掛けないかなあ。。僕が無教養なだけなのですが、こういう「ルール探し」的なパズルはすごい楽しいですね。もうちょっと色々探してみよう。