PIC12F1822一個でファミコン音源を作る

前回は1チップで疑似三角波音源を作ったのだが、調子に乗ってファミコンの残りの音源である矩形波とノイズ音源をつくってみた。

原理は前回と一緒、回路も一緒、違うのはソフトだけw ということで回路図は前回の記事を見て欲しい。

ファミコンは矩形波を2チャンネル持っているらしいので、矩形波は2和音対応の音源となりました。ただし、プログラムチェンジでデューディー比12.5%,25%,50%を切り替えており、2和音は同じ比となることに注意。実際のファミコンでは各々の比率を変えられるので、変えたければPICをもう一つ用意すればいい。オペアンプは1つ余っているので、純粋にPIC一個の追加でOKのはず。

ちなみに疑似三角波音源も含め、すべてのプログラムはEEPROM領域の1バイト目が受信MIDIチャンネルになっているので、複数並列して使用するときはPICライタで書き換えるとよい。

ノイズ音源はプログラムチェンジで長周期と短周期を切り替えられる。元々のファミコンでは16種類の音が出せるようになっているが、本音源ではC4~C5の13種類しか出せない。というのも、乱数発生周期が14番目以降は速すぎてPICがついてこれていないのであきらめた(ちょうどC4-C5で収まりがいいからよしとして~w どうしてもっていうならアセンブラで・・・墓穴掘りそうなのでやめとくw)。とりあえず、ファミコンと同じ発生周期にしてあるので、再現性は高いと思うw あくまでも思うw

あと、ファミコンではスイープとかエンベロープとかあるみたいだけど、MIDI化するにあたり、どのようなコマンド体系にすればよいか迷っている(ポルタメントを使うとかベンドを使うかなど)。今のところ、疑似三角波音源はもともとボリュームの指定ができないのでベロシティには対応していないが、今回の2つの音源はベロシティ対応している。良いアイデア募集中!

例によってデモビデオを作ってみた。

またまた、例によってHEXファイルを公開するので、使ってみたいという奇特な方はどうぞ!

2和音ファミコン矩形波音源sqr1822.hex(例によって拡張子をdocからhexに変えて保存してください)

ファミコンノイズ音源fng1822.hex(例によって拡張子をdocからhexに変えて保存してください)

コメントを残す