DJ Hermes、展示のあとがき

 DJ Hermes、展示のあとがき

生成AIなんでも展示会 vol.6へ展示で参加しました。来てくれた方はありがとう、一緒に参加された方々、おつかれさまでした~。

出展にあたって既存の仕組みで作ったものを持っていくだけではつまらないと思ったので、「Hermesがリアルタイムで作曲してリアルタイムでDJプレイする」、Hermes専用のライブDJシステムを作ってもっていきました。そのDev-logです。

生成音楽じゃだめなの?

今回作った仕組みはSUNOに代表されるDiffusionのモデルで「音声ファイル」を吐かせる話ではなく、LLM にちゃんと「作曲」させる話です。生成音楽の界隈は著作権やら品質やらでいつも揉めてる印象なので。。

なんでHermesなの?

Hermes がかわいいので、Hermes をメインに展示したかった。それだけです。Hermesかわいい。

作曲させるまでの足取り

案1. MIDIを書き出させる

実はほとんどのモデルで、とっくにMIDIで作曲できます。じゃぁMIDI書き出して鳴らして、それで展示として面白いか?という課題が。そこはかとない平成感、すぐ止まる曲。

実機シンセとかいっぱい持っていってHermesがオーケストレーションするのなら面白いでしょうけど、機材が足りないです。

案2. PureDataはどうだろう?

そもそもPureDataって何よって話ですけど、

こういうパッチシンセをPC上で再現するような、かなり歴史の古いツールです。AbletonLiveの上位版についてるMaxのOSS版ていう感じです。

パッチングも見えるし、基本ずっとループだし、ライブで鳴らしっぱなしにするにはうってつけ。OSSなのでMCPコネクタでHermesからも操作バッチリや!

と思ったんですけど、AIがPdのパッチングをほぼ学習してなくて、ほぼ操作できなくて御蔵入り。

(HermesにPureDataのスパルタ教育を施してスキルで作らせるっていう手もありましたね。次回それで出るかも。)

案3. テキストベースならどうだ?

PureDataは学習してないけど音楽理論ベースでMIDIは書き出せる、ならテキストベースの音楽ソフトなら色々できるのでは?と思い、Strudel REPLを思い出しました。

そもそもStrudelって何よ?っていう話ですけど(再放送)

実際Hermesにドキュメントを読ませて書かせてみたら、ポン出しで案外ちゃんとしたアシッド・テクノが作れました。これならいけるかなと。

案4. Strudel直接操作させる?

Strudel REPLってブラウザベースなんですよね。Hermesから操作しようとすると、

  • 状態をスクショで確認
  • OCRで文字起こし
  • 音楽性を推論
  • ブラウザに文字入力

とメチャクチャ遅いしトークンも喰う。

作曲だけさせて手動コピペっていうのも展示としてどうなんよ、ということで……

専用DAW作りました

そこで方針が固まりました。Strudel の記法で演奏できて、MCP でリアルタイム操作できる TUI の DAW を自分で作る。どうせ作るなら 2 曲同時再生して DJ プレイできるようにする。

それがDJ Hermes。
(最初Strudel-rustって名前だったんですけど、ユーザーグループに「Strudelって名前は使わないで」的な書き込みがあったのでリポジトリ名も変えました)

リポジトリの記録を見ると7/27に作り始めたみたいです。2ヶ月弱で良く頑張りましたね。(HermesとGrokが)

本家Strudel REPLとは関係ありません

Strudel REPLはAGPLでライセンス的に重いのと、使用しているPCM音源がちょっとこれは、、というのが使われていたので、あくまで「Strudelの記法で演奏できる、オリジナル音源の2トラックのDAW」として作成してます。

PCM音源づくり

CC-0の音源で済ませようかと思ったんですけどちょっと足りないですし、自称CC-0で実際は機材からぶっこ抜き音源とかもあるので、いっそのことと作るか……。ということで4オペFMシンセも作って、それでレンダリングしたWAVを載せています。

GrokBotで音作り

今回の制作で一番AI活用できたなと思う点がここでした。

AIって、「目」はあるけど「耳」がないんですよね。音声チャット出来てますけど、あれは文字情報に直してるから理解できてるだけで。じゃぁ「目」で分かる形にしたらいいのでは?ということでWAVからスペクトラムアナライザー画像を作成するツールを作らせました。

リファレンスとしてちゃんとしたサウンドパックのスペクトラムアナライザー画像を渡して、「これに近づけて」を繰り返しました。

GitログがPCMカタログの差し替えとretuneで埋まっているのはそのせいです。キック、ベース、ハット、スネア、クラップ、パッド、ドローンサウンド。GrokBotの自動チェックもしましたけど、実際鳴らしてチェックもしました。
単体で聞いてOKでも曲にしてみたらピッチズレてたりとか。1週間くらい余暇はこれで潰れてました。

何個あるのか数えてないですけど100は超えてると思います。マジGrokBotが無かったらこのやり方は出来なかったです。

作曲はHermesのスキルで

作曲は、まずHermesに「ダンスミュージックとはなにか(ねっとり」みたいなことをプロンプトで送り、曲を作らせていい感じになったらlearn。「ミニマルテクノとはなにか」を教え込み曲を作らせlearn。地道。

あんまり詳しくないジャンルが厳しかったです。AmbientとかKawaii Futurebassとか言語化できなかったんで微妙です。。

スキルが出来ちゃったらあとは「ハウス30曲作って」とかの無茶振りで量産しました。生成されるのはテキストなので20分くらいで16ジャンル×30曲=480曲が完成。さすがAI。

DJ機能はほぼTUI側

展示では「フロアを沸かせて」でフラッシュフィルしたりするように作ってますが、実際のところTUI側にプリセットで準備している機能を再生しているだけに近いです。Strudel本家にもそういう機能はないので独自拡張です。

表示されているのは2トラックですが、じつはミキシング用にもう1トラック読み込んでます。そのミキサートラックにフィルやロングミックスのスコアが入っているという実装です。

ソース公開しています

ソースは Apache-2.0、同梱WAVはCC0です。フォークして魔改造も大歓迎です。好きに遊んでください。FMシンセの方は人間が使うようにはデザインしてないので、AIに渡して「これでキラキラパッド作って」とかで使うほうがいいと思います。

dj-hermes: https://github.com/sin5ddd/dj-hermes

音源制作用FMシンセ: 

Blog AI 展示会