まずは wav ファイルを変換するプログラムを作ります。
gbpcm_20150912.zip
.NET Frameworkが必要です。Windows Update で入手できます。
「Ref」ボタンでファイルを選択するか、WAVファイルをドラッグ&ドロップすると、選択されたファイルが表示されます。
その状態で出力オプションをチェックし、「Output」ボタンを押すと、GB 用 PCMファイルが出力されます。
Windows で再生できる RIFF WAV のみ対応。
かなりいい加減なので賢い補完とか一切やりません。
ちゃんとした音声波形編集ソフトでノイズリダクションなり補完処理なりを加えた上で、この変換ツールに通した方が良いでしょう。
あと、22050Hz -> 4096Hz などのダウンサンプルは(一応)可能ですが、2048Hz -> 4096Hz などのアップサンプルは無理です。ごめんなさい。
PC-98 時代の人なら こうのたけし氏作の
PCMCONV (Vector)をご存じかもしれません。
そちらでも Packed-4bit-PCM への変換が可能です。16byte には揃えてくれませんが。
SoX が使えるといいのですが、あちらは 4bit に変換できないようなんですよね。
ディザ付き変換やエフェクトが使えて優れものなのですが・・・。
設定項目は大体わかると思いますが、1data/1byte に設定した場合、サブ項目として「set bit3=1」というのがあります。
これは PCM ドライバがレジスタに 4bit ずつデータを書き込む際、データと同時にエンベロープフラグを立てて書き込むと
プチノイズが多少軽減できるというおまじないのようなテクニックがあり、これをあらかじめデータ側でフラグ立て処理するというものです。
$00 を終了サインにする設定はデータとしての $00 が $01 に置換されます。音質にやや影響します。
1data/1byte かつ bit3=1 設定 ではデータとしての $00 は $08 になる(音質には影響なし)のでこの置換は起こりません。
16byte揃えのチェックは波形メモリ音源での PCM が 16byte(32データ)単位なので、波形メモリPCMを使用する場合はチェックするとよいでしょう。
別ページの GBMC で使用する場合、起動直後の状態(4096Hz,2data/1byte,16byte揃え)のまま変換してください。
「3bit PCM」の項目はこのページの下の「マスターボリュームによる 3bit PCM 再生」を参照のこと。
3bit に変換した場合は L,R で同じデータが出力されます。本来は左右で分けて 2ch PCM やステレオ再生みたいなことも可能なのですが、
あまり使い道が無い(PCM 再生中は他の音が出せない)ので省略しました。
なお、3bit PCM の場合、終端サインは $FF を使うので「$00 を終端にする」項目は無意味です。
以上の設定を弄って出来たデータフォーマットは全て再生プログラムの仕様次第なので、結局は扱いやすいように加工するのがベストです:-)