
概要 📖 – CHOPチャンネルを OSC メッセージとしてネットワーク送信
OSC Out CHOPは、入力 CHOP のチャンネル値を OSC (Open Sound Control) メッセージに変換し、UDP / Multicast / UDT 経由でネットワーク送信する CHOPです。外部アプリケーション・他 PC・モバイルデバイスとの間で、低レイテンシで制御信号をやり取りする際の標準的な出口となります。
主な用途 🎯
- TouchDesigner から外部 OSC 受信機(DAW・Max/MSP・Pure Data 等)へのリアルタイム送信
- 別 PC で動作する TouchDesigner プロジェクトへのチャンネル値ブリッジ
- iPad / スマートフォン上の OSC コントローラへのフィードバック送信
- マルチプロジェクション環境でのマシン間同期信号配信
- ライブパフォーマンス用照明・音響卓への制御信号 routing
データフロー 🔄
入力: CHOP チャンネル
↓
Protocol 選択 (UDP / Multicast / UDT)
↓
Numeric Format 変換 (Int / Float / Double)
↓
Data Format パッキング (Transpose / Transpose By Name)
↓
ネットワーク送信 (Network Address : Port)
↓
出力: OSC メッセージ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
OSC Out Page 📤
Active .active 🔘
送信の有効・無効切替:
- オン: CHOP がネットワークポートへ情報を送信する
- オフ: データを送信しない(接続維持・パケット停止の制御用)
Protocol .protocol 🌐
使用するネットワークプロトコルの選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Messaging (UDP) | .msging |
標準的な UDP 送信。低レイテンシだがパケット到達は保証されない |
| Multi-Cast Messaging (UDP) | .multicastmsging |
マルチキャストグループへ UDP 送信。1 対多配信に有効 |
| Reliable Messaging (UDT Library) | .reliablemsging |
UDT ライブラリによる到達保証付き送信 |
Network Address .netaddress 🏷️
送信先サーバのネットワークアドレス:
- ホスト名指定:
fooやfoo.bar.comのような標準的な WWW アドレス - IP アドレス指定:
100.123.45.78のような IP アドレスでの直接指定が可能 - ローカル指定:
localhostを指定すると同一 PC 内の別プロセスへの送信になる
Network Port .port 🔢
送信先ポート番号:
- Network Port: OSC Out がパケットを送信する先のポート番号。受信側 OSC In の Local Port と一致させる
Local Address .localaddress 🖥️
送信元 NIC 指定 (複数 NIC 環境向け):
- Local Address: システムが複数の NIC (Network Interface Card) を持つ場合に、送信元として使用する NIC を選択するための IP アドレス指定
Max Queue Size .maxsize 📦
送信キューサイズの上限:
- Max Queue Size: OSC Out が一度に送信を試みるメッセージの最大数。値の単位は Max Queue Size Unit で決まる
Max Queue Size Unit .maxsizeunit 📐
Max Queue Size の単位 (Samples / Frames / Seconds):
- Samples: サンプル単位でキューサイズを指定
- Frames: フレーム単位でキューサイズを指定
- Seconds: 秒単位でキューサイズを指定
Cook Every Frame .cookalways 🔁
毎フレーム強制クック設定:
- Cook Every Frame: 下流 CHOP がクックしていなくても、この CHOP を毎フレーム強制的にクックする
Numeric Format .numericformat 🔢
送信する数値データのビット幅と型を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Int (32 bit) | .int |
32 ビット整数で送信 |
| Float (32 bit) | .float |
32 ビット浮動小数点で送信 (OSC 標準) |
| Double (64 bit) | .double |
64 ビット倍精度浮動小数点で送信 (高精度が必要な場合) |
Data Format .format 📋
外部送信メッセージのフォーマット指定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Transpose | .transpose |
各チャンネルの最初のサンプルを 1 つのマルチサンプルチャンネルとして転置送信 |
| Transpose By Name | .transposename |
ルート名 (最初の / までの名前) が同じチャンネルを 1 メッセージにグループ化。例: A/Red B/Red A/Blue B/Blue → /A Red Blue と /B Red Blue の 2 メッセージ送信 |
Max Message Bytes .maxbytes 📏
メッセージパケットサイズの上限:
- Max Message Bytes: 送信メッセージパケットのサイズを制限し、超過時はメッセージを自動分割して送信
Send Events Every Cook .sendevents 📡
毎クック送信の有効・無効:
- オン: 値の変化に関わらず全チャンネルを毎クック送信
- オフ: 値が変化したデータのみ送信(帯域節約)
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: DAW への MIDI 代替制御信号送信 🎹
MIDI In CHOP → Math CHOP (Range 変換) → OSC Out CHOP → DAW (Ableton Live / Reaper)
- MIDI In CHOP もしくは Audio Device In CHOP で制御値を取得
- OSC Out CHOP の Network Address に DAW PC の IP、Port に DAW 側 OSC 受信ポートを設定
- Data Format を「Transpose By Name」にしてチャンネル名階層を OSC アドレスに対応
- DAW 側で受信した OSC をマクロパラメータにマッピング
Example 2: 別PCのTDプロジェクトへ値を送る 🌐
送信側 PC: 任意 CHOP → OSC Out CHOP → ネットワーク → 受信側 PC: OSC In CHOP
- 送信側 OSC Out CHOP の Network Address に受信側 PC の IP を指定
- Network Port を任意の空きポート (例: 10000) に設定し、受信側 OSC In と一致させる
- Protocol を「Messaging (UDP)」、Numeric Format を「Float (32 bit)」に設定
- 受信側で OSC In CHOP のチャンネル値が更新されることを確認
Example 3: iPad OSC コントローラへのフィードバック 📱
TouchDesigner 内部状態 CHOP → OSC Out CHOP → iPad (TouchOSC / Mira)
- iPad アプリ側の Listen Port を確認し、OSC Out の Network Port にその値を設定
- Network Address は iPad の Wi-Fi IP アドレスを指定
- 現在再生中のシーン番号・BPM 等の内部状態を OSC として送信
- iPad UI 上のインジケータがリアルタイム反映される
Example 4: マルチプロジェクション同期信号配信 🎥
マスタ CHOP (Timeline / Phase) → OSC Out CHOP (Multi-Cast) → 複数台のレンダリング PC
- Protocol を「Multi-Cast Messaging (UDP)」に切替
- Network Address にマルチキャストグループアドレス (例: 239.255.0.1) を指定
- 全レンダリング PC の OSC In CHOP で同じマルチキャストアドレスを購読
- 1 度の送信で複数 PC へ同時配信され、プロジェクションの同期が取れる
関連オペレータ 🔗
類似機能OP 🔍
- OSC In CHOP — OSC メッセージ受信側。OSC Out CHOP と対をなす
- MIDI Out CHOP — OSC ではなく MIDI メッセージで送信するレガシー経路
組み合わせ推奨OP 🔄
- Math CHOP — 送信前に値域を 0〜1 や 0〜127 に変換
- Filter CHOP — 送信前にノイズを平滑化してパケット帯域を抑制
- Rename CHOP — チャンネル名を OSC アドレス形式 (
/group/param) に整形 - Select CHOP — 送信したいチャンネルだけ抽出して帯域節約
- Trail CHOP — 送信値の時間履歴をデバッグ可視化
前処理・後処理CHOP 🎯
- 前処理: Math CHOP、Filter CHOP、Rename CHOP、Select CHOP、Resample CHOP
- 後処理: Null CHOP、Trail CHOP、Info CHOP
Info CHOP情報 📊
OSC Out CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 送信先で OSC メッセージが受信できない
✅ Solution:
- Network Address と Network Port を再確認し、受信側 OSC In の Local Port と一致しているか検証
- ファイアウォール (Windows Defender / ルータ) が UDP 通信をブロックしていないか確認
- 送信側と受信側が同じサブネットにあるか、または NAT 越え設定が正しいか確認
❌ Problem: 値が変化しないと送信されない
✅ Solution:
- Send Events Every Cook をオンにすると、値が変化しなくても毎クック送信される
- 受信側で「値が来ない=接続切断」と誤判断する場合は、ハートビート的に毎クック送信が有効
- 帯域節約と確実性のトレードオフを考慮して切替
❌ Problem: 送信メッセージが分断されたり欠落する
✅ Solution:
- Max Message Bytes が小さすぎると 1 メッセージが複数パケットに分割される、適切な値に増やす
- UDP の到達非保証が原因なら Protocol を「Reliable Messaging (UDT Library)」に切替
- 送信レートが高すぎる場合は前段に Resample CHOP を入れてレートを抑える
❌ Problem: 複数 NIC 環境で意図しない NIC から送信される
✅ Solution:
- Local Address に明示的に送信元 NIC の IP アドレスを指定する
- OS のルーティングテーブルを確認し、対象サブネットのデフォルト NIC を整理
- VPN 接続中は VPN 側 NIC が優先される場合があるため、Local Address 指定で物理 NIC を強制
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

