Opus Number 39
どうも、AETA(イータ)です!
最近はAI、特にディープラーニングに関する技術の発展がめざましく、自動で音楽を生成するなんてことも以前に比べて珍しくなくなっているようですね。
ただし、ディープラーニングには学習させるための大量のデータと効率良く学習させるための仕掛けを作る必要があって、本来の目的に到達する前に心が折れそうだなぁ…と。
で、Processing を使って音楽を自動生成出来ないか、ということで早速作ってみました!
自動生成なので一期一会な曲なのですが、今回は「Opus Number 39」と名付けました。
この動画なんですが、ほぼほったらかしです!
途中でカッコいいフレーズが生成された時に、たまーに右クリックして維持させたり、ちょっとパートを加えて盛り上げてみたり、徐々に音量上げたりと、それくらいしかやってませんw
アプリ(Windows 版のみ)はこちらからダウンロード出来ます。
ちなみに Java のインストールが必要です。
なお、本体プログラム以外に各楽器のサンプル素材が別途必要です。
readme.txt の内容に沿って使い方を簡単にご紹介したいと思います。
<準備>
1. 以下の楽器パートのオーディオファイルをダウンロードします。
(WAV/AIFF/MP3 が可能)
Kick, Snare, Hi-Hat, Clap, Cymbal, Bass, Sequence, Lead
ネット上では「free wav samples」でググるとそのようなサイトが沢山みつかると思います。また、ゆにばすさん (@universe_ex) の「Computer Music Japan」でもメーカーサイトの無料ダウンロードなどお得な情報が掲載されていますので、そういったものを利用されるのも宜しいかと。(いつもお世話になってます!)
なお、Bass、Sequence、Lead のパートですが、ここで鳴らすオーディオファイルは出来れば短め(または音量の下がり方が早いもの)を選択してください。次々と音が重なったときに飽和してしまうためです。実際に組み込んで使ってみて調整したくなった場合は、「SoundEngine」などのソフトを使って長さを短くしたりフェードアウトで調整してみてください。
また、Clap や Sequence のパートはファイルフォーマットがモノラルの場合、パン(左右の定位)がランダムになるようにしています。ステレオ→モノラル変換も SoundEngine で可能です。
2. 準備したファイルを "data" フォルダにコピーします。 3. "part.txt" をテキストエディタで開きます。 4. 各行に書かれた楽器パートのファイル名とピッチシフト量(-24 ~ 0 ~ 24) を編集します。 KICK, kick.wav, 0 SNARE, snare.wav, 0 HIHAT, hihat.wav, 0 CLAP, clap.wav, 0 CYMBAL, cymbal.wav, 0 BASS, bass.wav, 0 SEQ, seq.wav, 0 LEAD, lead.wav, 0 (注意:楽器パートの順序を書き換えないでください!)
Bass、Sequence、Lead パートは同じ音程である必要があります。
もし音程が異なる場合(例. Bass: G、Sequence: C、Lead: F)はピッチシフト量で調整します。
C で一致させたい場合: BASS, bass.wav, 5 SEQ, seq.wav, 0 LEAD, lead.wav, -5
オクターブを調整したい場合は、上記の値に +12 または -12 を加えてください。
5. "part.txt" を保存します。 6. "automata_*.exe" を実行します。 7. ウィンドゥの内側をクリックします。 8. [スペース] キーで演奏を開始します。自動生成プログラムが(バグらない限り)永遠に音楽を生成し続けます。 <使い方> [SPACE]: 音楽を再生/停止します。 [+]: ボリュームを上げます。 (最大: 10) [-]: ボリュームを下げます。 (最小: 0) [RIGHT]: BPM を上げます。 (最大: 200) [LEFT]: BPM を下げます。 (最小: 60) [UP]: 半音階上に移調させます。 (最大: 24) [DOWN]: 半音階下に移調させます。 (最小: -24) マウスホイール: マウスカーソル上のパートの音量を調整します。 マウス左ボタン: マウスカーソル上のパートのミュートを ON / OFF します。 マウス右ボタン: マウスカーソル上のパートのフレーズを制御します。 - パートのバー上部を右クリック: フレーズをランダム生成または維持します。 - パートのバー下部を右クリック: フレーズをランダム生成またはニュアンスだけを維持します。
[1]-[9]: パートのミュートを ON / OFF します。 [0]: パートのミュートとフレーズの維持を ON/OFF します。
ウィンドゥの下部にはプログレス・バーが表示されています。
これが消えるとパートのミュートが変化し、次の小節でフレーズも切り替わります。
もしも今の演奏を自動的に変えたくない場合は、以下の操作を行ってください。
- パート毎: マウスの右ボタンをクリック - 全パート: [0] キーを押す <オプション> もしも「初音ミク」などのボーカロイドのソフトをお持ちの場合は、Vocal パートを Sequence パートの代わりに加えることが可能です。 1. サンプルの VSQ ファイル (aiueo.vsq) を使って WAV ファイルをエクスポートします。 2. 以下のような WAV ファイルが生成されます。 0.0 - 2.0秒: 無音 2.0 - 2.5秒: "a" 3.0 - 3.5秒: "i" : 3. 「SoundEngine」などを使って WAV ファイルの先頭 (0.0 ~ 2.0秒) を削除し、保存します。 0.0 - 0.5秒: "a" 1.0 - 1.5秒: "i" : 4. テキストエディタで "voice.txt" を開きます。 5. 音声の位置を調整します。
基本的に殆どの音声の位置は毎秒毎になっていますが、Vocaloid の特性上、子音はジャストよりもほんの少し手前から始まっています。
"voice.txt" は「初音ミク V2」での出力データを元に調整されています。もしもこれ以外の Vocaloid またはオリジナルのボーカル素材を同様に作成して使用する場合は、WAV ファイルを確認しながら voice.txt に書かれた値を調整する必要があります。面倒な場合は多少ニュアンスが犠牲になりますが全て 0 でも OK です。
(行数は最小: 1 から最大: 104 まで)
6. "voice.txt" を保存します。 7. "part.txt" をテキストエディタで開きます。 8. パート名とファイル名を以下の例のように書き換えます。 変更前: SEQ, seq.wav, 0 変更後: VOCAL, miku.wav, 0 9. "automata_*.exe" を実行します。
…と、今回はテスト版ってことでなるべくシンプルにするつもりでしたが、最初思ってたよりも欲張って結構色々な機能つけちゃいましたw
まだ他にもアイデアとしてやりたいことが残ってるんですが、それはまたそのうちにということで。
それにしても、こういったアルゴリズム系による自動生成って、制作者の考え方がかなり動作に現れるんですよね。
これをずっと聴いていると、「あーAETAはこんな風にアプローチを考えて音楽を作ってるのかぁ…」ってな具合に気が付かれるかもしれませんねw
といいつつ、実際に作業の傍らで鳴らし続けてると「うぉっ!今のベースラインめちゃくちゃカッコいいじゃん!」とか「今のパートの入り方上がるぅ~!」ってなって、驚かされることも結構あります。
一定の秩序を保ったランダム性というのは時としてそのようなものを生み出すのですね…
うーん興味深い!
というわけで、楽しんでもらえたら幸いです!