ブレッドボードから脱皮したことで、だいぶ作業効率あがりました。
とりあえず、Monome 40h用に公開されているファーム・ウェアのPICへの移植は完了しました。今のところ、A/D変換に関しては機能を未実装にしてありますが、それ以外はバッチコーイ。
もすこし、ソースの体裁を整えたり、なんやかんやしたら、何らかの形で公開しようと思います。
で、ファームが移植できてもまだまだなわけです。
ファームのソースを見れば分かりますが、Monomeがやっているのは、超ざっくり言うと
「何行目、何列目のボタンを押したよー、LEDどう光らせるー?」
というやりとりだけ。ボタンの位置情報と、ボタンを押したか放したかを2バイトで表現し、USBを経由してPCへ送信し、LEDの位置情報と点灯させるか否かや、その他の設定等を2バイトで受け取り、その動作を実行するというシンプル・イズ・ベストなシステム。
ただし、実際にMax/MSPとかでMonomeを使う場合にはOpenSound Controlというプロトコルでソフトウェアと通信する必要があるわけです。で、Monome自信はバイトデータを送受信しかしていないので、例えば、Monomeから送信されたバイトデータをOSCの形式に変換して、ソフトウェアに送信し、ソフトウェアから送信されたOSC形式のコマンドをバイトデータに変換しMonomeで受信するためのMonomeとソフトウェアの中間で働いてくれる通訳さんが必須。オリジナルではこの役目をmonomeserialが担っているんです。
というわけで、Monome PIC Version用のmonomeserialを作らないといかんわけです。
で、それもちゃっちゃとJavaで作ってしまいました。だって、ファームを移植しながらデバッグをするのに必要だったので、PIC作業のC言語と通信作業のJavaを行ったり来たりして、どっちがどっちか訳分からなくなりながらRXTXとJavaOSCを使ったハードとPCの通信制御の良い勉強になるなーっと思いつつやりました。GUIのデザインをしっかりさせたら、こっちもファームと一緒に公開予定です。
明日にでも、Monome PIC VersionとMax/MSPで通信してるデモムービーをアップできればと思っております。