東方のBGMのファイルのフォーマットについて (旧作~新作)

東方のBGMのファイルのフォーマットについて (旧作~新作)

東方の、原曲に関するファイル: thbgm.dat | thbgm.fmt | musiccmt.txt
「thbgm.dat」というファイルのフォーマットについて書きます。
ZWAVというフォーマットです。(ZUN WAVE フォーマット…?)

何byte目 : データ
0 : 'ZWAV'
4 : 01 00 00 00
8 : [東方の番号]
10 : 00 00 00 00 00 00 00

この16バイトの後はひたすらリニアPCMのWAVEデータが連結されてあるだけです。(チャンクとかはなく、本当に波形データだけ)
どこからどこまでが何の曲なのか調べるには曲目ファイルが必要みたいです。

詳しい説明

最初の4バイトは文字列の「ZWAV」です。

次の4バイトは常にこの数値みたいなんですが、何を意味しているのかはよく分かりません…。すいません。
その次の2バイトは東方の番号です。
東方の番号について (妖々夢~文花帖とダブルスポイラーは予想です。)

東方紅魔郷 : なし (紅魔郷はそもそも「thbgm.dat」じゃない。あるとすれば 00 06)
東方妖々夢 : 00 07 (体験版には「thbgm.dat」が無い)
東方永夜抄 : 00 08 (体験版には無い)
東方花映塚 : 00 09(体験版には無い)
東方文花帖 : 50 09 (体験版がない)
東方風神録 : 00 10 (体験版にも有り)
東方地霊殿 : 00 11 (体験版にも有り)
東方星蓮船 : 00 12 (体験版にも有り)
ダブルスポイラー : 50 12 (体験版がない)
妖精大戦争 : 80 12 (体験版がない)
東方神霊廟 : 00 13 (体験版にも有り)

16進数←→10進数の変換はせず、そのまま「●作目」の数値 (少数であれば小数点以上と小数点以下がそれぞれ二けたで表されるようにしてそれらを入れ替えたもの) を入れているようです。
その次の6バイトは全部NULLでした。何の意味があるのかはわかりません。

その他の東方は?

東方萃夢想は最初に3718バイトのデータが来てからWAVEデータがくるようです。
これは製品を持っていないので調べられませんでした。すいません。
東方緋想天と東方非想天則は、ツール使ってoggをwavにしたときには、最初に44バイトのデータが来るらしいです。RIFFの最初の44バイトのデータがあるのかとも思いましたが、一曲目と二曲目の間が空いていたりしました。別なデータがあるせいかもしれませんが、これも製品がなくてわかりませんでした。
東方緋想天体験版ではツールでwaveに変換しようとしたときにエラーが出てしまい、調べられませんでした。
ちなみに旧作は…
靈異伝以外は、どれかのファイル (それぞれファイル名違う) になんかの形式で曲データがぶち込まれています。
しかし、暗号化はされていないので、バイナリエディタでBGMのファイルのヘッダを探してください。
それぞれの形式はPro Music Driver (PMD) というもので、「00 1A 00」というデータではじまります。
ツールを使うという手もあります。
東方怪綺談に東方旧作すべての曲が入っていますが、靈異伝に関してはアレンジ版です。
PMD98」 (PC-98用) か「C60のページ」の「自作ソフトのDownLoad(Download Page)」から「PMDWin」 (Windows用) で再生可能です。
また、Windows用のスタンダードMIDIに変換することもできます。
東方靈異伝は紅魔郷のようにBGMのファイルがひとつひとつそのままある状態です。
しかし、他の旧作と違ってPMDでなく、しかも再生にはPC-98用のソフト、「MDRV2」が必要になります。
PC98エミュレーターで、FreeDOS持ってきてMDRV2使って再生してください。
RCPに変換できるソフトが見つかればスタンダードMIDIにできるのですが、PC-98が全然使われなくなった今、探すのは困難です。見つけてくれたら報告くれると助かります。
↓クリックしてくれると助かります。
ZWAV 東方 原曲 曲 BGM 音声 音声ファイル フォーマット