#WAV#BMP タブ

#WAV タブや #BMP タブは、オブジェクトのパレットとして機能します。

このリストに登録した音声/映像の素材ファイルは、BMS 内で使用できるようになります。このリストから選択した番号オブジェクトを、メインパネル上に配置します。

BMS で使用する音声/映像の素材ファイルは、譜面ファイルその他とともに同階層に配置し、作品単位でフォルダ分けする構成が一般的です。

通常の BMS アプリケーションは「現在開いている譜面」を起点としてリソースを参照します。BMSE も作品単位のディレクトリ構成を前提しています。パスの定義などでそれを覆すことは可能ですが、あくまで例外と考えてください。

#WAV タブの概要

#WAV タブには、譜面で使用する音声ファイルを定義します。通常は WAV フォーマットが使用されます。音声は手動演奏パート自動演奏パートに分類されます。

#WAV タブ内でリストカーソルを移動させたとき、移動先の番号に音声ファイルが定義されていた場合はプレビュー再生します。通常は WAV・MP3・MIDRMI [https://ja.wikipedia.org/wiki/Resource_Interchange_File_Format#.E5.95.8F.E9.A1.8C] (外部リンク)CDA などを再生でき、DirectShow フィルタを導入することで OGG なども再生できるようになります。

WAV フォーマットに関して、互換性を重視するなら注意すべき点がいくつかあります。少し話が変わりますが、BMS 作品間の音量調整の目安として “A study of loudness in BMS files [https://qiita.com/dtinth/items/1200681c517a3fb26357] (外部リンク)” を読んでおくとよいと思います。

サンプリング周波数

なるべく 44100 Hz を使用してください。22050 Hz11025 Hz は、ユーザ環境によっては【オーディオの詳細プロパティ [http://www.dtxmania.net/wiki.cgi?page=qa_accsound] (外部リンク)】などから設定変更が必要な場合があり、一部の機種では再生時に雑音が混入する場合もあります。

WAV を OGG に変換する予定なら、WAV のリサンプリングは不要です。

以下の音声は、一部の機種で正常に再生されません。
  • 32000 Hz 系列 (8000 Hz・16000 Hz・32000 Hz)
  • 48000 Hz 系列 (12000 Hz・24000 Hz・48000 Hz)

88200 Hz 以上や 96000 Hz 以上の高解像度音源には、いまのところソフトウェア側が対応していません。LunaticRave 2 では、48000 Hz を超えるサンプリングレートは自動的に減質されます [http://right-stick.sub.jp/lr2bga/index.html#lr2_dead] (外部リンク)

ビット深度 (量子化ビット数)

16-bit を使用してください。24-bit 以上の音声は多くの機種で鳴らなかったりノイズに化けます。浮動小数点形式の量子化も、多くの機種で鳴らなかったりノイズに化けます。8-bit は使っても構いませんが、減質の際にノイズが混入しやすいので注意が必要です。

最初から音量大きめで録音すれば [http://necoco.2-d.jp/bms_make/bms.html#2-2] (外部リンク)8-bit に減質しても量子化ノイズが目立ちません。さらに減質後の音声全体を #VOLWAV で弱めれば、ノイズを大幅に抑制できます。#VOLWAV がほぼ実装されない現在は 16-bit のままにしておくのが無難ですが、ビットノイズの手触りを体感したい方はお試しください。

WAV を OGG に変換する予定なら、WAV を 8-bit に減質しないでください。OGG は 8-bit をサポートしていないので、減質済み WAV を OGG に変換しても「無駄に量子化ノイズが加わった 16-bit 波形」ができあがるだけです。

チャンネル数

2 channels (ステレオ)1 channel (モノラル) を使用してください。ほとんどの場合、ステレオのままにするのが適切でしょう。

事前にモノラルと分かっている音声は、モノラルに変換することをおすすめします。聴覚上の副作用なしでサイズを削減できるうえ、OGG に変換する場合もモノラル化が無駄になりません。OGG 変換後容量にはそれほど差が出ませんが、BMS プレイ時のメモリ使用量を削減できます。

モノラル波形をわざわざ探すほどの費用対効果があるかどうかは微妙なところですが、自動化できるならやらない理由はありません。

その他

FL Studio や Studio One などから出力された WAV に、いくつかのメタ情報が付与される場合があります。これらはしばしば環境に悪影響を及ぼします [https://hitkey.nekokan.dyndns.info/diary1601.php#D160111] (外部リンク)。不都合でなければメタ情報をすべて削除してください [https://hitkey.nekokan.dyndns.info/diary1604.php#D160419] (外部リンク)

長さ 1 分以上の音声を使用する BMS は、LR2IR (LunaticRave 2 のインターネットランキング) に登録できません。LunaticRave 2 の変換機能 (BMS を MP3 や動画などに変換する機能) も利用できません。LR2 マニュアルから引用開始

このような曲の多くは、俗に「一本wavキー音無し」や「物故」等と呼ばれるカテゴリーに属する、違法なbmsです。

これらのbmsはLR2ではプレイすることを認めておらず、疑わしい曲はすべてIRへの登録を規制しています。

cranky氏の「Julia」や、一部の海外作者の曲等がとばっちりを受けて登録不可になりますが、これは仕様とさせて下さい。

引用終了。


WAV に関連する内容が減質OGG 化にあります。また「BMSのファイルサイズを小さくする工夫 [https://qiita.com/yuinore/items/4de2639ea97bc6723650] (外部リンク)」に、演奏音の残響・遅延成分だけを BGM に持っていく手法が紹介されています。この手法は演奏感を減じさせるきらいはありますが (たとえば「叩きがずれると遅延成分もまるごとずれる」などの味わい)、それが響く状況は低難度譜面くらいなので、多くの場合、効率的です。

BMS で用いられる音声フォーマットの簡易比較

再生時にデコードを要する形式は、相応の計算資源を “プレイするつど” 消費します。それを嫌って手元で WAV に変換するユーザもいます。

形式 利点 欠点
WAV 加工が楽、全機種対応 高音質だと巨大容量
OGG 低容量・高音質 非可逆圧縮
FLAC 可逆圧縮 圧縮率や普及率は冴えない
MP3 低容量 非可逆圧縮、劣化や音ズレ問題
MIDI 超低容量 環境依存が激しすぎ非推奨

#BMP タブの概要

#BMP タブには、譜面で使用する映像ファイルを定義します。通常は BMP フォーマットが使用されます。映像は背景パート前景パートPOOR アニメーションに分類されます。

BMP 形式の詳細は BGA レーン解説を参照してください。最も互換性が高いのは、256 × 256 pixels の、OS/2 形式でない 1-bit・4-bit・8-bit です。

#BGA (座標定義) 命令や、一部機種の独自仕様 (フリーサイズ BGA など) は、256 × 256 pixels より大きいサイズの画像も扱うことができます。

BMS で用いられる映像フォーマットの簡易比較

単数あるいは複数枚の静止画を並べる映像の場合、特に理由がなければ BMP か PNG を選んでおけば問題ありません。PNG のメタ情報は消しましょう [https://hitkey.nekokan.dyndns.info/diary1509.php#D150918] (外部リンク)

動画形式の利点は、切って並べる必要がない、枚数制限がない、譜面スクロール停止中も映像を簡単に動かせる、などです。欠点は、ファイルサイズが巨大、機種や codec などの環境に大いに依存する、映像内容の組み換えや速度変更が容易ではない、古い機種で表示できない、などです。

再生時にデコードを要する形式は、相応の計算資源を “プレイするつど” 消費します。高画質動画に限らず、過度に最適化された PNG なども、環境次第ではプレイに支障をきたすレベルで遅延を発生させます。

APNG やアニメーション GIF は最初の 1 フレーム目のみが表示されます。

形式 利点 欠点
BMP 加工が楽、全機種対応 高画質のとき大容量
RLE 可逆圧縮 BMP 拡張子 bmp のとき判別困難
PNG 低容量、可逆圧縮 BMSE 表示不可
JPEG 低容量 非可逆圧縮、レイヤー不具合
GIF 可逆圧縮 通常は 256 色制限
MPEG-1 互換性が高い 低画質、じつは Codec など複雑
MPEG-4/H.264 高画質 高負荷、非ロイヤリティフリー
WebM Web で強い 冴えない画質
WMV Win­dows で変換が楽 Win­dows 以外の OS でつらい
  • Angolmois・Sonorous は動画形式は MPEG-1 のみをサポートします。
  • Bemuse は映像形式として WebM または MP4 動画のみをサポートします。Web サーバー用に動画を用意する手順 [https://qiita.com/dtinth/items/4c81fa0bf2507a69e6a0] (外部リンク) (英語) をお読みください。

どちらもクロスプラットフォームな BMS 用ビデオを実現できますが、無難な MPEG-1 動画を作成するのは予想以上に面倒です。LR2での動画BGA再生を支援するページ [http://right-stick.sub.jp/lr2bga/index.html] (外部リンク)」をよくお読みください。


単数ファイルを定義する

  1. ファイルを定義したい番号を選択します。
  2. 選択した番号に対して、ファイルを参照します。
  3. ファイル参照ダイアログから、定義したいファイルを選択します。

1. ファイルを定義したい番号を選択します。

目的番号を左クリックすると、定義リストボックスにフォーカスが移動し、選択カーソルが縁取られた状態になります。

テンキー “+”・- は、定義リストボックスにフォーカスがない場合も有効です。#WAV または #BMP の選択カーソルが移動します。

または、定義リストボックスにフォーカスがあるとき、矢印キーHomeEndPage UpPage Down を押します。[Tab] や [Shift + Tab] や [ボタンにフォーカスがあるとき矢印キー] で、フォームのフォーカスを移動できます。(ただし、メインパネルもしくは定義リストボックスにマウスポインタがある場合、常にマウスポインタ直下の部位がフォーカスされます。)

2. 選択した番号に対して、ファイルを参照します。

ファイルを定義したい行を左ダブルクリックすると、ファイル参照ダイアログが開かれます。

または、定義リスト領域上で右クリックしてコンテキストメニューを開き、“ファイルのロード” を選択するのでも構いません。

オブジェクトパネル右下の「指定」ボタン を左クリックするか、フォーカスして SpaceEnter を押すのでも構いません。

3. ファイル参照ダイアログから、定義したいファイルを選択します。

ファイル参照ダイアログから

ファイルを選択して、“開く” ボタンを押すか、Enter キーを押すか、選択したファイルをダブルクリックすると、定義リストの選択番号に定義されます。


単数または複数のファイルを、ドラッグ・アンド・ドロップで定義する

エクスプローラやファイラーから選択したファイルを、BMSE 定義リストのリストボックス領域にドラッグ・アンド・ドロップして定義することができます。

複数ファイルの一括定義も可能です。


選択カーソルがある行から以降の空白行に、上から順に定義されます。


既に定義されている番号は飛ばして定義されます。


ドラッグ開始位置にあるファイルが、選択カーソル以降の最初の空白行に定義されます。


ドラッグ開始位置のファイル以外は、エクスプローラ上で選択された時点での並び順のまま定義されます。ファイルの並び順を変更すれば、ドロップ時にリストもその順番になります。

ドラッグ・アンド・ドロップではどんなファイルも定義できてしまうので、無関係なファイルが定義に紛れ込まないようご注意ください。(変換ウィザードで整理は可能)


選択カーソル行から以降にある空白行の数が、ドラッグ・アンド・ドロップしたファイルの数に満たない場合、超過分のファイルは定義されません。

  • #BMP 定義リストにドラッグ・アンド・ドロップでファイルを定義したとき、変更フラグが立ちません。(#WAV の場合は変更フラグが立つので、これはバグかもしれません)

重複定義

単一のファイルを、複数のオブジェクト番号に多重に定義することができます。これは音声の定義において重要なテクニックとなります。

通常、ある瞬間に鳴らせる音声は定義 1 種類につき 1 つのみです。

同番号の同時配置

同じ番号のオブジェクトは同時にいくつ配置しても、1 個分しか鳴りません。

同番号の連続配置

同じ番号のオブジェクトを連続させたとき、再生中のファイルが停止する前に同じファイルをリロードすると、先に再生されていた音声は途中で停止します。波形がゼロクロスポイント以外の位置で中断された場合はノイズが発生します。このノイズは状況によっては非常に目立つものです。

重複定義によって、これを回避することができます。単一のファイルを複数の番号に定義し、別々の番号のオブジェクトとして配置します。

重複定義の同時配置

重複定義した「同内容・別番号のオブジェクト」を同時に配置すると、配置個数分、同じ音が同時に再生されます。

重複定義の連続配置

重複定義した「同内容・別番号のオブジェクト」を連続させると、先に再生されていた音声は中断されず再生されます。

重複定義の半端な配置

音声波形が完全に終了する前に同番号オブジェクトが再登場すると、ノイズが発生します。リロードノイズを完全に抑制するためには、波形の長さを考慮しながら適切に重複定義オブジェクトを配置する必要があります。


重複定義の活用例

ノイズの回避

短音ドラムの連打や、残響音を含む長音や、ループ素材などを連続配置する際、多重定義することで譜面再生時のリロードノイズを回避します。BMS ではほぼ必須となる手法です。

音声の性質や使われ方によっては、多重定義しないほうがしっくりくるケースもあります。キックの 32 分トリルなどは、そのつど発音がキャンセルされないと逆に不自然に聴こえるかもしれません。あくまでノイズを避けるなら、いっそトリル全部をまとめて録音するといった方法もあります。

ノイズの予防

演奏オブジェクトのリロードノイズを予防します。正確なタイミングで演奏されなかった場合でも、ズレが軽微ならノイズ発生機会を抑制することができます。

演奏オブジェクトのタイミング指示を無視して連続入力した場合は、もちろん演奏音のリロードが発生します。

オブジェクトの判定や音声割り当てがどの地点から準備されるのかは機種により異なるため、必ずしもこれが予防策たりうるとは限りません。

擬似的な長音化

短い音を多重定義して擬似的に長音化します。フェードインやフェードアウトなどで波形の繋ぎ目の凹凸を均せば、音声は滑らかに連続します。

ファイルを使いまわす分、作品容量を節約できます。

性質上、波形の出だし部分 (アタック) があまり目立たない音が長音化に向いています (ストリングスなど)。

演奏オブジェクトとして使用する場合、擬似長音ではなく本物の長音を用意するほうが、演奏感は向上します。

音量の増大

多重定義で特定ファイルの音量を n 倍します。

ファイルを使いまわす分、作品容量を節約できます。

単純に整数倍されるので、音割れに注意してください。

また性質上、演奏オブジェクトとしての使用には向いていません。認識できる演奏音が 1 種類のみ、かつオブジェクト全部を拾わなくても演奏音を認識できてしまうため、いわゆる “演奏感” が低下します。

意図的なリロード

あえて多重定義を行わず、同番号オブジェクトをそのまま連続させて発音を意図的にキャンセルさせる手法もあります。

たとえば長めのブレイクビーツやボーカルサンプルなどをタイミングよくリロードすれば、リズミカルなパターンになる場合があります。

演奏オブジェクトでこれを行い、サンプラー的な演奏感覚を狙った作品もあります。リロードノイズすら「演奏している実感」として有益に働く場合もあるため、重複定義が常に最適解であるとは限りません。


他のアプリケーションにおける重複定義

  • BMSResourceRegister [http://d.hatena.ne.jp/d11/20090623] (外部リンク) は重複定義作業を多少楽に行えるようにします。

    (註: 現在ダウンロード不可)

  • BME2WAV [http://childs.squares.net/program/bme2wav/index.html] (外部リンク) において、オプション「同じ WAV が鳴っても前のを消さない」を有効化すると、譜面内の全オブジェクトが多重定義されたものと同様に扱われます。

    通常この項目は有効化したほうが綺麗に変換できますが、意図的に発音キャンセルを行っている一部の作品は、この項目を無効化しないと曲が崩れます。

  • BMX2WAV [http://childs.squares.net/program/bmx2wav/index.html] (外部リンク) における [詳細設定 → 変換タブ → WAV が鳴り終わる前に同じ WAV が鳴った場合、前の WAV を消す] も BME2WAV と同様です。ただし BME2WAV とは文意が逆になっています。一般的なプレイアブルアプリケーションと同じ鳴り方にしたい (発音キャンセルさせたい) 場合、この項目を有効化してください。


#WAV#BMP タブの操作

リスト上でホイール回転 ↑↓

リストボックスの表示領域を上下にスクロール

  • スクロール量は、【コントロールパネル → マウス → マウスのプロパティ → “ホイール” タブ】の設定値に従う
リスト上で左クリック
クリック位置の番号を選択 (リストカーソル移動)
リスト上で左ダブルクリック (やり直し不可)
クリック位置の番号にファイルを定義 (参照ダイアログ)
リスト上にファイルドロップ (やり直し不可)

選択カーソル行から、以降の空白行にドラッグ・アンド・ドロップしたファイルを一括で定義 (複数可)

リスト上で右クリック

定義リストのコンテキストメニューを開く

  • マウスオーバーや矢印キー上下でメニュー項目を選択
  • 左クリックや Enter で選択項目を実行
  • アクセスキー LDR で各項目を選択して即実行
  • EscAltF10、他の箇所クリックなどでメニュー閉じる
ファイルのロード (やり直し不可)
選択カーソル行にファイルを定義 (ファイル参照ダイアログ)
選択ファイルをキャンセル (やり直し不可)

選択カーソル行の定義を消去

  • 単に定義済みアイテムを消すだけ。実際のファイルは消えません。
選択ファイルをリネーム (やり直し不可)

選択カーソル行に定義アイテムがあるとき、[譜面上の定義名] と [実際のファイル名] を同時に変更

  • 文字列入力フォームで、IME は常に無効になる
  • ファイル名だけでなく、パスの定義も可能
テンキー “+”・-
選択カーソルを上下に 1 行ずつ移動
Shift + テンキー±

選択カーソルを上下に 3 行ずつ移動

上下方向交換ボタン 左クリック、Ctrl + テンキー±

選択カーソル行の定義内容を 1 行先の定義と入れ替える

Ctrl + Shift + テンキー±

上方向交換 もしくは 下方向交換 を 3 回連続で実行する

(== 選択カーソル行の定義内容を 3 行先まで入れ替える)

Page UpPage Down

選択カーソルを上下に 1 ページ量ずつ移動

(たとえば、表示されている行が 13 行なら、±12 行ずつ移動)

  • [リストの表示行数 -1 行] を 1 ページ量とする
  • 移動量は、入力時点の BMSE ウィンドウ高さに依存する
  • 移動量は、垂直バーのトラック左クリック 1 回分と等価
  • リストボックスにフォーカスがないとき、入力は無効
HomeEnd

選択カーソルを、リストの先頭/末尾に移動

矢印キー
  • リストにフォーカスがあるとき、カーソルを 1 行移動
  • タブにフォーカスがあるとき、タブを切り替え
  • ボタンにフォーカスがあるとき、ボタンを切り替え
#WAV タブ展開時、停止ボタン 左クリック

定義リストの音声プレビュー、および “メインパネルの単体選択プレビュー” の音声を停止

  • 停止するのは BMSE の再生機能による音声のみ。ビューワなどで再生中の音声には作用しない
  • 新規作成時点から譜面未保存のとき、BMSE.exe は「BMSE.exe があるフォルダ」を暫定基点パスとする。つまり、BMSE.exe の同位にあるファイル以外はプレビュー不可。

    譜面を保存すれば、以降 BMSE は譜面のパスを基点にファイル参照を行う (== リネームもプレビューも可能)

#BMP タブ展開時、表示ボタン 左クリック

BMP・BGA プレビューウィンドウを開く/閉じる (トグル)

  • 選択カーソル行の #BMP#BGA を表示する
  • 新規作成時点から譜面未保存のとき、リネームや音声プレビューと同様の制約あり
消去ボタン 左クリック (やり直し不可)

選択カーソル行の定義を消去

  • 単に定義アイテムを消すだけ。実際のファイルは残る
指定ボタン 左クリック (やり直し不可)

選択カーソル行にファイルを定義 (ファイル参照ダイアログ)

  • マウスなしでもファイルを定義できる

他のアプリケーションにおける定義リスト並べ替え

BMSE は 1 行単位の定義操作しか行えませんが、BMS List Sorter [http://childs.squares.net/program/bmslsort/index.html] (外部リンク)iBMSC [https://hitkey.nekokan.dyndns.info/ibmsc_ja/] (外部リンク)/μBMSC [https://github.com/zardoru/iBMSC/releases] (外部リンク) は、複数のリストアイテムをまとめて移動・削除できます。

複数行移動は、複数の BMS から 1 枚の譜面を合成する場合にも役立ちます。部分譜面を個別に編集し、各譜面の定義番号全体をずらしたうえで、定義と配置をまるごと 1 枚にコピーペーストすれば、簡単に譜面を統合できます。

これにより、複数の章からなる組曲風の譜面や、複数作品を合体させた譜面などを作りやすくなります。


パスの定義

“選択ファイルをリネーム” において、パスを指定すると、ディレクトリ構成も同時に変更されます。

通常は定義リストにファイル名を指定しますが、これは [現在編集中の譜面があるフォルダ] を基点としたパスの定義でもあります。

したがって、リネーム時に 1 階層上位 (“..\”) や下位のディレクトリを指定すれば、対象ファイルも指定通りに移動します。パスの定義とファイルのリネームは同時に行えます。

  1. たとえば、ある時点での編集中のディレクトリが “parent\current” フォルダであるものとします。
  2. current” フォルダ内を参照している定義アイテム “test0001.wav” を、定義リストのメニューから “..\01.wav” にリネームすると、
  3. 実際の “parent\current\test0001.wav” は、上位階層 “parent” フォルダに移動し、parent\01.wav” になります。

パスの定義やリネーム機能には問題が多いので、ご注意ください

分離符はスラッシュ (“/”) ではなくバックスラッシュ (“Unicode Character 'REVERSE SOLIDUS' (U+005C)日本語環境では “半角の円記号 (U+005C)) を使ってください。スラッシュ区切りのファイルパスは、BMSE や uBMplay を含むいくつかのアプリケーションで不具合を発生させます。

存在しないディレクトリを指定すると、BMSE が強制終了します。

ドライブレター (“:”) を含むフルパスを指定すると、BMSE が強制終了します

「フルパスが指定された定義」を含む譜面を開くと、BMSE が強制終了します。

256 bytes を超える長さのパスを指定すると、BMSE が強制終了します

一部の BMS アプリケーションはパスの定義を解釈しません。特に Bemuse [https://bemuse.ninja/] (外部リンク) が (v43 時点では) パス定義を解釈しないのがつらいところです。一部のリソース整理型 BMS はオンラインでのプレイを断念せざるをえないでしょう。

新規作成から譜面を保存するまでの間、BMSE は「BMSE.exe があるフォルダ」を暫定的な基点パスとします。つまり「BMSE.exe の同位からファイルを参照できる定義」しかリネームできません。編集中の譜面が一度でも実体として保存されれば、以降 BMSE は譜面のパスを基点にファイル参照を行うようになるので、リネームもプレビューも可能になります。

拡張子がないファイル名にもリネームできますが、それがオブジェクトとしてスクリーンに描画される状態で “ファイル名を表示” すると、BMSE が強制終了します。

指定したパスが既に存在する場合、その名前には変更できません

ファイル名には次の文字は使えません: バックスラッシュ、スラッシュ、コロン、カンマ、セミコロン、アスタリスク、疑問符、引用符、小なり、大なり、パイプ。

ファイル名に使用できない文字を指定すると、様々な不具合が発生します。これらは (もし入力できたとしても) 使わないでください。バックスラッシュ (“\”) は階層の分離符としてのみ使用してください。

半角スペース (“U+0020 SPACE”) および「 ASCII 印字可能文字」の使用も避けてください。環境によりパス文字列の文字化けや誤解釈を引き起こします。たとえばひらがな・カタカナ・漢字・半角カタカナなどを用いたパスの定義は、非日本語圏では正常には認識されません。詳細は外部資料 [https://hitkey.nekokan.dyndns.info/20160103-filename.htm] (外部リンク)を参照してください。


定義リストからのリネーム時、重複定義は考慮されません。たとえば #WAV0105 の定義が重複しているとき、#WAV01 をリネームすると、#WAV0205 は無効な定義となります。古い名前のファイルはもはや存在しないので、#WAV0205 は参照もリネームもできません。

  • リネーム後のファイルを再び元の番号に重複定義し直すか、
  • もしくは重複定義は全ファイル名が確定した後で行うか、
  • そもそも BMSE のリネーム機能を使わない、などの対処法があります。

定義リストからのリネーム時、変更フラグは立ちません。たとえばリネーム直後に BMSE の終了を試みると、保存確認なしで BMSE が終了してしまいます。この場合「実際のファイル名は変更されたにも関わらず、譜面上の定義名は未変更のまま」という状況になり、リネーム対象は無効な定義となります。