これもだいぶ前の話。
LPC810をPSG/SCC互換チップとして鳴らせるよという記事をいろいろ見つけた。
@Toyoshimさんのページ
@ImpactDrillさんのページ
@curious4devさんのページ
これを使えば、安価なARDUINO+LPC810を使って、PSGとSCCで音が鳴らせることができる。
エンベロープはサポートしないけど、ファミコンのピコピコ音が実現できる。
それで作ったものが、LPC810のSPI接続で3つ使った音源シールド。
1つのLPC810で、5つの和音の音を出せるので、3つ使って5ch(right)+5ch(left)+5ch(R+L)で、計15和音が鳴らせる。
LとRで2つのLPC810をMIXして音を作っているのだが、抵抗値は2.7Kでなく1Kぐらいにしないと音が小さい。
さらに、L+Rの音を出しているLPC810の音がちょっと小さいのでさらに小さい抵抗でもよいかもしれない。
苦労したのが、LPC810が3.3V駆動なので、ARDUINOも3.3V駆動にしている。
通常の5VのARDUINOは16MHzの発振子だけど、3.3Vは8MHzにしている。
また、FT232RLのUSBシリアル変換モジュールの設定も、3.3V出力にする必要がある。
これは、シールドに接続が簡単にできるように、3.3Vと5Vの接続切り替えができるようにしたボード。
さらに、ARDUINO IDEの書き込み設定の変更が必要だ。
- ボード:”Arduino Pro or Pro Mini”
- プロセッサ:”ATmega328P (3.3V 8MHz)”
- 書き込み装置:”Arduino as ISP”
本当は、ATmega328Pのブートローダーのコードも、8MHz用に変更しないとならない。
今は変更していないので、delay(1000)とやると、倍の遅延(2000)として扱われてしまうが、これはソフトで対応しよう。
プログラムは、前回のMOZZIのときと同じフォーマット。
ただし、今回はエンベロープがないので、音を明示的にSTOPさせている。
ソースはこれ。
実際にできた音はこれ。
作成して2年くらい放置していたら、いつの間にかLPC810がディスコンになっていた。
もう、LPC810を入手するのは難しいだろう (涙)