落書き帳

ちょっとしたメモ置き場

BMS 関連のわざわざページを作るまでもないちょっとしたメモを適当に置いておきます.

まだ編集中.

BMS 制作

譜面製作時に気をつけたいこと

  • #TITLE内のサブタイトルに(長音符) を使用しない

    • LR2 では#TITLE内のサブタイトル内になどの括弧を入れると正常に読み込めなくなるバグがあります
      • #TITLE タイトル [アナザー]← これはダメ
      • #TITLE タイトル, #SUBTITLE [アナザー]←これはOK
  • #SUBTITLEを使用する際に気をつけること

    • LR2 では#TITLE内にサブタイトルとして認識される部分があるとその部分が無視されます
      • #TITLE タイトル ~サブタイトル~, #SUBTITLE [Another]←これがタイトル [Another]となってしまう

難易度表

次期難易度表フォーマット

ソフトウェア

wav → ogg 変換

  • oggenc2 - wav -> ogg変換を行うコマンドラインツール
    • フォルダ内のすべての wav を ogg に変換するバッチファイル
      • @echo off
        for /R %%i in (*.wav) do oggenc2.exe -Q "%%i" >nul

ogg → wav 変換

  • oggdec - ogg -> wav変換を行うコマンドラインツール
    • フォルダ内のすべての ogg を wav に変換するコマンド
      • oggdec *.ogg

動画 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 のインストール

収集

ダウンロード

  • Wget for Windows - コマンドラインダウンローダ
    • あるディレクトリ以下のファイルをまとめてダウンロード
      • wget -r http://...
        • -r: 再帰的に取得する
        • -l: 再帰の深さ
        • -H: ドメイン固定
    • URL リスト内の URL をすべてダウンロード
      • wget -i list.txt

展開

  • 7-Zip - ファイルアーカイバ

    • "*\" に展開を使用することでいわゆるだばぁを防げます
  • tree

    • ディレクトリ構造をツリー形式で表示するコマンド
    • 多重階層になってしまっている 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 に保管されているすべてのファイルを表示する

  • 上記のファイル一覧の URL をhttps://web.archive.org/web/*/http://...からhttps://web.archive.org/web/19900101/http://...と変換するだけのブックマークレット

    • javascript:window.jQuery||document.body.appendChild(function(){var t=document.createElement("script");return t.type="text/javascript",t.src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js",t}()),$("a").each(function(){try{var t=$(this).attr("href");t=t.replace("*","19900101"),$(this).attr("href",t)}catch{}});
      
  • 上記のファイル一覧の URL リストをコンソールに出力するだけのブックマークレット

    • javascript:window.jQuery||document.body.appendChild(function(){var t=document.createElement("script");return t.type="text/javascript",t.src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js",t}());var urlist="";$("#resultsUrl").find("a").each(function(){urlist+=$(this).attr("href")+"\n"}),console.log(urlist);
      

LR2

選曲画面に難易度表の情報を表示する

タグに BMSeeker に登録している難易度表の情報を登録し,選曲画面で表示します.

LR2files\Database\song.dbに対して次の SQL を実行する.

この SQL は,タグに BMSeeker に登録している難易度表の情報を[シンボル][レベル] [コメント]というフォーマットで登録します.

注意: 既存のタグ情報はすべて削除されます.

update song set tag = (
  select group_concat(symbol||replace(folder,"LEVEL ","")||" "||ifnull(comment, ""), ", ")
  from playlist_entry
  inner join playlist on playlist_entry.playlist_id = playlist.playlist_id
  where song.hash = playlist_entry.md5
    and playlist_entry.folder like "%LEVEL%"
    and is_removed = 0
    and playlist_entry.md5 is not null
)

SQL を実行するには以下のようなツールが利用できます.

使用している選曲スキンにタグを表示する定義を追記します.以下のページが参考になるかもしれません.