RPGツクールMV AudacityのバグでBGMがループしなかった話

目次

  1. 何が起きた?
  2. メタデータのセグメントが大きい?
  3. メタデータはちゃんと読めてる?
  4. ツクールのバグ?
  5. Audacityのバージョンアップで解決

タイトルどおり、Audacityで出力したoggファイルをBGMとして流したところ、ループタグが効かなかった話

何が起きた?

RPGツクールMVでは、.ogg形式のファイルをBGMとして使用することができます。
(最新のNW.jsとトリアコンタンさんのプラグインがあれば.mp3も利用できるようです)

oggのメタデータに専用のループタグを設定することで、BGMを最後まで演奏せずに途中からループ再生させることができます。
一旦BGMがフェードアウトして2周目が始まると、なんとも言えないダサさがあるので、それを回避したい場合にはしっかり設定しておきたいタグです。
公開されているBGM素材の中には、製作者の方が最初からツクールを意識してループタグを仕込んでくれている場合もあります。

そうでない場合、Audacityなどのツールを用いて自分でタグを仕込む必要があります。

参考:RPGツクールのBGMの使用について【oggファイルを使ったループ処理】 - ゲーム音楽の巣

ところが筆者は、ちゃんとLOOPSTART, LOOPLENGTHの2種のタグを仕込んでもループされず、最後まで演奏してLOOPSTARTに戻ってしまう、という現象に直面していました。

メタデータのセグメントが大きい?

これか! と思い、対策プログラムをプラグインとして組み込んでみたものの、解決せず。

メタデータはちゃんと読めてる?

まずここを確認すべきでした。
音楽ファイルにループタグがついているかチェックするプラグイン - ツクマテを利用して、読み込んだBGMのループタグがどうなっているか確認しました。

Audacityで編集したメタデータ

なんかアーティスト名とか化けてますが、これを直しても効果はなし。

くらむぼんさんのプラグインで表示したLOOPLENGTH

おわかりいただけただろうか。
なんか! LOOPLENGTHの末尾に! 1ってついてる!!

数値上、一桁ズレてしまっています。これでは目的の位置でループしないわけですね。

その後、いろいろ触った結果、メタデータのLOOPLENGTHとLOOPSTARTの間に、キーと値合わせて48文字以上のタグが設定されていた場合に、末尾に(その文字数-48)の値が追加されることがわかりました。

ツクールのバグ?

他の音声編集ツールで読み込んだ際には、末尾になにか追加されるなんてことは起きませんでした。
なのでツクールのoggのメタデータのパースがなにかおかしいのでは、という感じはします。

しかし、Audacityで一度出力したoggを、Mp3Tagで改めて保存し直したら正常な値に戻りました。
ツクールが正しくメタデータを読んでくれないケースがあるのは事実ですが、これはAudacity側もなんかこう、やんちゃなことをしているのでは?という気配が漂ってきたわけです。

Audacityのバージョンアップで解決

もしやと思い、Audacityのバージョンを上げてみました。
筆者が使用していたのは2.1.3。去年の3月リリースなので、極端に古いというわけではなさそうです。
しかし、2.3.0がつい先日(9/29)にリリースされており、せっかくだからとバージョンアップに追従してみました。

新しいバージョンで出力した.oggは、ツクールでもしっかりメタデータを読み込めました。

2.3.0で修正されたバグリストの中に
Windows: Metadata Editor: Order of custom fields changed on save.
とあるので、おそらくこの辺で解決されたんじゃないかなーと思っています。