オフセット


「オフセット」は、譜面の開始点と音源の開始点を合わせるための数値である。


概要

多くの場合、楽曲ファイルの最初と最後には無音の部分が少なからず存在する。
そのため、その無音部分の長さを指定してやらないとBPM設定が正しくとも譜面が正しく同期してくれない。
この音源と譜面を正しく同期させるための数値をオフセットという。

基本的には「(個々の譜面の)オフセット」と「グローバルオフセット」の二種類が存在する。
場合によっては各ゲームの判定調整機能の数値もコレに含む場合がある。
快適なプレーの為には適切な数値にする必要がある。


オフセットの種類

グローバルオフセット

例えば「WindowsXPでメモリも512MBでCPUはCore2Duoのノートパソコン」でも「1677PC」でもStepManiaそのものは動かせるわけであるが、当然ながらスペックには大きく開きがある。
低スペックの場合は譜面を流す処理が追い付かずに譜面が遅れてくるため、曲と譜面を一致させようと思ったら曲の再生開始点自体を遅くしないといけないし、
逆に高スペックだと譜面を流す処理を早くに出来てしまうので曲の開始点を早くしないと譜面と一致しなくなる。

それをどの程度早く(あるいは遅く)ズラして再生するのかを決めるのがグローバルオフセット。
ここで設定した値はそのマシンで再生するすべての譜面に適用されるため「なんかどの曲も判定が(同じ方向に)ズレてるな」と感じたらこの値を調整すると良い。

DDRで言えば「白筐体は判定が早いな」とか「X筐体は判定が遅いな」とかの、同じ楽曲をプレーした際に筐体の種類によって感じる判定の違いが影響するのがグローバルオフセットと思えばよい。


(個々の譜面の)オフセット

単純に「オフセット」とだけ言った場合はこちらを指すことが多い。
StepManiaの場合、譜面の開始点から何秒後に音源を鳴らし始めるかを秒単位で指定する。
(例1)#OFFSET:1.000;の場合、1小節目1拍目では音源は鳴っておらず、1秒経過時点で音源が再生される。
(例2)#OFFSET:-1.000;の場合、音源が再生されてから1秒経った時点で1小節目1拍目に到達する。

繰り返しになるが、StepManiaにはBPMを解析したり波形からノート位置を調整したりという機能は存在しない。
そして、同じ楽曲でもどのCDから取り込んだかや、どのように編集したかによって「曲が流れ始めるまでの無音の時間」は変わってくる。
なのでそこを譜面制作者が上手く調整する必要がある。
ただし、譜面制作者の力量によって上手く合わせられなかったり、人によっては遅判定が好きだったり早判定が好きだったり、微妙に変わってくるためオフセットを合わせるだけでも結構難しい。


判定調整機能

これも場合によってはオフセット調整に含まれる。
上記二つは「基本的にプレイヤーが変更することを想定していない数値」であるが、こちらはオプション画面で変更することを想定した数値である。
ただし、プラス方向とマイナス方向のどちらにズラせば早く(遅く)なるのかはゲームによって異なるので要確認である。
オフセット調整機能を搭載しているゲームの開発者様。もし見ていらっしゃったらどっちがどっちかちゃんと明記してください。
(例)beatmaniaIIDXでは『FASTが多く出る場合は+方向へ SLOWが多く出る場合は-方向へ調整してください』と明言されている。


補足

最終的に上記の3つの数値を足し合わせたものが各曲のプレーに使用される。

DDRがアップデートで「(楽曲名)の判定を調整しました」みたいな文章を書いていたら個々の譜面のオフセットの話になり、「(○○筐体)の判定を調整しました」みたいな文章を書いていたらグローバルオフセットの話になる。

「X筐体だと遅判定だけど白筐体だと早判定」みたいな話はグローバルオフセットの違いによるものである。
DDRは早く判定調整機能をつけるべき。



「null offset」と「9ms offset」

「null offset」と「9ms offset」はStepManiaで譜面が作成された際に設定されるオフセット値に関する豆知識。
この2つが同じ環境に混ざるとロクなことにならない。覚えよう。
ちなみにこんな場末のwikiの記事を見るよりちゃんとITGやってる界隈の記事を見た方が正確です。

null offset

ざっくりと言えば、譜面を製作した環境と譜面をプレーする環境が同一である場合に気持ちよくプレーできるオフセット。
特に不都合が無ければこちらのつもりで譜面を作成すればよい。
ただし昔からITGやってる人はの9ms offset準拠で譜面を作ることが多いので、国外パッケージを多く導入したい場合はあまり推奨できない。

9ms offset

かつてITGが稼働した時、グローバルオフセットが-0.012秒で設定されていた。
この筐体では音源がスピーカーから鳴ってプレイヤーに伝わるまでに0.003秒かかるということが知られていた。
よってITG筐体でプレーする用に作られた譜面では、null offsetにくらべて9ミリ秒(0.009秒)プラスしないと気持ちよくプレーできなかった。
この9ミリ秒プラスしたオフセットを9ms offsetという。

なんて不便なと思うかもしれないが、昔からプレーしている人は9ms offsetで作成された譜面に合わせてマシンオフセットを設定するため、そういう人が譜面を作るとこのオフセットで提供される。
それゆえに海外ではこちらがデファクトスタンダード。

混ざることによる問題点

null offsetで作成された楽曲をプレーして判定調整を行うと、9ms offsetで作成された楽曲のプレー時に判定が合わない。
逆もまたしかりである。
これを解決する方法は基本的には無い。

現実的な所では、どちらかをもう一方の数値になるようにオフセット変更バッチでも作成してオフセット種類を揃えるか、常にマシンオフセット自動調整モードでプレーするくらいだろう。
どのファイルがnull offsetでどのファイルが9ms offsetなのかが覚えていられるのなら、プレー開始前に都度マシンオフセットを9msズラしてもよい。





StepManiaにおけるオフセットの合わせ方

以下のいずれの項目においても、実際にプレーするデバイスを用いて行うこと。
「実際にプレーするのはゲームパッドだが、オフセットを合わせるのはキーボード」みたいな状況で、両者の入力遅延が異なっていたら調整の意味がなくなってしまう。

グローバルオフセットを合わせる

方法1

デフォルトテーマにおいて
Options → INPUT OPTIONS → CALIBRATE AUDIO SYNC
と選ぶと、左右のみが出てくる譜面をプレーしながらグローバルオフセットの調整が出来る。
(他のテーマでも調整できる場合はあるが、その際に項目が異なっている場合がある。また、このモードが存在しないテーマもある)
この時、目押しでの補正を受けないように画面は見ないでおくとよい。

方法2

  1. 「他の環境でプレーした時にオフセットが綺麗だった」という譜面を貰って来る。
  2. デフォルトテーマでその譜面を選択しオプション画面に入る。
  3. ゲージタイプなどを設定するオプション画面(Song Modifiers画面)を表示する。
  4. 下から3番目にある「AUTO ADJUST」において「Sync Machine」を選択する。
この時、オプション画面の「HIDE」において、判定エリアが表示されなくなる「Dark」と、判定結果が表示されなくなる「Blind」を設定しておくと目押しによる補正が薄くなって有効と思われる。
なお、こちらはデフォルトテーマでなくとも使用可能で、楽曲プレー中にF6キーを2回押せば「AutoSync Machine」と画面の中央下に表示されていれば同様の状態になっている。

この合わせ方がデファクトスタンダードであるために9ms offsetなどという奇妙なシステムが延々と受け継がれてしまっている。


(個々の譜面の)オフセットを合わせる

方法1(譜面のBPMが変わらない楽曲の場合)

  1. ArrowVortex』に譜面ファイルをぶち込む。
  2. メニューの「Tempo」から「Adjust Sync」を選ぶ(またはShift+Sを押す)
  3. 「Find BPM」ボタンを押す
  4. 正しいBPMを選んで「Apply BPM」を押す
  5. Move first beatの横のボタンを押して1拍目を元に戻す

方法2

  1. デフォルトテーマでその譜面を選択しオプション画面に入る。
  2. ゲージタイプなどを設定するオプション画面(Song Modifiers画面)を表示する。
  3. 下から3番目にある「AUTO ADJUST」において「Sync Song」を選択する。
この時、オプション画面の「HIDE」において、判定エリアが表示されなくなる「Dark」と、判定結果が表示されなくなる「Blind」を設定しておくと目押しによる補正が薄くなって有効と思われる。
なお、こちらはデフォルトテーマでなくとも使用可能で、楽曲プレー中にF6キーを1回押せば「AutoSync Song」と画面の中央下に表示されていれば同様の状態になっている。(ここまでほぼコピペ)


SimplyLoveを使用する

SimplyLoveを使って普通に楽曲をプレーする。
リザルト画面で左右キーを押すと、判定誤差のヒストグラムが表示される。

「mean abs error」は誤差の絶対値の平均、「mean」は平均値、「std dev*3」は標準偏差の3倍、「max error」は最大誤差を表しており、数値がプラスであれば本来のタイミングより遅く押していることを示す。
わざわざ標準偏差が3倍されているのは正規分布で考えたときに全体の約99.7%に含まれる範囲になるため。
max error自体は最大誤差であるがそれはパッドの誤反応やギミックなどにより反応が遅れたなどによる外れ値であると考えられるので、このような統計学的な値も用いられてるのではないかと思われる。
これらの数値を見ながら、調整したいオフセット値をテキストエディタまたはStepmaniaの機能を用いて変更する手もある。
基本的に、現在の数値かmeanの数値を引けばよい。(オフセット値0.100から上図の平均誤差を使って修正する場合、0.100 - 0.0063 = 0.0937となる)
+ 旧バージョン
Simply Loveの4.8.5時点では表示される数値が変わっていた。
「mean timing error」は平均誤差、「median」は中央値、「mode」は最頻値を表しており、数値がプラスであれば本来のタイミングより遅く押していることを示す。
今更このバージョンを使う必要はないが、もしも更新するのが面倒であるならmean timing errorを引けばよい。

この方法の良いところは、標本数(計算に使うデータの数)が多くなるところにある。
Stepmaniaの機能を用いて調整を行う場合、24ノーツごとにオフセット調整が行われるため、一番最後の24ノーツの影響が大きくなってしまう。
一方、こちらは1曲通してオフセットが変わらないままプレーした結果がそのまま出るため、より平均値や中央値が安定したものになる。
悪い点はSimplyLoveじゃないと出来ない所と、「プレーする段階」と「調整する段階」の2手間必要な所だろうか。

判定のヒストグラムがおかしい場合

SimplyLoveの配布ページの下部にもあるように、ヒストグラムが波打つように極端な状態になることがある。
(配布ページを曰く「FF7のクラウドのツンツン頭みたい」と表現されている。)

これは入力デバイスの入力検知の頻度によるものであり、Windowsなど各種OSやUSBドライバーによって決定づけられるもので、Stepmaniaの機能やSimplyLoveのテーマの機能としては対応不可である。
改造するなり、入力デバイスを変えるなりして対応すること。(配布ページの下部に対応方法がいくつか載っている)




最終更新:(2025/03/21)
最終更新:2025年03月21日 13:39