Gimmick Helper 説明書

このツールについて

■ 概要
Gimmick Helper は、osu! の .osu ファイルをブラウザ上で読み込み、特定の gimmick 作成を補助するための変換ツールです。

Modding Helper が「譜面の問題点を検出するチェックツール」であるのに対して、Gimmick Helper は 譜面ファイルを書き換え、変換後の .osu をダウンロードするツールです。
■ 現在対応している入力
現在は .osu 単体ファイルの読み込みに対応しています。
.osz の読み込み・再生成には対応していません。

注意事項 / プライバシー

■ ファイル処理について
読み込まれた .osu ファイルは、ブラウザ内でのみ処理されます。
ファイル内容がサーバーへ送信・保存されることはありません。
■ 元ファイルについて
このツールは、ローカルの元ファイルを直接上書きしません。
変換後の内容は、新しい .osu ファイルとしてダウンロードされます。
■ 注意事項
Gimmick Helper は gimmick 作成を補助するためのツールです。
変換後の譜面が意図通りに動作することを保証するものではありません。

変換後の .osu は、必ず osu!editor 上で確認してください。

基本的な使い方

■ 手順
  1. .osu ファイルを選択、またはドラッグ&ドロップします。
  2. 使用したい変換タブを選びます。
  3. 必要な設定値を入力します。
  4. プレビュー ボタンを押して、変換内容を確認します。
  5. 問題がなければ ダウンロード ボタンを押して保存します。
■ プレビューが必要な理由
ダウンロードボタンは、直前にプレビューした変換結果を保存します。
そのため、設定を変更した場合は、再度プレビューを行ってからダウンロードしてください。

小節線の分離

■ 背景
osu!taiko の gimmick 作成では、小節線の表示と HitObject の表示を別々に制御したい場合があります。±1 ms ズレは rankable なので、この演出は rankable です。

通常、小節線上に HitObject がある場合、その位置に SV line を置くと、小節線と HitObject の両方に同じ SV が適用されます。
本機能は、HitObject を +1 ms ずらすことで、小節線位置と HitObject 位置に別々の SV line を置けるようにします。
■ 入力形式
小節線の時刻 には、処理したい小節線時刻を 1 つ以上入力できます。
複数の時刻を指定する場合は、カンマ区切りで入力します。
01:23:456, 02:34:567
osu!editor などからコピーした 01:23:456 - のようなハイフン付き表記にも対応しています。
この場合、各時刻の - 以降は無視されます。
01:23:456 - , 02:34:567 -
上の入力は、内部的には次のように扱われます。
01:23:456, 02:34:567
83456 のような ms 形式も入力できます。
■ 変換内容
入力された小節線時刻に対して、その時刻の -1 ms、0 ms、+1 ms にある HitObject (Circle, Slider, Spinner)を探索します。

対象 HitObject が見つかった場合、HitObject の開始時刻を 小節線 + 1 ms に移動します。
その上で、小節線位置と HitObject 位置にそれぞれ新しい SV line を追加します。

Slider や Spinner の終点時刻に変更は加えません。始点のみを +1 ms へ移動します。

Slider は slider長を元に時間を再計算するため +1 ms 平行移動します。なので終点も unsnapped になります。
Spinner は終点時間を .osu で指定する方式です。なので終点は変更前と同じ snapped 状態のままになります。
■ 移動ルール
元の HitObject 位置 変換後の HitObject 位置 追加される SV line
小節線 - 1 ms 小節線 + 1 ms 小節線位置 / 小節線 + 1 ms
小節線 小節線 + 1 ms 小節線位置 / 小節線 + 1 ms
小節線 + 1 ms 変更なし 小節線位置 / 小節線 + 1 ms
■ SV / volume の設定
ノーツ側・小節線側それぞれに、SV と volume を入力できます。

入力欄が空欄の場合は、その時刻で有効な既存 TimingPoint の値を継承します。
例えば、対象時刻で有効な SV が 0.75、volume が 80 の場合、空欄の項目はその値を引き継ぎます。
■ 注意点
追加予定の時刻に既存の緑線がある場合、その緑線は上書きされます。
上書きが発生した場合は、プレビュー結果の警告欄に表示されます。

kiai 状態は現在の TimingPoint から継承します。
つまり、対象時刻で kiai が ON の場合は追加される SV line も kiai ON、OFF の場合は kiai OFF になります。

ボリューム変更

■ 概要
[TimingPoints] にある赤線と緑線の volume をまとめて変更する機能です。
指定範囲内の TimingPoint だけを変更するか、すべての赤線・緑線を一括で変更するかを選べます。
■ 入力項目
項目 内容
対象 範囲指定 の場合は開始時刻から終了時刻までの TimingPoint を変更します。すべての赤線・緑線 の場合は範囲入力を使わず、すべての TimingPoint を変更します。
変更モード 固定値 は volume を指定値に置き換えます。差分をプラス・マイナス は現在の volume に指定値を加算します。
開始時刻 / 終了時刻 範囲指定時に使います。判定は start <= time <= end で、開始時刻と終了時刻のどちらも含みます。
volume 値 固定値モードでは 0 を含む正の整数を入力します。100 以上も入力できます。
差分モードでは -10 や 15 のような整数を入力します。
■ 差分モードの扱い
差分モードでは、既存の volume に入力値を足します。
例えば volume 80 に -10 を適用すると 70 になります。
差分適用後に volume が 0 未満になる場合は、0 に丸めます。
■ 5% 未満 / 100% 超過の警告
変更後の TimingPoint を時刻順に見て、volume が 5 未満、または 100 を超える TimingPoint が有効になる時間帯を警告に表示します。

osu! の rankable な volume 範囲は 5 <= volume <= 100 です。
そのため、volume が 5 未満になる区間と、100 を超える区間は、変換後のプレビュー結果で警告されます。

警告は TimingPoint 単位ではなく、その TimingPoint から次の TimingPoint までの有効区間として判定します。
範囲指定の場合は、指定範囲と重なる区間だけが警告対象になります。

全ノーツに赤線・緑線を設置

■ 概要
指定した開始時刻から終了時刻までの範囲内にある HitObject を対象にし、 各 HitObject の開始時刻と完全に同じ時刻へ、赤線と緑線を追加します。

Circle / Slider / Spinner のいずれも対象になります。
Slider については、Slider 本体の開始時刻のみを対象とし、tick や repeat 点、終了時刻は対象にしません。
■ 入力項目
項目 内容
開始時刻 変換対象範囲の開始時刻です。
終了時刻 変換対象範囲の終了時刻です。
開始時刻から終了時刻までの範囲にある HitObject の開始時刻が対象になります。
■ 変換内容
指定範囲内の HitObject を調べ、対象となる各 HitObject の開始時刻に TimingPoint を追加します。

追加される TimingPoint は、基本的に以下の2種類です。
  • 赤線:その時刻で有効な BPM / meter / sample set / sample index / volume / effects をもとに作成します。
  • 緑線:その時刻で有効な SV / volume / kiai を継承して作成します。
同じ時刻に複数の HitObject がある場合でも、TimingPoint はその時刻につき1セットだけ追加されます。
そのため、同時押しや重なったオブジェクトがある場合でも、同じ時刻に赤線・緑線が重複して大量に追加されることはありません。
■ 既存 TimingPoint の扱い
既存 TimingPoint 扱い
既存の赤線 同じ時刻に既存の赤線がある場合、その赤線は保持されます。
この場合、新しい赤線は追加されません。
既存の緑線 同じ時刻に既存の緑線がある場合、その緑線は削除されます。
そのうえで、現在有効な値を継承した新しい緑線が追加されます。
既存の緑線を削除する理由は、対象 HitObject の時刻に既に緑線がある場合、 その緑線は今回の目的に対して不要、または意図しない値を持っている可能性が高いためです。
■ 赤線の omit first barline
追加される赤線では、HitObject が小節線上にあるかどうかによって omit first barline の扱いが変わります。

小節線上の判定は、その時刻で有効な赤線の BPM と meter をもとに行います。
計算上の小節線位置から ±1 ms 以内であれば、小節線上として扱います。
HitObject の位置 赤線の effects 挙動
小節線上 omit first barline を付けない 小節線を表示できる状態にします。
effects の 8 フラグは有効にしません。
小節線上ではない omit first barline を付ける 不要な小節線が表示されないようにします。
effects に 8 フラグを追加します。

BPM変更

■ 概要
指定した時刻にある既存の赤線 TimingPoint の beatLength を変更し、BPM を極端に大きい値、またはほぼ 0 に近い値として扱えるようにする機能です。

osu! の赤線では、BPM は beatLength から計算されます。
この機能では BPM の値を直接入力するのではなく、選択したモードに応じて赤線の beatLength だけを書き換えます。
■ 入力項目
項目 内容
赤線の時刻 変更したい赤線 TimingPoint の時刻を入力します。
複数の時刻を指定する場合は、カンマ区切りで入力できます。
モード BPM を ∞ に近づけるか、0 に近づけるかを選択します。
選択したモードに応じて、対象赤線の beatLength が固定値に置き換えられます。
■ 変換内容
入力された時刻にある赤線 TimingPoint を探し、その赤線の beatLength を変更します。

モード 設定される beatLength 意図
BPM を∞にする 1E-308 beatLength を極端に小さくすることで、BPM が非常に大きい状態になります。
BPM を0にする 1E+10 beatLength を極端に大きくすることで、BPM がほぼ 0 に近い状態になります。
変更されるのは、対象時刻に存在する既存の赤線のみです。
指定時刻に赤線がない場合、新しい赤線は追加されません。
■ 変更される値 / 保持される値
項目 扱い
赤線の beatLength 選択したモードに応じて 1E-308 または 1E+10 に変更されます。
赤線のその他の値 time、meter、sampleSet、sampleIndex、volume、effects は保持されます。
緑線 変更されません。対象時刻に緑線があっても、この機能では緑線の追加・削除・上書きは行いません。
赤線がない時刻 変換されません。プレビュー結果の警告欄に、赤線が見つからなかった時刻が表示されます。

バーコードノーツ

■ 概要
指定した開始時刻から終了時刻までの範囲内にある Circle の HitObject を対象にし、Don / Kat の種類に応じてノーツ周辺へバーコード状の TimingPoint を追加します。

ノーツ丁度の時刻には高 BPM の赤線を置き、ノーツの前後には BPM を継承した赤線と SV を継承した緑線を配置します。
Slider と Spinner は対象外です。Slider tick、repeat 点、Spinner の終了時刻なども処理しません。
■ 入力項目
項目 内容
開始時刻 変換対象範囲の開始時刻です。
終了時刻 変換対象範囲の終了時刻です。
開始時刻から終了時刻までの範囲にある Circle の開始時刻だけが対象になります。
■ Don / Kat の判定
この機能では、HitObject の hitSound をもとに Don / Kat を判定します。

判定 条件 扱い
Kat Whistle または Clap を含む Circle Kat 用の広いバーコード配置を使います。
Don 上記以外の Circle Don 用の短いバーコード配置を使います。
■ Don の変換内容
Don と判定された Circle に対して、以下の TimingPoint を追加します。

位置 追加する TimingPoint 内容
ノーツ丁度 赤線 beatLength = 1 の高 BPM 赤線を追加します。
これは BPM 60000 相当です。
-1 ms, +1 ms 赤線 + 緑線 赤線はその時刻で有効な BPM などを継承します。
緑線はその時刻で有効な SV / volume / kiai を継承します。
+2 ms 赤線 BPM などを継承した赤線を追加し、omit first barline を有効にします。
■ Kat の変換内容
Kat と判定された Circle に対して、以下の TimingPoint を追加します。

位置 追加する TimingPoint 内容
ノーツ丁度 赤線 beatLength = 1 の高 BPM 赤線を追加します。
これは BPM 60000 相当です。
-5 ms 〜 -1 ms 赤線 + 緑線 各時刻に、BPM を継承した赤線と、SV / volume / kiai を継承した緑線を追加します。
+1 ms 〜 +5 ms 赤線 + 緑線 各時刻に、BPM を継承した赤線と、SV / volume / kiai を継承した緑線を追加します。
+6 ms 赤線 BPM などを継承した赤線を追加し、omit first barline を有効にします。
■ 既存 TimingPoint の扱い
バーコードノーツ機能では、生成対象時刻に既存の赤線または緑線がある場合、その TimingPoint は置き換えられます。

既存 TimingPoint 扱い
既存の赤線 同じ時刻に生成される赤線で置き換えます。
置き換えが発生した場合は、プレビュー結果の警告欄に表示されます。
既存の緑線 同じ時刻に生成される緑線で置き換えます。
置き換えが発生した場合は、プレビュー結果の警告欄に表示されます。
ノーツ丁度の高 BPM 赤線、前後の継承赤線、継承緑線を正しく揃えるため、対象時刻の既存 TimingPoint は保持せずに置き換える仕様です。

黄色ノーツ

■ 概要
指定した時刻に、中央座標 256,192 の 0 length Slider HitObject を追加する機能です。

追加される HitObject は、通常の Circle ではなく Slider です。
通常 Score v2 のために sliderLength = -1 の Slider を使用して、0 length Slider を挿入します。
gimmick 作成時に、特定の時刻へ黄色ノーツ用の HitObject をまとめて挿入したい場合に使います。
■ 入力項目
項目 内容
追加する時刻 黄色ノーツを追加したい時刻を入力します。
複数の時刻を指定する場合は、カンマ区切りで入力できます。
■ 追加される HitObject
黄色ノーツ機能では、指定した各時刻に以下の形式の HitObject を追加します。
256,192,<time>,2,0,B|256:192,1,-1
各値の意味は以下の通りです。
値 内容
256,192 追加される Slider の座標です。譜面中央に配置されます。
<time> 入力した追加時刻です。
2 HitObject type です。2 は Slider を表します。
0 HitSound です。通常の Don / Kat などは付けません。
B|256:192 Slider curve です。中央座標を指定した 0 length Slider として追加します。
1 slides の値です。1回の Slider として追加します。
-1 sliderLength です。Score v2 用の 0 length Slider として、常に -1 が入ります。
■ 既存 HitObject の扱い
指定した時刻に既存の HitObject がある場合でも、黄色ノーツはそのまま追加されます。
既存 HitObject の削除や上書きは行いません。

追加後、[HitObjects] セクション内は時刻順に並び替えられます。
同じ時刻に複数の HitObject がある場合は、既存の HitObject と追加された黄色ノーツが同じ時刻に並びます。
■ 注意点
この機能は HitObject を追加する機能であり、TimingPoint は変更しません。

プレビュー / ダウンロード

■ 概要
Gimmick Helper では、変換後すぐにダウンロードするのではなく、先にプレビュー結果を表示します。
プレビューでは、変換後のファイル名、summary、警告、移動した HitObject の一覧などを確認できます。
■ ダウンロードの仕組み
ダウンロード ボタンは、最後にプレビューした変換結果を保存します。
設定を変更した場合は、再度 プレビュー を押してからダウンロードしてください。

難易度名 suffix

■ 概要
suffix を入力すると、出力ファイル名と [Metadata] セクション内の Version: が書き換えられます。
■ 例
入力ファイル名:
t+pazolite with siromaru - Chambarising (Vanity8) [chamba].osu
suffix に v2 を入力した場合:
t+pazolite with siromaru - Chambarising (Vanity8) [chamba v2].osu
.osu 内の難易度名も以下のように変更されます。
Version:chamba -> Version:chamba v2
■ 注意点
suffix 欄が空欄の場合は、ファイル名と Version: は変更されません。
既に同じ suffix が付いている場合でも、現在は重複チェックを行いません。