WiiFitからOSC飛ばしてopenFrameworksを動かす


はじめに

秋葉原メイカーズ倶楽部2016に、IAMAS勢3人で「EXC_BAD_ACCESS」という縁起の悪い名前のVJチームとして出演させて頂きました。

とってもたのしかったですが、VJに使った電子工作系アイテムがクラブで使うには地味すぎて悲しい思いをしたので、使ったいくつかのひみつ道具ネタのレシピをここで公開することで成仏させたいと思います。

第一弾

第二弾はWiiFit。こいつの正式名称はバランスWiiボードというらしい。

あなたの家にも眠っていませんか?

ぼくの家には眠ってなかったので、イベント直前にハードオフのジャンクコーナーに走って購入。108円。WiiFitのボードが108円で買える世界線。まあソフトないとゲーム遊べないしね…

実はWiiリモコンは

すぐPCで使える。WiiリモコンをPCで使う方法はググったら無数に出てくる。

今回はmacでバランスWiiボードを使って他のソフトに送れる信号を抜きたかったので、OSCを飛ばせるOSCulatorを使用。というか上のページ見ればだいたい解決する。

バランスWiiボードをPCにペアリング


OSCulatorを開いて、右上のWiimoteというボタンを押す。


そうすると右側にこういう画面が出てくるので、バランスWiiボードを裏返し、電池カバーを開ける。

ペアリング設定用の赤いボタンがあるので押す。するとバランスWiiボードの側面にあるボタンのランプがが青く点滅するので、OSCulatorの「Start Pairing」ボタンを押す。


ちょっと待つとペアリングが完了し、多分こんな感じになる。バッテリー残量まで出してくれる。優秀。

OSC信号を出してみよう

バランスWiiボードから出るOSC信号の種類


左側にはこういうのが出てくる。要するに7つの信号が抜けるということ。

  • 0: 左下 (初期値0、0-1)
  • 1: 右下 (初期値0、0-1)
  • 2: 左上 (初期値0、0-1)
  • 3: 右上 (初期値0、0-1)
  • 4: 合計 (初期値0、0-1?)
    • 単純に0〜3の合計っぽい。0-1って書いてあるけど普通に1越える
  • 5: virtual x (初期値0.5、0-1)
    • 右に体重をかけると大きくなり、左に体重をかけると小さくなる
  • 6: virtual y (初期値0.5、0-1)
    • 前に体重をかけると大きくなり、後ろに体重をかけると小さくなる

上の「Quick Look」を押すと現在の数値が見られる。超便利。

ぼくの体重がだいたい60kgなので、1kgw=0.01で計算されるっぽい感じ。ジャンプしたりすると当然波打つ。Quick Lookだけでもしばらく遊べる。

余談

Quick Look試せば試すほど、どの信号をどう使ったら良いかわかんなくなってくる。ていうかWiiFitのゲーム遊んだことなかったので任天堂のWebサイトを見てみると、めっちゃゲームの数があって驚く。
Wii Fit:40種類以上の『トレーニング』が楽しめる!
全77種目のトレーニング | Wii Fit U
7つの信号だけでゲーム作りまくるNintendoマジすげえ。クリエイティビティとはこういうことかと感じた話。

OSCulatorから指定のポートにOSCを飛ばす

まずはOSCulatorの上に書いてある「Parameters」を押す。


そうするとこんな画面が出てくるので、1番の「OSC URL or choice from gear menu」というところをダブルクリックしてosc.udp:://localhost:****と入力する。上の「OSC input port」とは別の番号にしよう。

この場合、udpという通信を使って、BluetoothでつながっているPCの8002番のポートにOSC信号が送られるようになる。


右下のCloseを押して、PCに送りたい信号の「Event Type」を"OSC Routing"に、「Value」を"D(みたいな記号)"に変更する。
Valueのところを押してもDが出てこない場合は、「New」を押して出てくる画面でDを選択してCloseすると出てくる。

コレで準備完了。

余談2

OSCulatorは課金しないとちょくちょくポップアップが出てきて課金を迫ってくる。
それだけならいいが、ポップアップウィンドウが画面から消えてしまい、普通に終了させることすらできなくなることがある。その場合は⌘+Option+Escで強制終了するしかなくなってしまうので、設定は保存しておくことをおすすめ。

OSC信号をopenFrameworksで使う

OSCをoFで使う方法についてはこれこそ無数のリファレンスがあるので、偉大なるyoppa.orgパイセンなどに譲ります。いつもお世話になっております。
-第10回: openFrameworks OpenSoundControlによるアプリ間の通信 – ofxOsc

oFで受信テスト

oFでOSCをテストするときは、examples/addons/oscReceiveExampleを使うのがオススメ(v0.9.3現在)。ポートさえ合ってればどんな信号でも拾って見せてくれる。

oscReceiveExampleofApp.hの下記の行でポート番号をOSCulatorの設定と同じにする。
#define PORT 8002

OSCulatorの左上のボタンがになっていれば信号が送られている状態なので、これを確認してRun。


こんな感じで信号を受信しまくってくれる。
/wii/1/balance/*で信号を指定して使用することができる。ここまでできればOSCできるマンだったらなんでもできますね。

サンプル

WiiFitテスト pic.twitter.com/BJkrECkEG8

— さのかずや (@sanokazuya0306) 2016年8月24日

サーフィンみたいな遊びができる。楽しい!!

サンプルファイルはありあわせのものでつくったためにソースがめちゃくちゃなので、要望があれば公開します。

歓びの時間

クラブで使ったけどマジ地味だった。足元にあって見えないし、スクリーンがだいぶデカくないと映像と連動してるのかどうかもよくわからない。簡単なインスタレーションみたいなところで使ったほうが良いと思う。


成仏してくれ

パフォーマンス形式のライブするひとがエフェクターとかに連動して使ったら面白いかも。

次回は

ツイートに連動してバチバチ光る電球のレシピをご紹介します