マイコン工作実験日記

Microcontroller を用いての工作、実験記録

ひどい音

2013-11-24 11:34:25 | Weblog
LPCCappuccinoにConnectEVEをつなげるA基板を作成したんですが。。。




単純にLPCCappuccinoとConnectEVEをSPIでつなげて、LPCCappuccinoの基板下に配置したスピーカまたはオーディオジャックへの出力をスライドスイッチで切り替えるだけのものです。とりあえずやりたいことは、FT800のPLAYBACK機能を使っての音楽再生なので、わざわざ基板こさえなくても作業できないことはないのですが、作業の度に回路図で確認しながらジャンプワイヤでつなぐのも面倒だし、結線間違えること必至なので基板用意した方が安心できるというものです。

再生試験につかう楽曲としては「EVEのテーマ」ことDARKAGES.ULWでも良いのですが、データ変換作業の確認も兼ねて手持ちのものをつかうことにしました。「あまロス」もすっかり癒えてきて近頃はあまり聞かなくなった「あまちゃん オープニングテーマ」を実験に使うことに決定。

あまちゃん オープニングテーマ/ロングバージョン
大友良英
Victor


わたしの場合、MBAに入っている曲データはAACでエンコードされているので、これをFT800で再生可能なU-Lawに変換せねばなりません。FTDIからはオーディオフォーマットの変換ツールも提供されているのですが、Windows向けのプログラム。おまけにMP3やAACを受け付けてくれるわけでもなく、入力ファイルとしては16bit PCMのファイルを想定しているというもの。事前に、Audacityを使ってフォーマット変換するのがオススメと説明されていました。そこでAudacityを立ち上げて作業開始。まずはAACファイルを開きます。



ステレオですから、2ch分の波形表示が現れます。FT800のオーディオ出力はモノラルですのでメニューの「トラック(T)」から「ステレオからモノラルへ(k)」を選択して、モノラルに変換。


あっさりと変換できました。こいつをu-Lawで書き出せばいいので、「ファイル」メニューから「書き出し」を選んで、Formatとして「その他の非圧縮ファイル」を選択。さらにオプションを開いてサポートしているエンコーディングを確認してみると、U-Lawが選択できるではありませんか。

というわけで、Audacityだけで簡単に変換できます。FTDIのツールはまったく不要。サンプリング周波数は変えずに44.1KHzのまま変換。1サンプルが8bitになるので、1分半ほどの曲データは4.3MB程度の大きさになりました。こうして用意したuLawデータをFT800で再生する手順についてはAN_252で解説されています。基本的には、FT800内部のメモリ空間の一部を再生用のバッファとして割り当てておき、その空間に用意したデータをダウンロードしてからレジスタを操作して再生開始を指示します。曲データ全てをロードするだけのメモリ容量はありませんので、割り当てた空間をリングバッファとして使用します。どこまで再生したかを示すレジスタが用意されているので、それを参照して再生が終了して空いたメモリに順次曲データを追加していきます。今回はためしに64KBをバッファとして割り当て、半分以上の再生が終わったら追加で読み込むことにしてみましたが、SDカードからの読み込み処理時間は充分に短いので4KBや8KB程度のバッファでも充分に余裕がありそうです。

さて、実際に再生してみると、あまりの音の悪さにガッカリ。以前FTDIのボードでも幾分ハムノイズが気になったのですが、それとは比べ物にならないくらいに、ノイズが乗っているようだし、そもそも音が出ていないような印象を受けます。スピーカが振動しているせいかもしれないと思って、オーディオジャック経由で聞いてもダメダメです。明らかにアンプから出ている音が悪すぎです。ちょっと試してみたところでは、REG_PWM_DUTYレジスタを操作してLCDバックライトの明るさを変化させると、大きなハム音が載ったりしますので、バックライトの昇圧回路からのノイズを拾いまくっているのでしょうか。PWM周波数を変化させてみるとかすれば、少しは改善がみられるかなぁ。。。

続いて回路図を確認してFTDI の評価ボードとConnectEVEのオーディオ出力回路を比べてみると、そこには大きな違いがあることもわかりました。FTDIのボードはAN_252の技術解説に沿った回路が実装されており、アンプの手前には3次のCRローパスフィルタがあり、そのカットオフ周波数はおよそ34KHzになっていました。それに対してConnectEVEでは、1次のローパスであり、カットオフ周波数が4.8KHzになっていました。特性が緩やかとはいえ広域がごっそりカットされていたんですね。44KHzサンプリングのデータを再生している意味がまったくありません。こんなわけで、ConnectEVEのオーディオは、ビープ音とかクリック音のような効果音とか音声ガイドの再生のような用途であれば使えそうですが、音楽再生にはてんで不向きのようです。

FT800のオーディオ再生機能は、あくまでもGUI操作を補助する音の再生を目的としているのでしょう。サポートしているオーディオフォーマットは8bit PCM, 4bit ADPCM, u-Law圧縮なんで、品質のよい音楽再生が目的ではなく再生処理負荷が軽く音声帯域をカバーできれば良いというものなのですが、FTDIのボードに比べるとConnectEVEのオーディオ出力はあまりにもプアなので大変ガッカリさせられました。