Arduino : ArduinoboyでGameBoyのLSDj、Nanoloop、mGBをMIDIで繋げてみた
- Posted at: 2010年5月11日 03:08
- Update: 2010年5月12日 05:08

ゲームボーイの音楽制作ソフトLittle Sound DJやNanoloopのMIDIケーブルを、Arduinoで作るライブラリArduinoboyで、Max/MSP(Live)を同期させてみたよ。
Max/MSPを始めた記念になんかMIDIで鳴らしたい。でもそんな機材持ってないし。んーじゃ代わりにMIDI同期できるLSDjでゲームボーイでも鳴らすかー。たしかArduino使って同期できるライブラリかシールドがあったはずだし。。とガラクタ箱を漁ること半日、ゲームボーイとその一式を発掘して繋げてみた。
Arduinoboyで実装

構成はこんな感じ。実装にはArduinoとGB上のLSDjやNanoloopを通信させるMIDI I/Oシールドを実装するスケッチ「Arduinoboy」を使います。こんな感じにMIDIインターフェースの回路を作るか、USBを繋げてMIDIメッセージを送受信します。今回はMAX/MSPからMIDIメッセージを送信させたいのでUSBで繋げます。以下いるもの。
・ゲームボーイ(初代、ポケット、カラー等) ・LSDj、Nanoloop、mGB ・ゲームボーイ通信ケーブル(DMG-004等) ・Arduino ・LED × 5(任意) ・抵抗 330Ω × 5(任意)
通信ケーブルはGEOとかゲーム探偵団とかの中古屋を回るとショーウィンドウの片隅に転がってたりしますw(¥200~¥500くらい)。LEDは状態のモニタ用なんで必要なければいりませんが、雰囲気も大事なんで付けてみます。
GameBoyとArduinoを接続
通信ケーブルを加工
通信ケーブルを剥いて中のラインを出します。今回は初代GB用のDMG-004を使います。ケーブルの解体方法も公開されてるんで参考に。中にはDATA IN(橙)、DATA OUT(赤)、GND(青)、CLOCK(緑)の4本がまとめられています。ケーブルによって仕様が違うんでよく確認してください。ブレッドボードで使うんで端子とかも付けておきましょう。
Arduinoと接続
通信ケーブルとArduinoは回路図を参考に次のように接続。
CLOCK(緑)→Analog 0
DATA IN(橙)→Analog 1
DATA OUT(赤)→Analog 2
GND(青)→GND
DIGITAL 8~12 →LED


Arduinoboyのライブラリを修正していきます。動作モードを4(Midi Input to mGB)、USBモードをON、回路上のボタンは使わないんでメモリ機能をONにしてアップロードします。
Arduinoboy1_1_0.pde を編集
boolean forceMode = true; int mode = 4; int numberOfModes = 5; boolean usbMode = true;
MAX/MSPとArduinoを接続

前回はArduinoとの通信にMaxduinoを使いましたが、今回はスタンドアローンのArduinoと通信させたいので、Serialオブジェクトを使って直接シリアルポートを叩くパッチを組んでみます。後はコントローラーか、曲を再生させてMIDIメッセージをシリアルに送ってあげれば、GBから音が出てくれるはず。
動かしてみた
鳴ったー。ちなみにデモではフルMIDIコントロールできるArduinoboy付属のmGBを使ってます。曲を流す場合には若干BPMを落としてあげた方がいいです。タイトルに偽りありになっちゃたけど、Arduinoboyのモードを変えるとLSDjやNanoloopと同期させることもできるよーですよ。
まとめ
パースとか必要なOSCよりもMIDIの方が単純な構造な分、楽に変換できてよいですね。1トラックがモノフォリックで鳴ってるんで、曲全部ならそうとすると結構大変?。いっぱいGB並べるのも楽しそうだけど。。
参考資料: