RX65N Envision Kit で実現するオーディオプレイヤー

I2Cの実装が、まともになったので、タッチパネルの操作を反映して、ファイラー
にも対応した。
これで、画面タッチでファイルを選択して、音楽を再生するガジェットがまともにな
った。

また、曲の再生では、一時停止や、次の曲などをタッチ操作対応にした。

本来ボタンを描画して、GUIで操作させるべきなのかもしれないが、それは、又後
で考える。
GUIに関しては、このボードの正規なサンプルプログラムとして既に公開されている
が(SEGGER)、GUIのような複雑な動作をCで書くのは、自分的にはありえない。
また、GUIの見た目や、操作の動作をエミュレーションする環境も必要な事を考える
と、少し複雑なGUIを作ろうとすると、この環境だけではかなり厳しいと思う。

以前に実装したリソースとして、Windows、OS-X で動作する Open-GL ベースの GUI
フレームワークがあるので、それをマイコン用にダイエットしてポートする予定でいる。
その時に、PC上で、見た目やリソースを作成するアプリなども作る予定でいる。
※その前にDRW2Dのエンジンを何とかしないと駄目なんだけど・・・
※DRW2Dエンジンの操作は、他のデバイスとは異なっていて、ライブラリーで提供
される、また、このエンジンに関係すると思われるレジスター群は、読み出し専用か、
書き込み専用レジスターとなっており、詳しい説明は省略され、ライブライーを使う事
を前提としている。

話がそれたが、オーディオプレイヤーのタッチ操作は以下のようになっている。
- 3点タッチ(離れた時)で、ファイラーが有効になる。
- 上下のドラッグで、ファイルフォーカス
- 右ドラッグでファイル選択(ディレクトリーの場合、そのディレクトリーへ移動)
- 左ドラッグで、一つ手前のディレクトリーへ移動
- 再生中、右へドラッグで次の曲
- 再生中、左へドラッグでリプレイ
- 再生中、2点タッチ(離れた時)で一時停止
- 再生中、3点タッチ(離れた時)で再生中断
- 再生中は、曲の再生が終了したら、次の曲を再生

現在、MP3、WAV形式のファイルをサポートしてあり、タグの表示にも対応してい
る。
タグは、ID3V2に対応しているが、V1タグは過去の物であり、あっても無視され
る。
タグは、曲名、タイトル、アーティスト、トラック、リリース日付、などの対応になっ
ている。
※WAV形式のタグも同じように対応している。

ジャケット画像をサポートする予定で、JPEGライブラリーをRX用にポートしたが、
一般的な方法では、メモリ不足で、デコードする事が出来ないので、こちらはそのうち
対応する事にする。(多分、一時メモリを使わず、直接フレームバッファに描画するよ
うにすれば可能なハズだが、リアルタイムにスケーリングもする必要があり、少しハー
ドルが高い)

オーディオ出力は、RX65NのDA0、DA1から出力する(量子化は12ビットだ
が)、無音は、3.3VとGNDの中間電圧、1.65Vとなっている。
バイパスコンデンサと抵抗だけで直にラインに繋げるのは心苦しいので、自分は以下の
回路を組んでいる。


※アンプの参考回路(以前にRL78で実装したWAVプレイヤーのもの)

量子化は12ビットだが、自分の耳では、そんなに悪い音に感じない。
※ブラインドテストで16ビットとの違いを聞き分けるのは難しいと思う。

現在DMACでD/Aに出力している部分をRSPIに変更して、多少改造すれば、外
部D/Aで鳴らせると思う。(いずれ、それも対応する予定でいる)
※SCIを使った簡易SPIだと、クロックを高速に出来ないので難しいかもしれない。
RX64Mだと、I2Sインターフェースがあるので、もっと簡単なのだが・・・
※自作音楽プレイヤーを前から作りたかったので、丁度良い。

GitHub AUDIO sample