ごちゃペディア

はなまるデジタル創作紀行(DTM、TAS、いろいろな技術)

ピコカキコ向けに高音質なDPCMを用意する手順(私的メモ)

いろいろ試した結果、個人的にはだいたい以下の手順になりました。

リサンプリング等の手順を何度か行うと思いますが、その際の値はピッチ補正値を決めるのに必要になると思うので、メモをしておきましょう。

  1. 変換元サンプルのループポイント以前のサンプルを削除する(先頭サンプルからしかループできないため)
  2. サンプルレートをバイナリエディタで書き換え、変換後の音程(o4程度の低めの音)に設定する
  3. 33143 Hz にリサンプリングする(foobar2000 の Resampler は品質もそこそこで何より手軽に使える)
  4. サンプル数が 32648 サンプルを大幅に超える場合、NiceLoop 等で短いサンプルになるようにトリミングする(アップサンプリング)
  5. DPCMのサンプル長になるよう再度リサンプリングする(※リサンプリングを繰り返してもDPCMの品質に大きく影響する劣化はおそらくない)
  6. 調整の末、とにかくDPCMで扱えるサンプル数にすることと、サンプリングレートを 33143 Hz にすること(MakeDPCM でリサンプリングさせないため)
  7. MakeDPCM で読み込んで変換する。音量(ダイナミックレンジ)が大きいと思うように変換されないので、音量50%あたりに設定する
    • DPCMの仕様上、波形の急激な変化を記録できないので、周波数の高い波形やダイナミックレンジが大きい波形は不利である
    • 音量を下げるほど良いわけでもない。DPCMの仕様上、波形は常に上下を繰り返してノイズを発しているので、信号レベルが下がることはS/N比が下がることにつながる(と思う)
  8. DMC ファイルを base64 に変換して WAV9 定義にする(わたしは 010 Editor という高機能バイナリエディタ(有料)を使用していますが、無料の方法はいくらでもあります)
  9. おしまい(鳴らすついでに音階の限界も調べておくと良いです)

なお、逆に行わないことにしたのは以下です。

  • 変換前のサンプルを予めローパスフィルターで処理することも特に行わない。高域のサンプルはディザリングの代わりにいいように使われてくれると思う(たぶん)
  • 単純波形のようなサンプルであれば、ディザリングが有効かもしれない?(ただ、そのようなサンプルを WAV9 で鳴らすのはそもそもおすすめできない)

そのほか

  • Lコマンドによる補正値を各波形で一律に揃えたい人は、33143 Hz でチューニング済みの音が鳴るようにリサンプリングする。サンプル数の融通が効かないのでループ作成が大変ですが、クロスフェード等でうまく対処しましょう(という感じだと思うのだけど、わたしにはその方針でやる気力はないので、一律にしている人は尊敬します)
    • もっとも、本当にファミコンで使うようなDPCMはそうするほかありません。

関連