
Sunoにコード進行やリズムを指定しても従わない理由
プロンプトに書いたコード進行やリズムが守られない
Sunoを使ったことがある人なら経験があるはずです。
「C major、I-V-vi-IV進行、130 BPM」とプロンプトに書いたのに、出てきた曲は違うキーで違うコード進行。「シンコペーションのあるスネア」と書いたのに、出てきたのは普通の2拍4拍。
一方で「EDM、明るい、女性ボーカル」のような雰囲気指定はちゃんと反映される。
この差はなんなのか。
Sunoはコード譜やリズム譜を読むようには作られていない
Sunoのような音楽生成AIは、大量の「テキスト説明文と音声のペア」から学習しています。そのテキスト説明文は「Pop、明るい、アコギ中心、女性ボーカル」のような雰囲気の記述です。コード進行の譜面やリズムパターンの楽譜ではありません。
つまりSunoは「Pop → こういう音」「明るい → こういう雰囲気」という対応を膨大に学んでいます。しかし「[C] [G] [Am] [F] → この進行の音」や「2拍目の裏にスネア → このリズム」という対応は、そもそも十分に学習していない可能性が高いと考えられます。
もっと言えば、人間の演奏家は譜面に書かれているものを演奏できるのに対し、音楽生成AIはそのような学習の仕方をしていないため、楽譜という概念を認識できず、音に変換することができないのです。
テキストで伝えやすい情報、伝えにくい情報
この構造から、テキストプロンプトで安定して伝わるものと、伝わりにくいものがはっきり分かれます。
安定して伝わる:ジャンル(Pop、EDM、Jazz)、ムード(明るい、暗い、攻撃的)、楽器編成(アコギ、ピアノ、シンセ)、ボーカルのタイプ(女性、男性、ラップ)、曲の構造([Verse]、[Chorus]、[Bridge])
安定しない:コード進行(I-V-vi-IV)、リズムパターンの細部、メロディライン
前者は学習データの説明文に大量に含まれている雰囲気の記述。後者は学習データの説明文にはほとんど含まれていない構造の記述。Sunoがv3からv5.5まで6回のバージョンアップを重ねても、この差が縮まっていないのは、問題がモデルの性能ではなく学習データの構造にあるからだと考えられます。
テキストのもう一つの限界:情報が足りない
仮にSunoがコード記号を完璧に理解したとしても、テキストの限界はもう一つあります。
「シンコペーションのあるスネア」──これだけでは、2拍目の裏なのか、4拍目の表なのか、16分音符のゴーストノートなのかが伝わりません。音楽的に必要な情報の大半がテキストには含まれていない。
コード進行も同じです。[C] [G] [Am] [F] と書いても、各コードが何拍ずつ鳴るのか、ボイシングは低音なのか高音なのか、ストロークなのかアルペジオなのか。テキストでは書ききれない情報が大量にあります。
音声ファイルにして渡せば、この問題が解決する
SunoのCover機能を使えば、音声ファイルをアップロードして、その音声をベースに別のスタイルで曲を再構築できます。
音声にはコード進行もリズムパターンも物理的に含まれています。コード進行は「どの音がいつ同時に鳴っているか」として、リズムは「アタックがどのタイミングで起きるか」として、波形に直接埋め込まれている。テキストを経由しないので、テキスト経路の限界をまるごと迂回できます。
音声にはテキストでは伝えきれない情報も全部入っています。それらを個別にプロンプトに書くのは現実的ではありません。音声なら、1つのファイルで全部が一度に渡ります。
まとめ
Sunoでコード進行やリズムパターンをプロンプトに書いても安定しないのは、Sunoがコード譜やリズム譜を読むようには学習されていないからです。Sunoが読めるのは雰囲気の記述であり、構造の記述ではありません。
だから原則はシンプルです。
雰囲気はプロンプトで伝える。構造は音声で渡す。
プロンプトを工夫し続けるのは、Sunoが読めない言語で話しかけ続ける行為です。構造を伝えたければ、Sunoが確実に受け取れる形──音声──で渡す方が早いのです。