Alcohol52%のイメージファイルmdf + mdsをwav + cueに変換する
前回めでたく成功したbin + cue→wav + cue変換。
bin + cueをwav + cueに変換する - もぐてっく
でも、うちのライブラリはbin + cueじゃなくてAlcohol52%ネイティブのフォーマットであるmds + mdfファイルなのよね。
ひとつずつ再変換しても良いんだけど、超面倒だよね。うん。面倒だ。
まぁ、mdfとbinは完全互換なのは調査済みだから、後はmdsファイルを適当にパースしてcueファイル作れば良いんじゃね?
(mdsファイルをテキストエディットで開く)
バババ、バイナリィィィィィィィィィィィィィィ!?
バイナリファイルでした(泣)。
でも、こんなことではめげません。めげずに調べます。
mdsファイルのデータ構造はここにドキュメントがあるのですが、所々計算が間違っててどうも怪しいです。
http://developer.berlios.de/docman/display_doc.php?docid=840&group_id=2545
なので、大変参考にしつつ(ありがとうございます)hexdumpとにらめっこしながらそれっぽい構造体を作ってみました。
これでmdsファイルの中身が読めるようになりました。
でも、それだけではダメでした。ダメダメでした。
mdsのdata_blockに格納されてる値でcueファイルを作ると、全体的に2秒ずれてしまいました。単純に2秒引けば良いんですけど、なにかとてもきもち悪いから調べてみました。
なんでも、CD-DAは「きかくじょう」、トラック1の前に2秒(150フレーム)の無音区間(プリギャップ)が必要なのだそうです。
そして、その2秒の無音区間は無駄なので、mdfファイルからは削られてます。
でもでも、mdsは2秒のプリギャップを削る前のタイムスタンプを保持しているので、件のズレが発生します。
多分ヘッダのpregap_corrに入ってる-150が削ったプリギャップだと思うので、これを75で割って引き去るようにしました。
はい。これで出来ました。
第一引数にmdsファイルを指定すると、同じフォルダにcueファイルとwavファイルが出来ます。
これで本気でWindowsが捨てられる準備が出来ましたv