C4-Extendを使ってみる。(OSC編)

#前回の続き
[前回](https://qiita.com/skckmdtk2m/items/863dbe45949a2570007d)はC4-ExtendにてTriggerのセットアップをしていきましたので、Triggerのリモート化をしていこうかと思います。

#C4-ExtendにOSCを送る
主にOSCを使います。
C4-ExtendはOscのRouteで発火させることができます。
New TriggerからADDINPUTでOSCを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/8867684d-3cbc-2715-f5da-653e830dc4c8.png)
routeが
>c4/trigger/[trigger name]

となっていますのでそれぞれのOSCのClientからこのRouteから出力してあげます。
IPはUI接続の時と同じ
10.254.254.254
portは8000に固定されています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/5c39cc25-c8d4-840b-927d-4ce0c39a4446.png)


今回使用するのはiPadからは[TouchOSC](https://hexler.net/products/touchosc)
PCからは[TouchDesigner](https://www.derivative.ca/099/Features/)を使用します。



#iPadでTouchOSCから送る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/2f4ad0ee-6adf-09e6-2ae7-63bf60a39e71.png)
C4-ExtendはWiFiAPを作る事が出来ますので、iOS端末があれば操作ができる環境が作れます。
PCを用意せずに操作ができるのは諸々楽になるのでやっておきたいところ。
TouchOSCを使用する理由は、UIを自身で作成でき、Routeも割り当てる事も出来る為です。
すっごい便利。
###PCにてUI作成
[TouchOSCEditor](https://hexler.net/products/touchosc)にてUIとRoute設定をしていきます。win環境ではJDKが必要なので適宜環境設定してください。

使用するiOS端末にlayoutを合わせてPushButtonを右クリックから配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/f048c164-2bc6-d296-7f03-02b46439626a.png)
OSCのrouteを設定。
>/c4/trigger/q1
(C4-Extend側のtriggerNameをq1にしています。)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/c09b3715-a2b7-c35b-9abe-e5785bb9d899.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/df42a8f2-73e7-dae1-c613-dc266a6fc7ee.png)
C4-test.touchoscとして保存しました。

###TouchOSC
ネットワーク経由で上げる事も出来ますが、あまりうまくいかなかったのでiTunes経由で。
TouchOSCEditorで作成した.touchoscファイルをiOSのTouchOSC以下に配置します。

iPadでLAYOUTを先ほど上げたものに変更し(C4-test.touchosc)、
C4-ExtendのWifiAPに接続。ipを172.16.0.1、portを8000に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/3b79240b-a080-6b0d-d005-aed3def9d172.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/53a58986-e8a7-4ae6-5ed2-9ed884808631.png)
こんな感じ
![File (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/b059628d-078f-d848-1fef-81b5b2dc2bff.jpeg)

叩きます。
Analogと同じように反応すればOKです。
ちなみに、正しい反応が分からないときは
c4-ExtendのTriggerからTesttriggerで試せます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/66baa48c-4f7e-87cf-fe6f-7f20f762ba12.png)


#Touchdesignerで使う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/165d79ef-0911-aa04-c4d1-607bfb333684.png)

制作環境として、Art-NetへのOUTPUTで絵を作りながらScene作成ができるようにはしておきたい。
ここら辺の挙動を確認するのも兼ねてTouchDesignerから叩いてみる。
oscOut CHOPだとBundleを外せなくてダメだったのでoscOut DATで制作。

Ethernetを直接接続し、ipを10.0.0.*(50-3)に固定します。
TouchOSCと同じくportは8000に
あとはruteは/c4/trigger/*(Trigger Name)になるよう組みます。
SendタイミングはoffToOn,onToOffの2回送ります。

全体
Github:
https://github.com/NakanishiMasaru/ArtNet_LEDTEST_Touchdesigner/tree/master/touchdesigner_OSC_C4_test
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/fcd39b26-d767-7bd9-3d08-1d34d5999344.png)

流れ、
複数のButtonをreNameでChanNameをOSCのRouteNameに割り当て。
ChanNameごとにOSCを送信するようChopExcute。

Button
Momentaryに変更して押下時に変化するように
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/f4ec278a-b281-a128-3814-3a17587aa45e.png)

constant_OSC_routeName
ここのChanNameを変更することで複数のroute分けかできるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/debdeed4-301d-fef7-6f3d-471caa319334.png)


chopExcute
上記の流れになるようPythonで書いてます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/f3efd912-8195-9267-7c39-063e512c178a.png)

oscout DAT
ここで送信先ip(C4-ExtendのIP)とport(8000)を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149571/b54a0248-0fd0-d936-89dd-8b03c75b3570.png)

###使い方
Buttonを送りたいTriggerの数だけ複製、Constant_OSC_routeNameに個数分ChanNameに記述。
ipとPortを設定して接続すればOSCをトリガーとして出力できるはずです。

良いC4-Extendライフを！

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Qiita　TouchdesigenerからOSCでC4-Extendを叩いてみるテスト。<br>Chopで上手くいかないのでDATで記述。<br>OSCはパケットロストの事も考えると、DATで書くのがお勧めです。<br>Qiita:<a href="https://t.co/5F4Rhty4Qq">https://t.co/5F4Rhty4Qq</a><br>Github:<a href="https://t.co/2ktkDTtLBI">https://t.co/2ktkDTtLBI</a><a href="https://twitter.com/hashtag/touchdesigner?src=hash&amp;ref_src=twsrc%5Etfw">#touchdesigner</a> <a href="https://twitter.com/hashtag/DiGiDot?src=hash&amp;ref_src=twsrc%5Etfw">#DiGiDot</a> <a href="https://t.co/lGlHVvawKn">pic.twitter.com/lGlHVvawKn</a></p>&mdash; k2 (@skckmdtk2m) <a href="https://twitter.com/skckmdtk2m/status/1131759400694063106?ref_src=twsrc%5Etfw">2019年5月24日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>