1個のICとSDCで作るシンプルなサウンドジェネレータです。以前製作した8ピンSDオーディオプレーヤの応用で、コントローラには20ピンAVRのATtiny861を使用しています。このシリーズもtiny85同様に高速PWMを持っているので、同様にクリアな音声出力が可能です。多くのI/O端子が余るのでこれを制御入力とすることにより、外部から多くの制御が可能になりました。リセット端子も未使用なので、書き込みも普通のISP方式でよく、高電圧書き込みの必要はありません。
外部から簡単に制御できるので、サウンドモジュールとして玩具、トーンリンガ、アミューズメントマシンからちょっとしたガジェットまで応用の幅が広がります。
オーディオ信号はPWMで出力され、スピーカを直接駆動することができます。3V動作なら出力インピーダンスにより、たとえショートしても最大定格を越えることはありません。このため、あまり大きな音は鳴らせませんが、能率の良いスピーカなら机上で聞くのに十分な音量が得られます。オーディオ出力をアンプに接続する場合は、必ずLPFを通してください。PWM信号を直接アンプに入れるとアンプやスピーカにダメージを与える可能性があります。記録メディアにはMicroSDの使用を想定していますが、もちろんMMCやSDCも同様に使用できます。
回路図に示すように、オーディオ出力の形式には3通りあり、それぞれ回路的に排他となっています。AVRに書き込むファームウェアは製作した回路にマッチしたものでなければなりません。各出力形式(モノ/ステレオ/モノHR)にはそれぞれのHEXファイル(sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex)が対応します。添付のHEXファイルにはヒューズデータが含まれますが、一部のAVRライタはこの種のHEXファイルに対応していません。もしもそのような場合は、HEXファイルの最後の3行を削除してから書き込み、ヒューズ値はそれぞれ別に書き込みます。
このサウンドジェネレータの対応する音声ファイルのフォーマットは、RIFF WAVEフォーマット(LPCM, 8/16bit, mono/stereo, 8~48kHz)です。MP3ファイルなどは、WAVファイルに変換しておかないと再生できません。ファイル名は001.wav~255.wavとし、全てのファイルはルートディレクトリに置いておきます。
制御入力は8個のスイッチで2進数コードとして与えられ、対応する番号のファイルが再生されます。例えば、SW1は001.wav、SW4は008.wav、SW1+SW5なら017.wavといった感じです。制御入力に対する挙動はトリガモードで指定されます。トリガモードは、000.txtに記述しておきます。各モードの動作は次の通りです。
LEDは再生中に点灯するほか、エラーが発生したときにフラッシュしてそれを示すこともできます。たとえば、SDCを入れずに電源ONすると、SDCを認識するまでI/Oエラーの表示を繰り返します。SDCがセットされ動作準備が完了するとLEDは消灯します。フラッシュ回数とエラー内容は次の通りです。
