やりたいこと
普通、音楽ファイル(ループチャンクがあるもの)は、一つのフォルダに入れることで、ba.aldにまとめることができます。その際のリンク番号はファイル名で決まります。
しかし、アリスから配布されている素材集は、
ranceⅠ_01.wav ranceⅠ_02.wav ...
ranceⅡ_01.wav ranceⅡ_02.wav ...
ranceⅢ_01.wav ranceⅢ_02.wav ...
というように、各ランスシリーズごとにファイル名は 1 からふられています。このままでは、全ての素材音楽を一つのALDに格納してしまうことができません。かといって、一つ一つファイルを手作業でリネームしていくのは面倒な作業です。
この場合、オフセット番号を使うことにしましょう。
オフセットとは
オフセットとは、ある基準点から見た差分のことです。
各音楽ファイルをALDにまとめる場合、リンク番号は重複させることができません。
そのため、1つのフォルダの音楽ファイルを1-16番まで入れるとすると、
別のフォルダの音楽ファイルは17番以降に入れる必要があります。
ここでは
WAVE_R1フォルダの中身を0-16
WAVE_R2フォルダの中身を21-39
WAVE_R3フォルダの中身を41-78
WAVE_R4フォルダの中身を81-122
WAVE_R5フォルダの中身を131-152番に入れる方法を書きます。
(それぞれのフォルダの間には、2-8ほどリンク番号の穴があります。もしその穴が気になるから
きっちり埋めたい、という場合には後述するBGM.HEDのそれぞれのオフセット番号を
0 16 35 73 115
にすると良いでしょう。そうすればきっちりと埋まります)
作業
さて、では作業の開始です。
まず新規のディレクトリを作り、その中にそれぞれの素材集から
- WAVE_R1
- WAVE_R2
- WAVE_R3
- WAVE_R4
- WAVE_R5
をコピーして入れましょう。これはWAVEファイルの入っているフォルダです。
次に、
- wavLinker.exe
- EncodeOGG.dll
- XXIDecoder.dll
- ALDLinker.dll
- BGM.HED
をコピーして入れましょう。WavLinkkerを動かすために必要なファイルです。
そうしたら、BGM.HEDをエディターで開きます。
とりあえずBGM.HEDの中を、こんな感じに記述します。
"#WavLinker" "bgmBA.ald" "A", 0,"WAVE_R1\","ogg", 1, 0 "A", 0,"WAVE_R2\","ogg", 1, 20 "A", 0,"WAVE_R3\","ogg", 1, 40 "A", 0,"WAVE_R4\","ogg", 1, 80 "A", 0,"WAVE_R5\","ogg", 1, 130
それぞれのフィールドの意味
- "A"というのは「BA.ALDに作る」という意味です。
- は特に意味がありません。
- 「"WAVE_R1"フォルダの中のファイルからALDを作る」という意味です。
- 「OGG形式に圧縮する」という意味です。
- 「指定した圧縮比重1でする」という意味です。1に近づくほど容量が下がります。
- オフセット番号です。そのフォルダの中身のWAVは、すべてその数値だけ繰り上がって登録されます。この場合、ranceⅡ_01.oggはリンク番号21番に、ranceⅢ_01.oggはリンク番号41番に登録されます。
補足
ちなみにすべての素材をogg、圧縮値1で生成した場合、その容量は
| ファイル名 | 容量(KB) |
| BA.ald | 47,804 |
| BA.bgi | 8 |
となるようです。容量はoggで緩和されるとはいえ、MIDIよりも重いため注意。
使用方法
ソース上でこのALDを使う場合、曲数が膨大なので、
単にリンク番号で管理するよりも、それぞれ作品のタイトルを変数に直し、
管理した方がいいかもしれません。
例:
//グローバル定数で次のような変数を作成します const int ランスⅠ = 0; const int ランスⅡ = 20; const int ランスⅢ = 40; const int ランスⅣ = 80; const int ランスⅤ = 130;
こうすると、ソース上で
MSC_PLAY(ランスⅣ + 33); //ランスⅣの33番(113番)を再生します
このように記述できるため、管理しやすくなります。
そして、曲の定数を用意する場合にも
//グローバル定数 const int ランスⅢ通常戦闘 = ランスⅢ + 09; const int ランスⅣ通常戦闘 = ランスⅣ + 08;
このように若干、楽になります。
関連リンク
