- ちょっとした前置き
ADPCMでは「前回のデータ、今回のデータ」から「次回のデータ」を増分予測パラメータから予測し、その予測との誤差を記録していました。しかし、増分予測パラメータとの誤差が大きい場合、当然データは追従できないため、音質は劣化すると考えるのが妥当です。また計算量が多いので、データ長が8bitかつ10MIPSに満たないマイコンでの動作は高サンプルレートの音声の再生は難しいかも知れません。
PSoCは約64MIPS、(3.3V,12MHz動作であるならば約32*1MIPS)であるのでADPCMデコードは骨な作業です。
純粋に差分だけを記録するならば、16bitデータの場合17bit必要になるでしょう。ここでDPCMも工夫が施されています。
例えば、
今回はこの3番目を採用しました。このId RoQ DPCMアルゴリズムは簡単です。乗算ハードウェアを持つPSoC CY8C24,27,29シリーズなら問題は無いでしょう。24x23シリーズはPSoCブロックが少ないので今回は非採用です。
- DACについて
※この際、GUI画面で謎配線になったため、BBSで質問したところJUNK-BOX氏から的確なお答えを頂戴しました。私のようなアナログブロックの使い方をされる方は参考になると思います。
- エンコーダ
- dpcmenc.exeがエンコーダです。使い方はコマンドプロンプト内で参照。(従来通り。ドラッグアンドドロップは次のバージョンで対応予定)
- 対応ファイルは16bit,ステレオ(PSoCの動作周波数によってエンコードする.wavファイルのサンプリング周波数が異なります)
- デコーダ
おいおい、今時5V動作とか時代遅れだろ。小型化させるのに3.3Vで24MHz動作させたい。という方のため。秋月のWithICシリーズ:白色LED用チャージ・ポンプキットに外部抵抗2本で3.3Vから5V生成可能。ノイズも可聴領域では少なくて便利。
- ダウンロード先
- おまけ
秋月の白色LED用チャージ・ポンプキットのICで5V駆動中のPSoC
*1:2010年5月11日訂正:とんでもない間違いだ