見出し画像

Battle Hanafuda - 音楽制作の裏側

VGS-X のローンチタイトルとして開発中の Battle Hanafuda では、目玉機能のひとつである FM音源(YM2612 / OPN2) を使って和風のBGMを制作しています。

本記事では、その制作の裏側をまとめてみます。


前世代機から継続する「音源」へのこだわり

前世代機の VGS-Zero初代 VGS では、私が自作したチップチューン音源 VGS(Video Game Sound) をメイン音源として使い、次のタイトルをリリースしてきました。

  • 2012年 NOKOGI Rider(初代VGS)

  • 2013年 東方BGM on VGS(初代VGS)

  • 2023年 Battle Marine(VGS-Zero)

  • 2024年 Battle AirForce(VGS-Zero)

個人的にかなり思い入れのある音源です。

VGS-X にも VGS を載せることは技術的に可能ですが、今回はあえて別の道を選びました。


あえて YM2612 のみ搭載

VGS-X では YM2612 を唯一の音源として採用しています。

初代VGSを作っていた頃にも FM音源(当時は YM2203)を候補にしていましたが、商用利用可能なOSSが見当たらず、ライセンス上のリスクを避けるため 完全オリジナル音源の自作 に踏み切りました。それが VGS です。

実際のところ YM2203 を自前実装すること自体は不可能ではなかったはずですが、FM音源にはもうひとつハードルがあり、そこまで情熱を振り切れなかったのかもしれません。


FM音源に感じていた「苦手意識」

OPN 系 FM音源は 4オペ × アルゴリズム の組み合わせで音を作る方式ですが、設定すべきパラメータが非常に多く、狙った音作りが難しいという課題があります。

先人の音色データは多く公開されているため、それらを使うだけなら問題ありません。

ただし、先人の音色は “その曲用に最適化された音” や “汎用性の高い無難な音” なので、自分の曲に入れると 自分の曲に合わせた細かな音色調整 が必須 になります。

そこに、FM音源の沼があります…

  • 調整を誤ると音圧が過剰になる

  • あるいは音が籠もる

  • 深夜に「完璧!」と思っても翌朝「なんだこの汚い音は!」となる

…などの「FM音源あるある」を私も経験してきました。

FM音源は好き…でも扱うのは難しい。
これが私が抱えていた「FM音源への苦手意識」です。

YM2203やYM2612などのOPN系の場合、4オペレーターの組み合わせに加えて、EG(エンベロープ)・フィードバック・Detune・Multiplication(周波数倍率)といったどれか1つがズレただけで“別の生き物の音”になるのが特徴です。

暴れる倍音

特に Operator 4 はキャリア側として全体の個性を決める影響力が強く、ここが暴れると倍音構造が一気に崩れます。

また、ALG3/ALG4 あたりは倍音の暴れも凄まじいです。

これら、「暴れ馬」のようなパラメタ群をコントロールできる「ロデオボーイ」になるにはかなりの熟練を要し、正直なところ私はまだその域には達していません。

YM2612 固有の “変な倍音の出方” や “OPN特有の僅かな非直線性” を正確にコントロールすることができれば、例えば今回私が創りたい「和風音源」などの「テーマと合致した音」を狙って出すことができます。

TLドラッガー

また、TLパラメタを攻め過ぎると Eargasm Explosion などの「強めのイコライザー」が掛かったような音に近い「中毒性が強い波形」になります。

それをモニタヘッドフォンで集中して聴きながら長時間の音色調整作業をしていると、ついついTLパラメタを攻め過ぎてしまいます。

そして、結果的に耳が物凄く疲れます ---- それが、深夜に「完璧」だったものが翌朝になると残念に聴こえてしまう正体なのかもしれません。

私はこの現象を「TLドラッガー」と呼んでいます。


ChatGPT が変えた FM 音源制作

しかし近年、ChatGPT を活用することで FM音源のパラメータ調整が驚くほど簡単 になりました。

具体的なワークフロー

まずは、いつものようにFurnaceで音楽データを作成します。この時点ではプリセットの音色データだけ使って「雰囲気を合わせるだけ」で大丈夫です。

Furnaceでサクッと作曲

Furnaceの場合、txt形式にエクスポートすることができます。

txt形式のデータには、使用している楽器データ(Instruments)や各Chのシーケンスデータが含まれている「生成AIが解析し易いデータ形式」です。

そこで、txt を ChatGPT に渡しつつ、

Ch1のベース音が若干ボヤけているがどうすれば良い?

と依頼すると、
「ボヤけている → 倍音の濁り → Release が強すぎ」と判断して、

Instrument 03 - operator 4 の EG の Release が強すぎて倍音が濁っているため、RR を 2 下げると主旋律に馴染みます。

など、人間が耳で聴いて判断する領域まで踏み込んで助言してくれます。

FM音源に詳しければ『どのパラメタを調整すれば良いか』をある程度正確に判断できますが、最適値は「±1づつ上げ下げ→プレビュー」を繰り返して “発掘” する必要がありました。

また、FM音源に詳しくても『理屈が分かっていても音が分からない』という耳のゲシュタルト崩壊(?)のような場面によく遭遇しますが、ChatGPT の指摘はその “耳の曇り” をリセットする役割として非常に助かります。

もう、二日酔いを恐れる必要はありません。


ChatGPT による楽典分析

ChatGPT の活用は音色調整だけに留まりません。

現行の GPT-5 では 生の波形から高度な楽典分析は不可能 ですが、
Furnace の txt(MML)であれば構造解析が可能 です。

具体的には、

  • 楽曲構造(フォーム)の分析

  • 和声や旋法的な視点からの指摘

  • 用途に応じたアレンジ提案

などが、かなり的確に返ってきます。

以下は Battle Hanafuda のメインテーマ 「秋の山」 を ChatGPT にアナリーゼさせた結果の要約です。

【1. 構造】
前打ち(1/4小節)→ A(主題提示)→ A’(同主題を高音で展開)→ B(G#・A#中心の色替え)→ A’’/C(高音クライマックス)→ ループ。全体で約32小節。

【2. スケール感】
A〜G#を軸にした短調モードで、クロマチックが多め。BセクションではG#・A#・C#・D#が強調され、別モード的な雰囲気。和風で落ち着いた印象。

【3. 各チャンネルの役割】
Ch1 ベース:ルート中心で各セクションを明確化
Ch2 主旋律:順次進行主体で歌いやすい
Ch3 幅旋律:主旋律を支える内声
Ch4 エコー:遅れ・残響で厚み付け
Ch5 サイド:アルペジオで和声補強
Ch6 ドラム:FMドラムで安定したパターン

【4. 調整候補】
・32小節はやや長めなので場面に応じて調整可
・モーダル感ゆえにキーが曖昧に感じられるかもしれないが、曲調には合う
・クライマックス前に1小節だけ密度を下げるとループ感が良くなる可能性

【5. まとめ】
主題提示→展開→色替え→再展開という筋の良い構成で、短調+クロマチックを軸にした和風の雰囲気がうまく出ている。各チャンネルの役割も明確で破綻はない。

ChatGPTによるメインテーマ曲のアナリーゼ結果
(※約3000字 → 約300字への要約版)

私は「楽典に関する理解」があまり深くありません。

長年の耳コピ(東方Projectなど)や楽器演奏(平均律など)から得られた「経験を基礎とした感覚」に頼って作曲をすることが多いです。

それゆえに、曲を作った後いつも「これは楽典的に正しいのか?」と不安になっていたのですが、正確かつ客観的なアナリーゼをしてもらえると安心できます。


ChatGPT による波形分析

現時点では、ChatGPT は波形データから細かいアナリーゼをするのは無理ですが 音圧分析は得意 です。

まず、Battle Hanafuda のタイトル〜1ラウンド終了までの動画から音声のみを ffmpeg で抽出します。

抽出したBattle Hanafudaのトレイラー動画(WIP2)の波形データ

これに、簡単なタイムライン情報(大雑把な時系列を示したテキスト)を添えて「BGMと効果音のバランスチェック」とChatGPTのプロンプトに入力することで、

秋の山の中盤では 1k〜3kHz が少し盛り上がりすぎており、SE とぶつかっていたため、その部分を 2〜3dB 下げた方が良いです。

といった形で「正確かつピンポイントな情報」をアドバイスしくれます。

従来は波形データを目視チェックし、耳で再確認し、調整後に再度リテイクする……という手間がありましたが、ChatGPT に波形分析を任せることで 最小限のリテイクで理想のバランスに到達 できます。


FM音源 x 花札の和風ミックス

花札は1月〜12月までのシーズンや動物(花鳥風月)をテーマとしたカードゲームなので、相性を最大化するため「四季」を意識した次の4楽章の構成を考えました。

  • 春:タイトル(春の海)

  • 秋:メイン(秋の山)

  • 夏:こいこい(夏祭り)

  • 冬:決着(春を待つ季節)

まず、タイトル画面では宮城道雄の「春の海」(Public Domain)のアレンジを配置します。

「春の海」を導入部(タイトル)に配置することで「和」が完全にキマります。

そして、ゲームプレイ開始時のメイン画面では「春の海」の対比として「秋の山」というオリジナル楽曲を配置します。

「曲の対比」といっても、楽典レベルでの対比などの高度なことはしていなくて、「秋の山」は「春の海」と同じ楽器構成(+Bass & Drums)にしつつ、ヨナ抜き音階で短調+クロマチックの曲を作った形です。

同じ OPN2 の楽器構成を使うことで、「春の海」と「秋の山」が “同じ世界の音” として繋がりつつ、旋律やスケールで季節感だけを変える対比構造にしています。

花札(こいこい)では、「こいこい」をすることでとても激アツな展開になるので、「こいこい」の場面用に「夏祭り」をイメージしたアツイ曲を配置しました。

あとは勝負が決着した時のショートループ曲で「春を待つ季節」(冬)を表現しています。なお、最終的にショートループは「勝ち」と「負け」の2パターンになりました。

以下、タイトル→メイン→負け→こいこい→勝ち(逆転)の流れを30秒でまとめてみた動画です。
🔈音量ご注意ください!

文章で書いていて気づいたのですが、これは「四季」というよりは「起承転結」みたいな構成かも?そして、順序もバラバラになった気もしますが、その辺りは些細なことです。


おわりに

私がVGS(音源)を開発した最大の動機は「音色調整の簡易化」です。

VGSでは選択可能な音色をプリセットされている矩形波、ノコギリ波、三角波、ノイズの4種類を「カスタマイズ不可能」な仕様にすることで「音色調整が不要」な構造にしています。

しかし、ChatGPT をはじめとした AI ツールを活用することで、その壁は驚くほど低くなり、その結果「YM2612のみ搭載」という判断ができました。

Battle Hanafuda の音楽は、
「FM音源の難しさ」と「AI活用による新しい制作体験」
の両方から生まれています。

今後もこの制作環境を活かして、より良いBGMを作っていければと思っています。

Battle Hanafuda の Demo版ストアページ に掲載している予告編動画で「タイトル→メイン→負け→こいこい→勝ち(逆転)」の流れを更に詳しく確認できるので、ぜひチェックしてみてください。
👉 https://store.steampowered.com/app/4162420/Battle_Hanafuda_Demo/


いいなと思ったら応援しよう!