SunoAIで和風トランスを2曲生成して、さらにMixxx の Auto DJ機能でDJミックスしてみました. Claude Codeを活用してPythonスクリプトで前処理もしました.
【Trance Mix】鼓みの間 → Breath of the Mountain|142 BPM|Mixxx - YouTube
SunoAIで生成されたトランスの課題
今回、2つのSunoAIの生成曲をDJミックスすることを目指した.
SunoAIで素直にトランスを生成しようとしても、どうもポップスの影響を強く受けてしまう、これはダンスミュージック全般の課題かもしれない.
radio edit 型で DJ がつなぐための intro / outro が無い
DJミックスをするためには、intro/outroに相当する部分がないと、ロングミックスができないのだが、SunoAIだと曲のはじめに4つ打ちのキックをいれてくれない.
構成を指定するプロンプトで生成し直しても、intro にキックは入らなかった.
曲の中でテンポが揺れる
曲の最初と最後でテンポが変わってしまうクセがある. だいたい4bpmくらい上がってしまう. 1曲で完結するならばいいんだけど、2曲を接続しようとすると、テンポの揺れは課題.
Pythonスクリプトで前処理
生成された音源をPythonスクリプトで分析して、さらには前処理をすることで、DJミックスに使える形に編曲することにした.
楽曲構造の分析
生成された曲から情報を抜き出してyamlファイルに書きだした.
小節構造とテンポ解析
beat_this というOSSで拍と小節の頭を取った。これが以降すべての「小節番号」の基準になる。
テンポ推定は抽出した小節と時間との対応関係から自作で推定. テンポの揺れもこれで検出.
小節ごとの特徴量抽出
librosaという定番のツールをつかって小節ごとに情報抽出
- 音量(RMS)
- 低域(40–100 Hz)
- 高域(6 kHz 以上)
構造の推定
だいたい8小節フレーズごとに音楽は遷移していく. 区間の推定は低域と音量の閾値から、intro / breakdown / break / groove / drop をAIで自動でラベル付けした。
その提案を元に、対話しながら人間の耳で楽曲構造を聞き分けた. ここは完全自動化ではない.
一定テンポ化
テンポの揺れに対しては、142 BPMで一定にタイムストレッチさせることにした. pyrubberband というOSSで処理.
処理は小節ごとに伸縮率を決め、曲全体を1回で伸縮させた.
Re-Edit
楽曲分析してわかったのは、これはポップスの楽曲展開だった. verse → サビ付きの drop を繰り返し、エンディングで締める. これをトランス音色でトランスっぽくしていた.
そこで、曲をバラバラにして使える部分を切り貼りすることにした.
ステム分割してintro/outroをつける
intro/outroのドラム部分をまずつくる必要があったので、曲をSTEM分割してdrums部分と先頭と最後に無理やりくっつけることにした.
DemucsをつかってSuno曲をステム分割.
違和感が若干あるが、ここは効果音でもいれれば隠れるかもしれない. 次回の課題.
冗長なブレイクを切り取って無理やりトランスへ
トランスの定番の曲展開である、intro->groove->breakdown->buildup->drop->outro をつくりたかった.
生成された曲は キックが抜けるブレイクが3回くらいあって、それを2回までに収めるために、無理やりbreak-buildupを抜いたりした.
大きなブレイク、ビルドアップからのドロップが曲で1つあればいい.
Mixxx
OSSのDJミックスソフト Mixxx のAuto DJモードで2曲をロングミックスすることにした. Claude CodeからのMixxx操作の自動化は、ボタン操作やつまみの制御はできなかったものの、設定ファイルを書き換えて起動などで、DJの準備だけ自動化できた.
Cue打ち自動化
Mixxxの設定は SQLiteというDBに保存されていることがわかったので、キューは、Mixxx の DB に直接設定を書き込んで打ちこむことができた. intro/outroのマーカーも個々に書き込んだ.
ただ、全自動でというわけではなく、AIがとりあえず打ち込んで、人間が確認と調整みたいなやりとりをした.
Auto DJ モードで起動
人間はスタートボタンを押しただけ.
感想
元々の計画では、DJミックス部分は人間がDJコントローラをつかってやるつもりだったものの、人間のスキル不足と不甲斐なさのため、DJミックスまでツールをつかうことにした.
2曲をつなぐだけで1ヶ月かかるという、ちょっとしたプロジェクトになってしまったものの、いったん手順が確立したら、SunoAIで量産した曲を radio editバージョンへの編曲はある程度自動化できるかもしれない.
今後の展望としては、この生成された曲で、人間がDJミックスの練習をして、動画を再アップロードしたいと思った. ここは自動化せずに人力で頑張りたい.