私は、音楽生成AI SUNO で作った曲を、「聴く」だけでなく「走って遊べるステージ」に変えることをしています。ブラウザゲーム「Tapiava Song Run」です。この記事では、その曲→ステージの仕組みを、個人開発の実録として正直に書きます。
先に結論を言うと、流れはこうです。
- SUNO で曲を作る
- その曲を音楽解析して、「いつ・どのくらいの強さで音が鳴っているか」を拾う
- その情報を、ジャンプ・足場・障害物に変換する
- でも自動だけだとつまらないので、最後は手で面白く調整する
- ブラウザゲームエンジン Phaser が、曲と同期して再生する
順に見ていきます。
なぜ「曲をステージに」したかったか
きっかけは単純でした。SUNO で曲を作るのが楽しくて、「クリエイターおとうさん」という名前で出しているうちに、何曲もたまっていったんです。
私は、歌詞でメッセージを伝えるより、曲調そのもので世界観を伝えたいタイプです。やさしい曲はやさしいステージに、たたみかける曲は息もつかせぬステージに——音楽の起伏を、そのまま遊びの起伏にできないか。それがスタートでした。
仕組み①:曲を「音楽解析」する
まず、曲のデータ(音声)をプログラムで解析します。ここで使うのが librosa という音楽解析のライブラリです。
これで取り出すのは、ざっくり2つ。
- テンポ(BPM)と拍の位置 … 曲がどのくらいの速さで、どこで「タン、タン」と鳴っているか
- 音が鳴った瞬間と、その強さ … 「何ミリ秒のところで、どれくらい強く鳴ったか」
さらに曲を、歌・ドラム・鍵盤といったパートに分けて、それぞれの"鳴っている瞬間"を別々に拾います。ドラムの強い一発と、歌のメロディでは、ステージでの役割を変えたいからです。これが「曲の波形に遊びを連動させる」という、このゲームの一番の芯になっています。
仕組み②:鳴る瞬間を「設計図」にする
解析でできあがるのは、いわばステージの設計図です。「この瞬間に、これくらいの強さの"出来事"がある」というリストですね。
これをもとに、役割を割り振っていきます。
- 強く鳴る拍は、大きなアクション(ジャンプ台で高く跳ぶ など)
- 細かく刻む拍は、テンポよく渡る足場
- 盛り上がるパートは、ごほうび(ドーナツ🍩)が増える区間
こうすると、プレイヤーの動きが、自然と曲のノリと重なっていきます。
仕組み③:でも「自動だけ」はつまらなかった
ここが、一番正直に書きたいところです。
最初、私は解析した拍に機械的に足場を並べたステージを作りました。データ上は、ちゃんと曲と同期しています。なのに自分で遊んでみたら、「ただ置いただけ」にしか感じない。ゲームとして、まったく成立していなかったんです。
そこで一度立ち止まり、世界中のヒット作がどう作られているかを調べました。すると、面白いステージにはいくつもの"法則"があると分かってきました。たとえば——
- サビ(曲の山場)に、ステージの山場を合わせる。全体を均一に難しくしない。
- 新しい仕掛けは、いきなり本番で出さない。安全な場所で1回学ばせてから、少しずつ難しくする。
- 1つのステージに、主役の仕掛けは1つ。あれもこれも詰め込まない。
これらを踏まえて、最後は人の手でリズムを整えます。「データが正しい」と「遊んで楽しい」は、まったくの別物。これが、この開発で一番大きな学びでした。
仕組み④:Phaser で、曲と同期して走る
仕上げに、出来たステージの設計図を、ブラウザゲームエンジン Phaser が読み込みます。曲を再生しながら、設計図どおりに障害物やドーナツを流していく。こうして、1曲ぶんの音楽が、そのまま1つの走れるステージになるわけです。
曲ごとにテンポも雰囲気も違うので、同じ「ジャンプするだけ」の操作でも、走り心地はガラッと変わります。
個人 × AI だからできること
少し前なら、「作曲して、解析して、ゲームにして、公開する」なんて、とても1人でやれることではありませんでした。でも今は、SUNO で作曲し、librosa で解析し、Phaser で実装し、設計はAIと相談しながら進められる。個人とAIだけで、「曲→遊び」のループが驚くほど速く回ります。
今はまだ、私が作った曲が走れるだけです。でもいつか、**「あなたの曲が、あなたの遊べるステージになる」**ところまで開いていきたい。その第一歩として、この仕組みを作っています。
文章で読むより、実際に"曲がステージになる"のを体験してもらうのが一番です。1曲は1〜2分。きっと、曲の聴こえ方が少し変わります。
- 🎮 遊んでみる → Tapiava Song Run
- 🏫 作る話・つまずきの話をしている場所 → タピアバの学校(Discord)
— baku(Tapiava 運営)