楽にnanoKONTROL2をUnityで動かすためのセットアップツールをつくった

github.com

 UnityでKORG nanoKONTROL2(以下、ナノコン)を使用する際のセットアップを楽にできるツールをつくった。



モチベ

  • Input SystemMIDIを扱うときはセットアップが大変。なので、できるだけ楽に素早く、セットアップを行いたい。
  • ついでに、MIDIコンの各種コントローラの状況をUnity上で可視化されると嬉しい(操作ミスをなるべく減らすため)。



機能

  • ナノコンをUnityで使う際のセットアップ済みのPrefab
  • カーソルで触るとちゃんと動くuGUI製のナノコンを模したUI
  • Inspectorで設定するだけで完結するナノコンからの信号を受け取り、メソッドを実行できるコンポーネント

 VJ用途としてはとりあえず、これだけあればOKという感じ。



中身

 クラス図はこんな感じで、MVRPを意識して作っている。NanoKON2ModelがMIDIの値を持っておくクラスになっており、それに対してみなが値をセットしたり、値が変化したことを購読するようになっている。  また、今回はUniRxを導入しておりこの辺のイベント駆動は書きやすかった。

qiita.com

 物理のナノコンを動かすと、uGUIのナノコンも同じ動きをするようになっており、上記の記事でも触れているようにイベントが一巡してしまう問題がある。これのせいで、HogeHogeクラスのメソッドが2回呼び出されてしまう。

 解決策として、UIらにカーソルによって触られたかどうかの状態を知るためのbool型のReactivePropertyを持たせた。そして値のストリームと合成し、触れられたときにだけイベントが通知されるようにフィルタをかけている。これでHogeHogeクラスのメソッドは1回しか呼び出されず、いい感じになった。



今後やりたいこと

  • 不具合が生じたらその都度修正
  • コントローラがボタンのところには、momentaryかtoggleかを簡単に切り替えれる機能の追加
  • 実践で使用

 1月中にVJをやる予定があるので、そこで使っていきたい。VJ楽しいので皆さんもやりましょう。

www.korg.com