音楽生成の仕組み

コード進行

コード進行はプリセットを切り替える形で実装しました。
本当はここも全自動にしたかったのですが、発表時間が有限であることを考えると、コンパクトなコード進行が必要になり、この部分はハードコーディングすることにしました。

ここでは作曲経験のあるA君が持ち込んだギターを奏でながらコード(和音)を設計してくれました

楽器構成

ありがちな楽器構成として
パーカッション + ベース + ギター + ピアノ
という4つのパートを作ることにしました。

音色

開始して6時間位はSin波や矩形波で鳴らしていました。 が、ピコピコ感が否めないため、Web上にあるフリー素材を探してきて音源にしました。
この結果、とてもいい感じになりました。音色大事!

パーカッション

ここはS君がまず、JavaScipt上で動作するドラムマシンのような仕組みをつくり、そこにA君がありがちなドラムパターンを入れていきました。
これで、1小節単位のいい感じのドラムパターンがたくさん出来ました。
これらを組み合わせて曲を構成します。

フィルインのパターンも何個か用意し、曲調が変わるタイミングで鳴らすようにしました(これがかっこいい!)

ベース

ベースは現在のコードのルート音を中心に、ゆっくりなリズムで音を切り替えていくようにしました。
リズムは初めに5パターンくらい生成し、これを使いまわしています。

ギター

ギターは現在のコードの構成音を中心に、八分音符でランダムに鳴らすパターンを10個位つくり、それを使いまわしています。

ピアノ

ピアノは現在のコードの構成音を中心に、八分音符〜二分音符を配置したパターンを数個作り、使いまわしています。

テンポ

曲調が変わるタイミングで、テンポを変えています。
テンポはカチッと変わるのではなく、指定されたテンポに向かって徐々に変化していくようにしました。
ぬるっと変わっていく感じが気に入っています。