最近はGPT-5.6 Solにお願いしたら結構なんでもできる時代。ふと、「音声ファイルから自動でキー音無しBMSを作るアプリを作れないか?」と思い、やってみた。(結論を先に言っておくと、今のところはうまくいってない)
練習用に使える譜面を作るというよりも、もっと単純に色んな曲でインスタントに遊べたら面白いよねという意図の試み。別に、練習用譜面はSatelliteに行けばいくらでもあるので、わざわざ自分でやる必要は無いし。
やりたいこと
「音声から譜面を生成する」というタスクを詳細に分解すると、以下のようになると思う。
- 音声ファイルを読み込み、楽器ごとのパートに分解して擬似的なMIDI風データを生成する
- 生成された疑似MIDIデータから、BMS形式(.bme)の譜面を生成する
ひとまずやりたいこととしては、おおまかにこんな感じだ。
MIDIデータを作る、とあるが、別にDAWで作曲するわけでもないので、譜面を作れる程度の粒度で楽譜の情報を復元できればいい。(なので疑似MIDIと書いた)
やってみた
上で書いたような要件をプランモードのSol xhighに投げると、こんな感じの計画を立ててくれた。
Solが立てた計画(もっと下まで続いている)
さらっと読んで、まあなんか譜面の質はともかく最低限上手くいきそうな感じはしたので、そのまま実装してもらった。
音声ファイルをざっくりボーカル、ベースなどのパートごとに分解して、その後にピッチを予測して……みたいな構成になっている。
で、作ったアプリにFLOWERの音源を渡して生成された譜面が、これ。
???
えっ、なに?これは……
最後の残尿なんの音なんだよ
音ゲーコア的な音声は苦手なのかと思って普通のボーカル曲とかも試したけど、結果は似たような感じ
というわけで、GPTに一発でコード書かせただけでは思ったほどうまくいきませんでした。
どうしてこんな目に
なんで変な譜面ができるのかを探っていると、そもそも音声ファイルから楽譜を復元する部分が全然うまくいってないことに気がついた。
実は、今のAIには耳コピは難しいらしい。俺がWaveToneを使って耳コピやった方が全然上手い。そんなことあるんだ。
意外と身近にAIに奪われてない仕事があるもんだ。楽曲生成は上手いのに、素材に戻すのは苦手なのねあなた。
というのも、「音声から楽譜を復元する」というタスクは自動採譜と呼ばれていて、ちゃんと研究の対象になっているくらい難しいタスクなのです。
ただ、自動採譜がそもそも難しいという事実を早めに知れたのは収穫だった。これで譜面生成を諦めてしまうのもなんだか勿体ないので、何か工夫できないかなあと考え中……。