TINY2313のPSG音源。Arduinoボードに繋いで
鳴らしてみる。シリアル経由で繋いで使うの図。
http://d.hatena.ne.jp/ooharak/20100530/1275184524
参考ページのスケッチを色々弄って、とりあえず
曲として鳴るようになった。tone関数で出力する
部分をこんな風に変えると音程が出ることに。
Serial.write((uint8_t)0);
Serial.write((uint8_t)((40000 / freq) & 0xff));
Serial.write((uint8_t)1);
Serial.write((uint8_t)((40000 / freq) >> 8));
ちなみに40000は内部のベースクロック。最大で40000Hz
ってことになるんだけど、YMZ294を1.79Mhzで動かすと
最大111860.78125Hzなので、1/3程度の周波数。
1オクターブ半くらい音域が下になっちゃう。まぁ
これ以上速くするのは難しかったので仕方ない。
とりあえず動くようになったんだけど、ソースの中身を
全然理解せず弄ってたので、まともに曲が出るまで
紆余曲折。とりあえず出てよかった。
で、ちょっと気になってたエンベロープの出力レベル
のこと。16段階でエンベロープテーブルを構成して
いたので、波長の長いエンベロープを掛けると
どうしても音量の変わり目で段差が付いて耳障り。
で、YMZ294のように32段階表現に急遽変更。だいぶ
滑らかになった。ヨシヨシ。
イイカンジになってきたので、独立した音源チップ
としてブレッドボードに挿して扱えるようにした。
って言ってもシール貼っただけ。似非PSG(pseud-PSG)
でPPSG。
電源、クロック、リセット、シリアル入力端子だけ
繋げば、PWM(PB3)から音が出る仕組み。プチ満足。
音源が出来たので、こいつをMIDI化したいところ。
MIDIから入力して、このPSG音源2つか3つを束ねて
出力するようにして、簡易音源として使いたい
んだよなぁ。