TouchDesigner用外部入力デバイスの作成
はじめに
インタラクティブなコンテンツを作りたいと思い,TouchDesignerを始めました.
センサやスイッチ類がまとまったデバイスがあれば,プロトタイピングに便利なのでは?と思い,TouchDesigner用の外部入力デバイスを作成しました.
入力デバイスと通信方式
以下のセンサ,スイッチを使用します.
- ボリューム
- プッシュスイッチ
- ジョイスティック
- 圧力センサ
- 温度/湿度センサ
(家にあった使えそうなものを集めました)
これらのセンサ類をArduinoに接続し,取得した値をTouchDesignerへ送ります.
シリアル通信やMIDIで送信しようかな,と考えていましたが,調べてみるとFirmataというプロトコルが便利そうなので,今回はFirmataで通信します.
デバイスの作成
作成したデバイスのブロック図を以下に示します.

デバイスのブロック図
センサ類はArduinoの入力ピンに接続します.
スイッチにはチャタリング防止のため,抵抗とコンデンサによる遅延回路とシュミットトリガインバータを接続してあります.

作成したデバイス
MDF板に取り付けてハードウェアは完成です.
Arduinoプログラム
Arduino IDEにFirmataライブラリを追加し,スケッチ例からFirmata->StandardFirmata.inoを書き込みます.
TouchDesignerでの動作確認
ArduinoをUSBでPCに接続し,TouchDesignerにて動作確認を行います.
TouchDesignerのPaletteウィンドウにある,Derivative->Tools->firmataを画面に配置します.

Firmataを配置
PortにArduinoが接続されているポート番号を指定します.
ActiveをOnにして,しばらくするとFirmata TypeとFirmata Versionが表示されます.
次に,Pin Modesタブから,Arduinoに接続したスイッチ類の入出力設定を行います.

Pin Modesの設定
プッシュスイッチやデジタル信号はInput (1 Bit)に,アナログ信号はAnalog (10 Bit)に設定します.
未使用ピンは,誤作動防止のためPullup (1 Bit)に設定しておきます.
最後に,Pin Valuesタブで動作確認を行います.
Enable ReportingをOnにすると,各ポートの状態が表示されます.

デジタルピンの確認
スイッチを押すと,PinのOn/Offが切り替わることが確認できました.
同様に,アナログピンも信号の取得ができます.

アナログピンの確認
まとめ
スイッチなどの入力を簡単にTouchDesignerで読み取ることができました.
複数のセンサを接続する場合は,OSCが便利そうなので,今後試してみたいと思います.
参考
Discussion