音楽の自動生成には昔から興味がありました。
本作では、ランダムに音符を並べて曲を作ってみました。
ランダムとは、全ての高さの音が等しい頻度で鳴るということです。
等しい頻度の分布のことを、数学の世界では一様分布と呼びます。英語では、Uniform Distributionです。
だから、記念すべき最初の曲の名前は Uniform Distribution と名付けました。
ランダムに音を生成していったら、どんな音楽になるのだろう?
そういう疑問を昔から持っていて、今回、実際にメロディを生成してみた。
その結果が、こちら。
使用する音階を制限することで、和風なテイストに仕上げることもできる。
今回、この試みを通して感じたことがある。
通常、人間が作成するメロディは、デザインされた複数の高さの音の連続により意味やパワーを持つ。
その意味やパワーにより、聴き手の感情を揺さぶる。心に引っかかるものができる。
しかし、今回生成された音楽にはその意味やパワーはない。
今回生成したメロディでは、1つ1つの音の間に何のルールも存在しないからである。
そのため、聴いていても心に引っかかる部分は少ない。
ところが、聴いているとなぜか心地よい。 何の魂も持たない音の連なりだが、何も聴いていない状態より、心地よい感じがする。 これは何なのか。
これに関して私は、「私たちの脳は常にランダム性を持った刺激を求めており、今回作成した音の連なりがその要求を満たすことができているのだろう」と考えた。
本来、この世界は音に溢れている。
雨の音、風の音、川を流れる水の音、打ち寄せる波の音、虫や動物の鳴き声、人間の足音。鼓動。
おそらく、自然界には低音から高音まで、あらゆる周波数の音がランダム性を持って存在し続けているのだと思う。
そのごく自然な刺激がある状態こそ、私たちの脳にとってはデフォルトな状態なのだろう。
しかし、建物などの人工物によって遮蔽された空間では、そのような刺激も遮断されてしまっている。
作業用BGMなどが流行っている背景には、そのような理由があるのではないか。そう考えるようになった。
------------------------
以下、少し技術的なお話を。
音楽の自動生成タスクは、大きく分けると2つの方法がある。
一つは、楽譜データを生成していく方法で、音の高さと音の長さのセットを生成していく。例えば、「ファの音 を 1/4拍子」といった形式である。
これは単なる文字列のペアで表現できるので、実装は比較的容易である。
もう一つは、音波自体を生成していく方法である。通常の音声データは、1秒間に44100点を持つ波形データとなっており、この膨大な数の点を生成していくのがこちらのやり方である。
たった1秒で44100点のデータとなるので、1分の曲であれば44100×60点ものデータが必要となる。こちらはかなり実装の難易度が高い。
今回は前者の方法を用いることにし、プログラミング言語のPythonを用いてMIDIを自動生成した。
MIDIを扱うためのライブラリは、PrettyMIDIを用いた。
ちなみに、和風なテイストにするには、ファとシを除いた「ドレミソラド」からランダムに音を選択すれば良い。このスケールは、ヨナ抜き音階と呼ばれ、「君が代」をはじめとする日本の楽曲で多く利用されている。
再生までの全工程をプログラムで行えば、永続的にメロディを作成し、再生し続けることができるだろう。