--/--/--  --:--    スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2010/10/30  00:04    PSG ShieldでMIDIを再生
Make: Ogaki Meeting 01にて手に入れたPSG Shieldですが、
このまま死蔵したらもったいないので実際に動かしてみました。

PSG ShieldとはArduino用のシールドの1つで、
ヤマハの音源ICであるYMZ294を搭載したシールドです。
アンプの回路とスピーカも実装済みなので、
Arduinoとこのシールドだけで音を鳴らすことができます。
気になる方はこちらをどうぞ↓
shield.io - PSG Shield

さて、このPSG Shieldを手に入れたのはいいのですが、
残念ながらArduinoを持っていないので、
てきとうにArduinoの代わりとなる基板を作成し、動かしてみることにしました。
残念ながらYMZ294のデータシートは手に入りませんでしたが、
ネット上の情報によれば汎用バスに接続できるようになっているようなので、
死蔵していたATMEGA8515からバスを出して制御してみることにしました。

それでは実際に基板を作っていきましょう。
本当はユニバーサル基板で作ろうと思ったのですが、
Arduinoのコネクタのピッチが一部0.1inchではないので、
楽するためにArduino用ユニバーサル基板を買ってしまいました。
P1020306s.jpg
本来はオリジナルのシールドを作れるというものらしいですが、
別にシールド側ではなくArduino側をコレで作っても「大丈夫だ、問題ない」ということで。
適当にAVRと必要なIC関係を配置してUEWでさくっと配線していきます。
YMZ294はマルチプレクスバスでの接続となるので、
とりあえずMEGA8515のD7-0とYMZ294のD7-0を接続、
あとは!WRはそのまま接続し、YMZ294のA0はMEGA8515のA8に接続。
!CSもMEGA8515のアドレスバスを使って作ろうと思うのですが、
そのままでは論理が逆なので、ワンロジックのNOTを使い、A9をNOTして!CSに接続します。
あとは音源ICのリセット端子をAVRのIOからリセットできるようにしておきます。
ついでにPCと通信できるようにRS232のレベル変換ICものせておきます。

そんな感じで出来上がったのがこちら。裏面は汚いので省略で。
P1020312s.jpg

これを実際にPSG Shieldとあわせるとこのような感じに。
P1020322s.jpg
と言っても、シールドがかぶさるのでぜんぜん見えませんが・・・。

そしてプログラムですが、今回はこのPSG Shield用に公開されている、
PSGShield_DEMO_A_V132のプログラムを移植しました。
PSG.cppはArduinoのためにIOを叩いて制御しているので、
出力関係を全てバス制御での出力に書き換えました。
今回アドレスバスのA8とA9を接続しましたが、
アドレス0x025Fまでが内部で使用しているため、
出力先のアドレスは0x0260以上でないとA8,9にアドレスが出力されないので注意です。
今回は無難に0x8200と0x8300のアドレスにアクセスするように書きました。
あとはメインプログラムも適当に移植してあげれば完成です。
ATMEGA8515はRAMが512Bしかないため、
音程のテーブルは全てROM上配列にしないと入りきらないので、
そこも注意が必要だと思います。

最後にshield.ioで説明している通り、シリアルMIDIドライバをインストールして
MIDIをシリアルから出力すればこのボードからMIDIが再生できるようになるはずです。
移植作業で済んだのでだいぶ簡単に遊ぶことができたのでよかったです。
(あるミスで2日間動作せず悩み続けていたのは内緒)
プログラムは勝手に移植したものなので上げませんが、
shield.ioの方にArduino用のプログラムが上がっているので
読んでみるとおもしろいと思います。

今回、実際にこのボードはうちの文化祭で展示していました。
展示の時にはFFやDQ、カービィやゼルダのMIDIなどを再生していましたが、
「懐かしい曲が!」って言ってくれる人が何人かいたのでよかったです。

Arduino持っている方はデモプログラムを書き込めばすぐに遊べるので、
よければ入手して遊んでみてください。
たまには音がなる回路もいいものですね。
暇があれば、もう少しこのボードを拡張してみたいと思います。
AVR
Secret

TrackBackURL
→http://amenotiyukizora.blog76.fc2.com/tb.php/342-b9002989
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。