もなか(Monaka)
もなか(Monaka)
1.はじめに
Monaka(もなか)はMIDIをベースとしたフィジカルコンピューティング用のプラットフォームです。
パソコンに外部センサやアクチュエータなどの入出力装置を接続するためのデバイスです。Monakaを使うことで、簡単にパソコンから制御するUSB装置を作成することができます。
(1)MIDI装置として利用する場合
ホストとの通信にはMIDIを使っていますので、パソコンとつながる楽器はソフトウエアの作成なしで簡単に作れます。
(2)Open Sound Control(OSC)から利用する場合
MIDIの次の規格としてOSCプロトコルが使われています。Monome用にOSCをベースとしたシーケンサソフトなどが発表されています。プロトコル変換を行うMonaka-OSCというプログラムをパソコンで実行しておくことで、 OSCからMonakaを使うことができます。
(3)その他のプログラム言語から利用する場合
音楽を鳴らすなどの用途以外には、ホスト側でソフトウエアを作成する必要があります。OSC/MIDIともにフリーで公開されているライブラリを利用すると便利です。
rerofumiさんの「奏(かなで)」にインスパイヤされて実装しました。
Monaka for Gingerでは、モード1、2は奏とほぼ同じ仕様にしています。
2.特徴
•ホストからのMIDIメッセージによってポートの制御をします。またポートからの入力でMIDIメッセージを送出します。 現在はデジタル入出力をノートオン/ノートオフで扱う仕組みにしています。
•Ginger/Pepper用のハードウエアをそのまま使います。
Ginger/Pepperに実装したMonakaをそれぞれMonaka for Ginger, Monaka for Pepperと呼びます。ピン数やモードなどの仕様が異なります。
•Arduinoに実装したMonaka for Arduinoは-Monaka for Gingerの派生品で基本機能は変わりません。
•V-USBプロトコルスタックを使った、V-USB-MIDIを使って実現しています。パソコン側はドライバ要らずに認識されます。(MacOS 10.4,10.5, Windows XP)
•用途に応じて入出力ピンの仕様を変更する動作モードがあります。GainerのCONFIGに相当します。
MIDI経由でCONTROL CHANGE (local control)メッセージによってモードを変更することが出来ます。また、一度設定したモードはAVRチップ内部のEEPROMに保持されます。再度変更するまで電源を切っても消えません。Monaka-OSCの機能で変更できます。
Monaka for GingerはATMega88を使って16本までの入出力を行うことが出来ます。次のモードをサポートしています。
•モード1: 8ビットモノ+ポリ出力モード
•モード2: ポリ出力モード
•モード3: トリガ出力モード
•モード4: アナログ入出力モード
•モード5: 入力モード
•モード6: コード入力モード
•モード7: マトリックスLED/KEYモード
•モード8:サーボモータ制御モード
各モードの詳しい説明はこのページに記述しました。
Monaka for PepperはATTiny85を使って4本までの入出力を行うことが出来ます。 Monaka for Pepperは次のモードをサポートしています。
•モード1: ポリ出力モード
•モード2: コンビモード
•モード3: トリガ出力モード
•モード4:アナログ入出力モード
•モード5: 入力モード
•モード6: アナログ入出力モード
•モード7: マトリックスLED/KEYモード
•モード8:サーボモータ制御モード
各モードの詳しい説明はこのページに記述しました。
5.Monaka for Arduino *NEW
Monaka for ArduinoはArduinoにV-USBの付加回路を付けてシールド化したものです。ソフトはほとんどGingerと同じですが以下の点が異なります。
・CPUが異なります。(Mega328)
・CPUの動作周波数が異なります。(16MHz)
・ピン配置はArduinoのものを読み替える必要があります。
このため、別のファームになります。
現在のバージョンはArduinoのブートローダから書き込むと動作しません。ヒューズビットを書き換えて、いきなりMonakaが起動するように設定をする必要があります。
V-USBのサポートのために本体とは別にUSBコネクタを増設する必要があります。このため、Monaka( V-USB)シールドを開発中です。回路図はこちらを参照下さい。
モードの説明は、Monaka for Gingerに準じます。
6.Monaka-OSC(Open Sound Control)ブリッジ
Monakaのモードの設定機能もあります。
詳細に関してはこのページにまとめました。
7.制限と今後の発展
•MIDIチャンネルは1固定です。USBではデイジーチェーンすることはないので、チャネル固定でも困ることは少ないと思います。もしかすると、ポリ出力のMIDIの出力先チャンネルを分けると便利かもしれません。ユースケースや要望があれば検討します。
•現在はデジタル入出力とそれに対応したノートメッセージのみ実装しています。アナログ信号をCCメッセージで扱うように拡張する予定です。
8.ダウンロード
ファームウエア
•コンパイル済みファームウエア monaka-20100630-hex.tgz
pepper-monak -> Tiny85: FUSEH = 0x5d, FUSEL = 0xe1
ginger-monaka -> Mega88 FUSEH = 0xc1, FUSEL = 0xdf
•ソースコード一式 monaka-20100630.tgz
•ブートローダ(Arduino-monaka用) USBaspLoader-for-monaka-20100918.tgz
PC用制御プログラム
•Monaka-OSC(MonakaOSC.zip)
ドキュメント
•ピンコンフィグレーションチャート(PIN.pdf)
•Implementation chart (monaka-chart.pdf)
•Make Tokyo Meeting資料(monaka@MTM03.pdf)
•Make Tokyo Meeting資料(ginger-monaka@MTM04.pdf)
9.応用事例
Monakaを使った作品をこちらにまとめました。
(2009年8月7日追記)
奏の作者であるrerofumiさんに作成の報告を頂きました。多謝。