TouchDesigner からネットワーク上にある機器の設定を更新する 

こんにちは！こちらは TouchDesigner Advent Calendar 2024 12日目の記事です。

## サンプルファイル
今回作ったサンプルは以下にあります。
[https://github.com/chimanaco/touchdesigner-advent-calendar-2024](https://github.com/chimanaco/touchdesigner-advent-calendar-2024)

## この記事について
TouchDesigner からネットワーク経由で特定の機器の設定を取得したり更新したりするやり方になります。1回分かったら簡単なんですが取っ掛かりに時間かかる人（ぼくのような人）もいそうなのでまとめてみることにしました。現在以下の機器について書いています。

- [RME 12Mic-D](#rme-12mic-d)
- [Blackmagic Videohub](#blackmagic-videohub)
- [ATV A-PRO-1](#atv-a-pro-1)
- [MSolutions MS-0401E](#msolutions-ms-0401e)
- [IMAGENICS US-84RS](#imagenics-us-84rs)

簡単な例だけ作っているので、やりたいことに該当するコマンドはそれぞれドキュメントを参照してください。同一メーカーであればバージョンや機器が違っても似たような設定で対応できるのではないかと思います。今後、何か別の種類の機器やプロトコルを使うことがあったら更新していく予定です。

## RME 12Mic-D
MADI & Dante ネットワーク・オーディオ対応12チャンネルデジタル制御マイク・プリアンプ。

![RME_12MIC-D_Perspective.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/53e6c6e3-d303-3a53-177b-eec25f761cdf.jpeg)

### ドキュメント
* [RME 12Mic-D :: RME Manuals](https://docs.rme-audio.com/12micd/)
* [Remote Control Overview :: RME Manuals](https://docs.rme-audio.com/12micd/150-1c_remote_overview/#151-4C)

json 形式のデータを HTTP POST リクエストで送ります。 
`Web Client DAT` を使用します。

### 使用例
`/project1/webclient_12mic_d`
Preset 番号を指定する例です。

![2024-12-17_14h44_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/b845ff69-72bc-0d76-336a-5bdfae264070.png)

```
{
	"device":
	{
		"preset":
		{
			"recall": 1
		}
	}
}
```

## Blackmagic Videohub
12G-SDI ビデオルーター。

![1_hero-enlarge.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/9547a67d-8f7b-137c-00b7-75191bc901ea.jpeg)

### ドキュメント
* [VideohubDeveloperInformation.pdf](https://documents.blackmagicdesign.com/DeveloperManuals/VideohubDeveloperInformation.pdf)

TCP 経由で Telnet を使って Label を送ります。Port はデフォルトだと 9990。
`TCP/IP DAT` を使用します。

### 使用例
`/project1/tcpip_videohub`
インプットに対応するアウトプットを指定する例です。

![2024-12-17_14h44_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/12720e49-c1a8-1434-1a3f-7408150b6887.png)

```
n = op('tcpip1')
cmd = 'VIDEO OUTPUT ROUTING:' + '\r\n' + '1 10' + '\r\n'
n.send(cmd, terminator='\r\n')
```

## ATV A-PRO-1
4K HDMI スイッチャー。

![a-pro-1_slide1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/269e2227-306e-d2df-39db-2ad6051f8746.jpeg)

### ドキュメント
* [A-PRO-1_ReferenceManual_Ver2.12_jp.pdf](http://www.atvcorporation.com/products/videos/a-pro-1/file/1908/A-PRO-1_ReferenceManual_Ver2.12_jp.pdf)
* [サポート｜HDMI2.0 2ch 4K 1M/E AV MIXER A-PRO-1｜ビデオ関連｜製品情報｜音と映像の融合と進化 、電子楽器と映像機器のATV株式会社](http://www.atvcorporation.com/products/videos/a-pro-1/support.html)

TCP 経由で Telnet を使って Label を送ります。Port はデフォルトだと確か23。
`TCP/IP DAT` を使用します。

### 使用例
`/project1/tcpip_A_PRO_1`
Mix/Effect Type を指定する例です。

![2024-12-18_10h04_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/7fa826af-c90e-b686-704d-6f62bbbec629.png)

```
n = op('tcpip1')
cmd = 'MET:1'
n.send(cmd, terminator='\r\n')
```

## MSolutions MS-0401E
4x1 LAN回線切替器

![MS-0401E_Front_Angle.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/f6f9d929-07ef-05eb-de1c-a3af5cb0f05e.jpeg)

### ドキュメント
* [MS-0401E-User-Guide-Aug-2024.pdf](https://www.m4sol.com/wp-content/uploads/2024/08/MS-0401E-User-Guide-Aug-2024.pdf)

json 形式だったので RME と同じパターンと思いきや TCP/IP でいけました。Port はデフォルトだと9760。
`TCP/IP DAT` を使用します。

### 使用例
`/project1/tcpip_MS_0401`
Port番号を指定する例です。

![2024-12-19_15h40_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/ad42bbb3-1d68-e176-7d3f-d9eccf3230da.png)

```
index=1
n = op('tcpip1')
cmd = '{"action":"select","port": ' + str(int(index)) + '}'
n.send(cmd, terminator='\r\n')
```

## IMAGENICS US-84RS
4K HDMI/FS（フレームシンクロナイザー）搭載マトリクスセレクター。

![US-84RS-s-logo-1060x720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/0f64ec49-3d15-0cbd-61c7-5f7ad09fa25f.png)

### ドキュメント
* [US-84RS外部制御取説](https://imagenics.co.jp/pdf/products/t_us-84rs_gaibu.pdf)

TCP 経由で Telnet を使って Label を送ります。Port は9999固定らしい。
`TCP/IP DAT` を使用してやればできそう。

ドキュメントにも以下のように書いてあるし、実際分かりにくくてぼくもコマンド試せなかったので、ニーズがある方はチャレンジしてみてください…！

> パソコンのコマンドプロンプト等から、TELNET 接続を使用して各種ネットワーク設定を行うことも可能です。しかし、設定値が一部数値化されており直観的な設定ではありません。よって、可能な限り本体オンスクリーンメニュー操作や WEB 接続からの設定を推奨します。

それではみなさま Happy Holidays!!