LoginSignup
7
2

More than 3 years have passed since last update.

はじめに

 2019/11/17に大阪で開催されたdotFesにKANSAI TouchDesigner Users with SPEKTRAでTouchDesignerを用いた作品の展示をデジタルアートと電子音楽ユニットの∀RroWsでさせていただきました。その際に展示したものがこれ。

 バナナを曲げたり、振ると音が出たり、合わせて映像が変化するものになります。動画では分かりにくいですが、展示ではこれにAbletonLiveと連携しPushというデバイスでボタンを押すと簡単に音楽を生成でき、音楽を鳴らしながら、合わせてバナナを操作して楽しむものです。


 単純ではありますが、TouchDesignerを使うと、簡単に、音と映像、センサ、他ソフトウェア連携ができることを紹介したいと制作しました。
 

センサ連携

 センサのデータを取得し、そのデータに応じて簡単に映像や音などを変化させることができるのが、TouchDesignerの面白いところです。しかし、特にセンサを扱う情報が少ないように思います。今回、加速度センサと曲げセンサをESP32というデバイスに接続して、Wi-Fi経由、または有線でデータを送れる仕組みを作りましたので、そのあたり詳しくご紹介します。なお、実際作るには半田付けとか電子工作が必要になります。

<使用したもの>
 以下、amazonやスイッチサイエンスにリンクを貼っています。
ESP32
 バナナに埋め込むため、コンパクトにする必要があり、ピンヘッダは未装着のものをあえて使っています。
加速度センサ
曲げセンサ
9V 充電式電池(ESP32給電用)
 バナナを充電できるように充電式を選定
USB変換コネクタ
 バナナの外へUSB端子引き出すのに用いました 
バナナ
 スクイーズと言う、伸びるバナナのおもちゃです。

センサデータの送信

 センサは今回、加速度センサと曲げセンサを使用しました。センサを使うには、センサと、そのセンサからのデータを読み取り、PCに送信するためにArduinoなどのマイコンボードが必要になります。今回は無線でPCへデータ送信したく、Wi-Fiを使えるESP32を使用しました。

 データは無線ならOSC通信で、有線ならSerial通信送ります。ESP32のプログラムを詳しく紹介したいところですが、長くなるので、githubにあげますので、参考にしていただければと思います。
 単純にサンプルを探して、並べたようなプログラムですが、Arduinoのプログラム経験者なら読めば分かると思います。プログラム内にコメントで解説をいれておきます。逆にArduino経験がないと難しいので、ぜひ、Arduinoでセンサを使うところから始めてみて下さい。

 ここでは簡単にポイントだけ説明しておくと、データの送信に関しては、Serial通信なら、Serial.print("____")など書くと思いますが、この”____”をTouchDesignerならSerialDatで取れます。
 OSC通信なら、Wi-Fi接続やOSC送信用のプログラムを追加し、指定したポート番号にデータを送ることになります。

①加速度センサについて
 I2C接続で使用します。x,y,z3軸の情報を得られます。やや情報がなく試行錯誤しましたが、プログラムはサンプルプログラムを参照/流用ください。ESP32とはリード線を別途容易して半田付けをしています。

②曲げセンサについて
 曲げセンサは曲げ量に応じて抵抗が変化します。定電圧をかけると流れる電流が変化します。分圧回路で抵抗を直列に2つつなげ、抵抗間の電圧を読めば、抵抗の変化量を電圧で測定できます。この測定した電圧値をanalogReadで取得し、送信しています。ESP32とはリード線や上記抵抗を別途容易して半田付けをしています。
参考サイト

③ESP32への接続
 ESP32はVin/GNDに9V電池を接続しています。スイッチON/OFFをしたいので、この間にスイッチを組み込んでいます。

④バナナへの組み込み
 充電式の9V電池を用いてESP32に給電しました。また、充電やESP32のプログラム更新ができるようにUSB端子をバナナの端から出せるように、microUSB→USB typeC変換パーツを用いました。

センサデータの取得

 ここからようやくTouchDesignerですが、センサデータの取得はSerial通信ならSerialDat、OSC通信ならOSCinDatを用います。あとはこのDatから得られたデータを加工して、センサのオンオフを取れるように加工します。

 SerialDatから数値データを取得するまでを紹介します。
全体イメージ
5.JPG
まずは、ESP32をPCに接続時、SerialDatでCOMポートを指定します。COMポートが分からない場合はデバイスマネージャーを開いてポート番号を確認しましょう。
OSCinDatを用いる場合は、esp32のプログラム内で指定したポート番号を入力すれば、同じWi-Fiネットワークに接続していれば、データを受信できると思います。以下のオペレータの接続方法は同じです。

1.JPG
次にConvertDatでテーブルデータに変換します。Split Cells atに実は半角スペース入れています。これで1行のデータをテーブルに分割しています。ここはESP32のプログラムでどうSerial.print("_______")を記述するかで変わります。僕はスペース区切りにしたので、スペースを入れています。
2.JPG
次いでSelectDatでテーブルのうち欲しいデータを選択します。
3.JPG
Start Row/Col IndexやEnd Row/Col Indexを変えて欲しいデータを抽出します。
今回、ESP32 からは加速度のx,y,zと曲げ量のbで4つのデータを取得しています。それぞれSelectDatで取得します。
4.JPG
最後にConstantChopでSelectDataの値を取得すれば、あとは閾値設けてオンオフをさせればよく(例えばMathChopで閾値分を差し引き、LogicChopで0以上の時、1にするとか)、やりたい放題ですね!

 映像の方は簡単に動作確認のため作成しましたが、実際は∀RroWs Eguchiさんに担当頂きました。詳しくはきっと12/24の本AdventCalenderで紹介してくれると思います。

最後に

 今回、実際にセンサ連携するにはセンサを組み込んだデバイスするのが、やや難しいかもしれません。これができると映像のみではなくインスタレーションなど制作できるようになるので、オススメです。
 
 今回展示でお客さんと話していて、関西でもWorkShopをやって欲しいとのリクエストがたくさんありました。∀RroWs Eguchiさんと実際に準備を進めています。年明け以降で開催する予定です。

 また、学んでも発表できる場が少ないこともあり、現在、そのような場をセットで考えています。実際、電子音楽祭などでライブをしていてVJのニーズがあったり(関西TD会メンバーに今年はVJ出演していただきました。)、ライブハウスや商店街/農作物販売所などでインスタレーションの相談もあり、ぜひ、一緒に学んで展示などし、合わせて社会問題解決に貢献したり、独自に関西の文化を構築できればと考えています。その際は別途案内しますので、興味のある方は、ぜひご参加下さい。

 今回、情報が多く、説明が不十分な箇所もあります。随時加筆していきます。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2