4. MP3で初音出し
ディスクがついたミニミニLinuxボードを MP3 Player にするためには、 どうやってMP3を音にするかの問題が残っています。 Linuxマシンとなったのですから、MP3をデコードできるソフトウエアも どこかからDownloadしてコンパイルできるかもしれませんが、 さすがに20MHzのH8ではとても処理が間に合わなそうです。 そこで、AKI 3069ボード関連でいろいろ検索した時に見付けた、 Strawberry Linuxさんの Easy MP3を使うことにしました。 自作MP3 Playerの製作記事でも良く見掛けるものです。 (写真の上側の基板。下側の基板は後に出てくるアンプ基板)
このMP3モジュールを使って音を出すには、 ディスクからMP3データを読み出して、 シリアルのビット列に変換してこのモジュールにじゃんじゃん流し込んでやれば良いだけなので、 ソフトの処理としては単純です。 問題は、ディスクからのデータの読み出しが再生に間に合うかどうかです。 単純な処理とはいえ、 連続してきちんとデータが供給できなければ音切れが起きてしまいます。 実験の結果、 128kbps までの MP3 データなら問題無く再生できることがわかりました。 これで一安心、MP3 Player 製作の第一歩が完了です。
《 ← 前へ 》 《 次へ → 》

秋月3069ネットボードで Easy MP3 を鳴らす
1. 回路
Easy MP3 の各信号線を H8 のユーザI/Oにつなぎ、 かつ DREQ で割り込みがかかるようにどれかの IRQに接続します。 実際の回路図は、後の 「11. アンプをつけよう」 のページで一緒に示します。
2. デバイスドライバ
HDDからEasy MP3へできる限り途切れなくデータを流し込むためには、 デコーダチップ (vs1001k) のバッファに空きができたら割り込みをかけてすぐに次のデータを供給する必要があります。 割り込み処理をアプリケーションプログラム側でハンドルすることも組み込みボードでは可能ですが、 ここはせっかくLinuxを動かしてアプリソフトの開発の見通しを良くしようとしているのですから、 きちんとデバイスドライバを作ることにしました。 MP3データを取り込むキャラクタデバイスドライバとし、 割り込みのハンドリングもここで行うこととします。

Linux Device Driversなどを見ながら試行錯誤の結果、 ようやくデバイスドライバからMP3データを演奏できるようになりました。 おかげで、ユーザアプリ側は、データファイルと /dev/mp3 を open してファイルからデバイスにデータをバンバンコピーするだけの単純なもので済みます。 心配していた音切れも、128kbpsのMP3であれば全く発生しませんでした。 でも、160kbpsのファイルでは音切れがおきてしまいました。 どうやら、 ディスクからデータを読み出している間他の割り込みが処理されないので、 デコーダチップのバッファが減る速度があまりに速いとデータの供給が間に合わなくなるようです。 まあ128kbpsが再生できれば十分なので、 さらなる最適化は今後の宿題としておきます。

《 ← 前へ 》 《 次へ → 》