ちょっとしたメモ置き場
BMS 関連のわざわざページを作るまでもないちょっとしたメモを適当に置いておきます。
不定期で増えたり減ったりすると思います。
雑なので要注意。
BMS ファイル
譜面製作時に気をつけたいこと
#TITLE
内のサブタイトルにー
(長音符) を使用しない- LR2 では
#TITLE
内のサブタイトル内にー
などの括弧を入れると正常に読み込めなくなるバグがあります#TITLE タイトル [アナザー]
← これはダメ#TITLE タイトル
,#SUBTITLE [アナザー]
←これはOK
- LR2 では
#SUBTITLE
を使用する際に気をつけること- LR2 では
#SUBTITLE
を使用していてかつ、#TITLE
内にサブタイトルとして認識される部分があるとその部分が無視されます#TITLE タイトル ~サブタイトル~
,#SUBTITLE [Another]
←これがタイトル [Another]
となってしまう
- LR2 では
LR2
遅延対策
NVIDIA の GPU を使用している場合
- NVIDIA コントロールパネルから
Low Latency Mode
をUltra
にする
- NVIDIA コントロールパネルから
難易度表
次期難易度表フォーマット
データ部のURLに相対パスを用いる場合の注意
ヘッダー内のデータ部の URL を相対パスとした場合の基準となる URL が難易度表の仕様で定まっていないため、処理が実装により異なります。(実際に BMSeeker と GLA で処理が異なる)
そのためヘッダーとデータの json ファイルが別のディレクトリにある場合は、ヘッダー内のデータ部の URL を絶対パスにしたほうが無難かもしれません。
json を作成する
song.db から json を作成する
以下のツールは SQLite のテーブルデータを json で出力することができます
- SQLite Download Page - コマンドラインツール
- SQLite Online - web 上で実行可能
SQLite Online を使用した json の出力方法
- SQLite Online で
song.db
を開く song
テーブルからSELECT
文を用いて出力したい曲リストを選択する- このとき
AS
句を使用してhash
のカラム名をmd5
としておくとよい
- このとき
- 「Export」→「→ JSON」で json として出力する
SQLの例
SELECT level, title, artist, hash as md5
FROM song
WHERE title like "FREEDOM DiVE%"
ORDER by level
ソフトウェア
wav → ogg 変換
- oggenc2 -
wav -> ogg
変換を行うコマンドラインツール- フォルダ内のすべての wav を ogg に変換するバッチファイル
@echo off for /R %%i in (*.wav) do oggenc2.exe -Q "%%i" >nul
- フォルダ内のすべての wav を ogg に変換するバッチファイル
ogg → wav 変換
- oggdec -
ogg -> wav
変換を行うコマンドラインツール- フォルダ内のすべての ogg を wav に変換するコマンド
oggdec *.ogg
- フォルダ内のすべての ogg を wav に変換するコマンド
バッチファイルにパスを通しておくと便利。
動画 BGA 関連
BMS command memo によると
- 最も互換性が高い形式は MPEG1 (256x256) です。
らしい。
FFmpeg を使用して動画ファイルを上記の形式にエンコードするバッチファイル
@echo off
set OFN=%~1
set FN=%~n1
ffmpeg ^
-i "%OFN%" -pass 1 ^
-c:v mpeg1video -b:v 2M ^
-vf "scale=256:256:force_original_aspect_ratio=decrease,pad=256:256:(ow-iw)/2:(oh-ih)/2" ^
-an -y ^
"_out_%FN%.mpg" && ^
ffmpeg ^
-i "%OFN%" -pass 2 ^
-c:v mpeg1video -b:v 2M ^
-vf "scale=256:256:force_original_aspect_ratio=decrease,pad=256:256:(ow-iw)/2:(oh-ih)/2" ^
-an -y ^
"_out_%FN%.mpg"
del ffmpeg2pass-0.log
bgaenc.bat "bga.mp4"
のように使用します。
アスペクト比が異なる場合はレターボックスが追加されます。
エンコードした動画ファイルを既存の譜面にも読み込ませたいときは拡張子を元の拡張子に合わせる必要があります。
音量
SoX を使用した音量を一括変更するバッチファイル
@echo off
mkdir converted
for %%i in (*.wav) do sox %%i "converted/%%i" gain %1
wavgain.bat +2
のように使用します。引数で音量の変更量をdbで指定します。
変換後のファイルはconverted
フォルダに生成されます。
音割れが発生すると警告が表示されます。
uBMplay のインストール
- uBMplay を導入する - 必要なランタイム及びその導入方法
dx7vb.dll
の入手DX81NTjpn.exe
をダウンロードDX81NTjpn.exe
を 7-Zip 等で展開
収集
ダウンロード
Wget for Windows - コマンドラインダウンローダ
- 再帰ダウンロードなどができます。とても収集向き。
- あるディレクトリ以下のファイルをまとめてダウンロード
wget -r http://...
-r
: 再帰的に取得する-l
: 再帰の深さ- 他にも便利なオプションがたくさんあります。詳しくはググってください。
- URL リスト内の URL をすべてダウンロード
wget -i list.txt
list.txt
は各行に URL を記述したテキストファイル
現在のページ内にある URL リストをコンソールに出力するだけのブックマークレット
javascript:var str="";Array.prototype.forEach.call(document.querySelectorAll("a"),function(r){str+=r.href+"\n"}),console.log(str);
- 上の文字列を URL に指定したブックマークレットを作成し、そのブックマークレットを開くことで実行できます
- コンソールは Chrome なら
Ctrl + Shift + J
で開けます。
展開
7-Zip - ファイルアーカイバ
"*\" に展開
を使用することでいわゆるだばぁを防げます
tree
- ディレクトリ構造をツリー形式で表示するコマンド
tree > tree.txt
とすると結果をファイルに出力できます- 多重階層になってしまっている bms を見つけたいときなどに
├─[0310] Echoes from Pangaea ├─[13eastie] Mermaid Breeze ├─[140/fth + ルゼ] Just one word │ └─no_notes ├─[69 de 74 + morph] CHAOTIC DESTRUCTION ├─[69 de 74] マッドメチャクチャニズム ├─[7mai] Boxel Adventure ├─[@On_OTL] Shadow_Templer ├─[A-ZERO Project + iF + TeePy] EMOJISM
多重フォルダ解除 - 無駄に回層が深い、いわゆる多重フォルダを一回層に変更するツール
Internet Archive 関連
サイト内の IA に保管されているすべてのファイルを表示する
https://web.archive.org/web/*/[URL]/*
- たとえば
https://web.archive.org/web/*/http://bms.hexlataia.xyz/*
とすればhttp://bms.hexlataia.xyz/
以下の IA に保管されているすべてのファイルを表示できます。
- たとえば
上記のファイル一覧の URL を
https://web.archive.org/web/*/http://...
からhttps://web.archive.org/web/19900101/http://...
と変換するだけのブックマークレット- リンク先がファイルの日付選択画面からファイルへのリンクへ変わります
javascript:Array.prototype.forEach.call(document.querySelectorAll("a"),function(r){try{var e=r.href;e=e.replace("*","19900101"),r.href=e}catch{}});
- 上の文字列を URL に指定したブックマークレットを作成し、そのブックマークレットを開くことで実行できます
上記のファイル一覧の URL リストをコンソールに出力するだけのブックマークレット
javascript:var str="";Array.prototype.forEach.call(document.querySelectorAll("#resultsUrl a"),function(r){str+=r.href+"\n"}),console.log(str);
- 上の文字列を URL に指定したブックマークレットを作成し、そのブックマークレットを開くことで実行できます
- コンソールは Chrome なら
Ctrl + Shift + J
で開けます。
差分インストール
BMSeeker 先生におまかせ
便利なリンク集
- BMS command memo (JP) - BMS フォーマットの仕様メモ
- BMS Search Alternative - より便利な LR2IR 検索
- LR2の仕様まとめ (IA) - LR2 のゲージや判定の仕様まとめ
- bms diff tool - 譜面の音ズレチェッカー
- Bayes BPM Counter - BPM 測定器
- BMS作者一覧 - BMSまとめ @wiki - アットウィキ - BMS 作者一覧
- イベント・パッケージ - MEGA - イベント・パッケージの保管
- Index of /file/mirror/ceena-bms - ceena にアップされていたパッケージの保管
- Dropbox Publicフォルダ ミラーリングプロジェクト - Dropbox 保管 (一覧)
- rib2bit/BMS-database - イベントの難易度表と難易度表のミラーと LR2IR のデータ