RX64MでWAVファイルの再生

DMACを使い、D/A出力に気を良くして、WAVファイルの再生も行って
みた。

以前にRL78/G13を使い、8ビットPWM変調を使った、WAVファイ
ルの再生を行った事があり、その時のリソースを使ったので、とても簡単だっ
た。
RX64MはRL78/G13より桁違いに強力なので、処理負荷的には全く
問題無い。

SDカードの読み込みは、SDHIのポートに接続しているけれども、SDH
Iの無いRXマイコンなので、ソフトSPIで読み込みをしている、イマイチ
パフォーマンスが悪い(読み込み速度が遅い)が、それでも、120MHz動
作は伊達ではない。

各種サンプルレートに対しては、単純にサンプリングレートを変化させて行っ
た。
RX64Mにはサンプリングレート変換のハードウェアーがあるのだが、RX
65Nには無いので、それも踏まえている。
※RTK5_RX65Nでオーディオプレイヤーを作るのが本命。

DMACのトリガーとなる、TPUタイマーのクロック(60MHz)では、
44.1KHzは割り切れないので正確ではない。(44.118KHz)
※48KHzは割り切れるので、正確なタイムベースとなっていると思う。
※22.05KHzや38KHzもやはり割り切れないので正確では無い。
まぁ、12ビットのD/Aを使った簡易再生なので、多少の事は妥協する。
それでも、聴いた感じは、そんなに悪くは無い。(8ビットのPWMでもかな
り良い音がする事に驚く)
44.1KHzを48KHzにアップコンバートするのは、簡易的な方法なら
そんなに難しく無いので、44.1から48へソフトでアップコンバートする
のでも良いかもしれない。

コンソールのコマンドは
・dir
・cd [directory]
・pwd
・play file-name
・help

「play *」で、ディレクトリーの WAV ファイルを順番に再生する。
※WAV形式では無いファイルは無視する。

再生が始まる時、コンソールにヘッダー情報を表示し、時間経過をコンソール
に出力する。

ISFT: Lavf57.3.100
File:  '03 愛Dee.wav'
Size:   50807808
Rate:   44100
Chanel: 2
Bits:   16
Time:   00:04:48
00:04:47

IART: minato (流星P) Feat. 初音ミク
ICRD: 2010
IGNR: Pop
INAM: FAIRYLAND -mintia mix-
IPRD: magnet -favorites plus-
IPRT: 4/15
ISFT: Lavf57.3.100
ITCH: iTunes 9.0.2.25
File:  '04 FAIRYLAND -mintia mix-.wav'
Size:   39518208
Rate:   44100
Chanel: 2
Bits:   16
Time:   00:03:44
00:01:27

再生中は、
・「Space」:一時停止
・「>」:次の曲
・「<」:曲の先頭
で、プレイヤーを制御できる。

WAVファイルは、48KHz、44.1KHz、38KHz、22.05KHz、
8、16ビット、モノラル、ステレオのPCM形式ファイルに対応する。
※8ビットやモノラルはあまり実験していないので不具合があるかもしれない。
※GR-KAEDEでも簡単な修正で動かす事ができる、方法を知りたい場合
は、コメント欄にどうぞ。
※GR-KAEDEは、SDカードのハードウェアーに致命的な問題がある、
回避方法はあるのだが・・

「main.cpp」で、「GR_KAEDE」を有効にしてコンパイルすれば、GR-KAEDE でも
動作すると思うが、いくつか問題がある。
・SDカードのハードウェアー「DO」端子のプルダウン問題を回避する必要がある。
※色々な解決策があると思うが、「main.cpp」に具体的な回避策を載せてあるので参考
にして下さい。
・D/A出力0がLED4に接続されているので、ジャンパーを飛ばす必要がある。

GitHub AUDIO Player