--/--/--  --:--    スポンサーサイト
上記の広告は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
2010/10/20  03:13    MOM01行ってきました
もう気付けば半月以上も前の話になってしまいましたが、
Make: Ogaki Meeting 01に行ってきました。

今までずっと東京で行われていたMake:でしたが、
今回は初の東海での開催となりました。
写真はいつもどおり別のページにおいてあります↓
MOM01_2010_9_25

出展数はやはり東京よりも少なめでしたが、
MTMでは見たことがない新しい展示も数多く見ることができ、
とてもいい経験になりました。
自分としては、展示をいろいろ見れたのに加え、
いつにも増していろいろな方と話せたかなと思います。
意外に高専のグループだったりで出展している方もいたので、
またそのうち自分も何か出展してみたくなりました。
ネタと時間がないのであれですが・・・。

今回MOMにて、koiseyaさんからPSGShieldという
Arduino用の音源シールドを譲って(売って)頂いたので、
文化祭で展示できればいいなと思い、ちょっといじってみました。
しかし、自分はArduino持っていないので
(自作Arduinoは一応あるけれど、小型なためシールドが刺さらない)
死蔵状態のATMEGA8515をひっぱりだしてきて、
バスでPSGShieldを叩いてみました。
Arduino用のシールドを(わざわざ)自作ハードで使うという謎の試み。
これについては次回の記事で詳しく書きます。たぶん。


最近忙しくてやばいです。
今週末には文化祭があるので、クラス展示の回路に、部活展示の回路。
部活展示の方には、自分が好き勝手やった、
XMEGA&秋月300円液晶と
PSGShiledを自作回路で叩いてみた物を展示予定です。
あとは卒研が中間発表が近づいててやばかったり、
ジャンケンで負け続けて中間発表の仕切るのの代表になんかなってしまったり、
あとは急ぎのやばい案件があったりと、
忙しい時に限ってどんどんタスクが降りかかってくる始末。
クラス企画の準備してる中、漫画なんか読んで暇している人に
卒研の発表委員の仕切り代表とか当たればいいのにと恨んでみたり。
偉い人は言いました、暇人は何もできないから暇人であると・・・。
確かにその通りなのかもしれません。
だけど、誰でもできそうな卒研代表ぐらいはせめて・・・。
全ては運がなかった自分がいけないんですけどね。
怒りの矛先が結局自分にあって、どんどん自滅していく毎日。
世の中、なんでこんなに偏っているんだろうと悲しむこの頃です。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。