現在製作中につき、写真と簡単な説明だけです。
回路全体は、このようなコンパクトサイズです。 左上のシリアルケーブルでPCと接続していて、 PC側から音声データを送ることで音声出力ができます。 使用したマイコンにはDA変換器がないので PWM方式で音声の再生を行います。今回使用したマイコンAT Tiny26Lは 内部PLLを用いた高速PWMが使用できるため良い音が鳴ると期待されましたが... 結果としては、AMラジオ並でした。 やっていることは、PCからシリアル経由で送られてくるデータを 受信して、PWMで出力するだけです。
8bit モノラル、11KHzサンプリングの音声を再生できます。 この音質は シリアル通信で一般的に使われる最高のスピード(115.2kbps)を基に決めています。
音質が思ったより悪かったのですが、 その原因は3つ考えられます。 1つは、ソフトウエアでシリアル通信をデコードしているのですが、 速度的な問題から処理がおろそかなので、受信エラーが起こり音質の低下が起きている事。 2つめには、PWMの信号から音声信号を取り出すためのローパスフィルタのつくりが良くない事。 最後に、再生しようとしている音声(11kHz,8bit,モノラル)自体が音質的に良くない事です。
PC側のソフトウエアはJavaで記述しました。 JavaMediaFrameworkの音声デバイスとして動作するようにプログラムを記述しています。 上の図はJava Media Frameworkのメディアプレイヤで再生している様子です。 PlugIn Viewerのウインドウにある「AVRSoundPlayer」という箱が 製作した回路にデータを送信するプログラムです。 サウンドファイルから、PCMの変換やサンプリング周波数の変換などを 経由して出力される様子が分かります。
動画ファイルを再生しています。音もきちんと出ています。