因果 - 音ズレの原則の積層

 これまでに作られ公開されてきた数々の DTX 譜面データは、かけがえのない資産です。

 「サウンドのズレ」「入力のズレ」「描画のズレ」に対し、DTXMania は時間とともにどんどん改修され仕様も変更されて来ました。今後もこれは続くことでしょう。たぶん。しかし、一度作られた譜面データが新しい DTXMania に合わせて修正されて何度も公開される、ということはまず行われないのが現状です。これは「音ズレの原則」に対応しようとすると非常に難解で無力な作業になってしまうこともその一因だと推測します。

 ここでは、譜面データが作られた当時の状況が原因で、これまでに述べてきた様々な対策をもってしても改善することが困難である 3 つの例を紹介します。

DTXViewer の罪

 DTX譜面を作るツールとして DTXCreator がありますが、初期の頃は、そこから編集中の譜面を実際に再生してみせるツールが DTXViewer でした。

 これから先、DTXViewer を使って調整された譜面はほぼ確実にズレるようになるでしょう。

 DTXViewer は、その役目を DTXMania 本体に引き継ぎ、2007年に開発が終了しました。
 これは、DTXMania の機能拡張や改修に DTXViewer が(途中ソースが行方不明になっていたこともあって)追いつけなくなり、DTXMania とのズレが大きくなってきたことが原因です。DTXViewer で調整したのに DTXMania でズレるとなれば、当然最後は DTXMania を使って音合わせを行うことになります。二度手間です。

 その後、行方不明だった DTXViewer のソースは発掘できましたが、それを最新の DTXMania と同じ仕様にまで改修するよりは、いっそ DTXMania 本体で DTXViewer の機能も併せ持ったほうが合理的だという流れになっていました。

 こうして DTXViewer は、WASAPI や ASIO にも対応することなく、その役目を終えました。
 

 しかし、私は大きなミスを犯してしまいます。

 DTXViewer が役目を終えてからも、DTXCreator のパッケージに DTXViewer をずっと含めたままにしてしまいました。DTXCreator の初期状態ではビュアーとして DTXViewer を使用するようになっていたため、古い DTXViewer の代わりに DTXMania 本体が使える状態なのにも関わらず、その後もずっと DTXViewer で調整を行う譜面開発者さんが多くいらっしゃったようです。

 なお、DTXCreator 026(2014/07/07)以降から、オプション設定で、使用するビュアーを選択できるようになりました。初期値も DTXMania 本体になっているので安心です。

 古いバージョンの DTXCreator を使用している方は、これを機に最新版への移行をお願いします。

無印版/派生版DTXManiaの罪

 無印版とその派生版の DTXMania は、DirectX9 の時代で停止したままです。現在も更新が行なわれているバージョンもあるものの、その基本構造は DirectX9 のままです。

 これは、古い DTXViewer を使ったケースと同じ問題を引き起こします。

 これまで述べてきたような時々刻々と変わる音ズレへの対策やWindowsの仕様変更などに追従してこなかった古い仕様の DTXMania をビュアーに使って作られたDTX譜面データには、作成途中から既にランダムな音ズレが組み込まれ始め、作成中に何度もランダムに変わっていき、完成時点でそのときのランダムな音ズレが固定的に埋め込まれてしまいます。

 また、入力に関しても同様で、コードは変わらずとも内部仕様が激変しているWindowsに追従していないため、入力の誤差も大きくなります。しかも、その誤差を識別できるほどの精度がないためにそれが顕在化しないケースもあります。(例えば、本来の入力時刻が大きくズレていても、内部の精度が悪いため同一値に丸められてしまい、すべて Perfect~Great か Miss かという非常に極端な判定になる現象も見受けられます。)

 無印版や派生版はすでに私の手を離れているので、これは改善のしようがありません。
 古い DTXMania をビュアーにして譜面を作るのはやめてくださいという啓発活動を地道に行なっていくしかありません。する気はないですが。

mp3 の罪

 mp3 には固有の「サウンドのズレ」があること、そしてそれを MP3 再生遅延防止機能で回避したことは、「報告B」の章で述べました。ですが、mp3 にはもうひとつ、「音ズレの原則」による影響が深く根付いてしまいました。

 サウンドファイルを mp3 形式にすれば、そのファイルサイズを大幅に小さくすることができます。ですが、DTXMania で mp3 に対応した頃には、世間一般のサウンドエディタにはまだ mp3 を直接読み込んだり mp3 で直接保存したりする機能はありませんでした。

 そのため、DTX データを作っている最中はサウンドを wav ファイル(サウンドエディタで利用できる形式)を使用し、DTX データが完成して配布する直前に mp3 に変換する、ということがありました。

 このとき、どのタイミングで wav を mp3 に変換するか、あるいは変換しないのか、あるいは(ないと思いますが)mp3 を wav に戻して配布するのか、といった条件次第で、音ズレが発生する可能性が出てきます。

 以下は、条件ごとに分析してみた結果です。

No対象作成時作成時の音あわせツール配信時演奏時ずれ備考
1DTXの#WAVwav任意wavwav問題なし
音楽ファイル
2DTXの#WAVwav任意wavmp3DTXManiaが無音領域をスキップするため
音楽ファイル
3DTXの#WAVwav任意wavwavあり演奏者が自分で無音領域をカットする必要あり
音楽ファイルmp3
4DTXの#WAVwav任意wavmp3DTXManiaが無音領域をスキップするため
音楽ファイルmp3
5DTXの#WAVwav任意mp3wav作成者の記載ミス?
音楽ファイルwav
6DTXの#WAVwav任意mp3mp3DTXManiaが無音領域をスキップするため
音楽ファイルwav
7DTXの#WAVwav任意mp3wavあり演奏者が自分で無音領域をカットする必要あり
8DTXの#WAVwav任意mp3mp3DTXManiaが無音領域をスキップするため
音楽ファイル
9DTXの#WAVmp3DTXManiawavwavあり演奏者が自分で無音領域をカットする必要あり
音楽ファイルDTXViewer
10DTXの#WAVmp3DTXManiawavmp3あり作成者が自分で無音領域をカットする必要あり
音楽ファイルDTXViewer
11DTXの#WAVmp3DTXManiawavwavあり作成者と演奏者の両方で無音領域をカットする必要あり
音楽ファイルDTXViewermp3
12DTXの#WAVmp3DTXManiawavmp3DTXManiaが無音領域をスキップするため
音楽ファイルDTXViewermp3
13DTXの#WAVmp3DTXManiamp3wavあり作成者が自分で無音領域をカットする必要あり
音楽ファイルDTXViewerwav
14DTXの#WAVmp3DTXManiamp3mp3あり作成者が自分で無音領域をカットする必要あり
音楽ファイルDTXViewerwav
15DTXの#WAVmp3DTXManiamp3wavあり演奏者が自分で無音領域をカットする必要あり
音楽ファイルDTXViewer
16DTXの#WAVmp3DTXManiamp3mp3DTXManiaが無音領域をスキップするため
音楽ファイルDTXViewer
17DTXの#WAVmp3otherwavwavあり作成者が自分で無音領域をカットする必要あり
音楽ファイル
18DTXの#WAVmp3otherwavmp3ありDTXManiaの無音領域スキップ機能を殺す必要あり
音楽ファイル
19DTXの#WAVmp3otherwavwavあり二重にずれるので無音領域をカットしても無駄
音楽ファイルmp3
20DTXの#WAVmp3otherwavmp3DTXManiaが無音領域をスキップするため
音楽ファイルmp3
21DTXの#WAVmp3othermp3wav作成者の記載ミス?
音楽ファイルwav
22DTXの#WAVmp3othermp3mp3ありDTXManiaの無音領域スキップ機能を殺す必要あり
音楽ファイルwav
23DTXの#WAVmp3othermp3wav問題なし
音楽ファイル
24DTXの#WAVmp3othermp3mp3ありDTXManiaの無音領域スキップ機能を殺す必要あり
音楽ファイル

※other … GDA や BMS など他の形式・他のツールで作ってから DTXに変換した場合など。
※この表は演奏ツールとして DTXMania を想定しており、他のツールで演奏される場合にはもう1枚同じような表が必要。

 結論。音ゲーで mp3 を使うのはやめましょう

 せめて ogg にしましょう。