
概要 📖 – マルチマシン同期信号の送信
Sync Out CHOPは、複数マシン間のクックを揃えるためにネットワーク経由で同期信号を送信し、クライアントの応答状況を監視する CHOPです。Sync In CHOP と組み合わせてマルチマシン構成のフレーム同期を実現し、タイムアウトの蓄積でクライアントの一時無視・恒久バンを行います。
主な用途 🎯
- 複数マシン間のフレーム同期信号送信(ジェネロック相当のソフトウェア同期)
- プロジェクションマッピング・LEDウォール等のマルチノード演出での同時刻表示
- Sync In CHOP との対で構成するマスター/クライアント同期トポロジ
- クライアントの応答タイムアウト監視(消失検知・無視・恒久バン)
- ライブパフォーマンスでのマルチマシン Render Farm 構成の同期基盤
データフロー 🔄
入力: マスター側のクックタイミング
↓
マルチキャストアドレスへ同期パケット送信
↓
各クライアントの Sync In CHOP が受信して整合
↓
応答監視・タイムアウト集計
↓
出力: 同期確立状態
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Sync Out Page 📋
Active .active 🔌
同期動作の有効/無効を切り替えるトグル:
- Active トグル: オン時に CHOP が同期信号送信を開始し、クライアントとの同期を試みる
Multicast Address .multicastaddress 📡
通信用マルチキャストアドレス:
- Multicast Address: 通信に使用する IP アドレス(デフォルト
224.0.0.1)
Network Port .port 🔢
ネットワークポート番号:
- Network Port: マルチキャストアドレスに紐づくポート番号
Local Address .localaddress 🖥️
送信元 NIC の指定:
- Local Address: 送信元として使用する IP アドレス。複数 NIC を搭載するマシンで使用 NIC を指定したい場合に有用
Local Port Mode .localportmode ⚙️
ローカルポートを自動選択するか手動指定するかのモード
| 項目 | 内部名 | 説明 |
|---|---|---|
| Automatic | .automatic |
ローカルポートを自動的に選択 |
| Manual | .manual |
Local Port パラメータで明示的に指定したポートを使用 |
Local Port .localport 🔌
Manual モード時の使用ポート:
- Local Port:
Local Port ModeがManualのときに使用するポート番号
Timeout (msec) .timeout ⏲️
同期信号の最大待機時間:
- Timeout (msec): 他の Sync In CHOP からの同期信号を待つ最大時間。ミリ秒単位で指定
Client Timeouts (Consecutive) .clienttimeouts 🔁
連続タイムアウトの一時無視閾値:
- Client Timeouts (Consecutive): クライアントが連続して何回タイムアウトしたら以降のタイムアウトを発生させずに無視するかの最大回数。再び時間内に応答するか、CHOP をリセットするまで無視状態が続く
Ban Clients .banclients 🚫
恒久バンの有効化:
- Ban Clients トグル: クライアントの恒久バンを有効化する
Total Timeouts .banclienttimeouts 📊
恒久バン移行までの累計タイムアウト:
- Total Timeouts: クライアントを恒久的に無視するまでの累計タイムアウト回数。バン状態を解除するにはリセットが必要
Clear Stats .clearstats 🧹
統計とバンリストのリセット:
- Clear Stats ボタン: バンリストおよび Info CHOP で報告される累計タイムアウト統計をすべてクリアする
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: マルチプロジェクター映像の同期再生 🎬
Master Sync Out CHOP → マルチキャストネットワーク → 各 Slave Sync In CHOP → Movie File In TOP のフレーム同期
- マスターマシンに Sync Out CHOP を配置し Active をオンに設定
- Multicast Address と Network Port をスレーブと共通の値に揃える
- 各スレーブマシンに Sync In CHOP を配置し同じアドレス/ポートで接続
- 全マシンで Movie File In TOP のフレームが同一タイミングで進行することを確認
Example 2: LED ウォール演出のフレーム同期 💡
Sync Out CHOP (Master) → スイッチングハブ → 複数 Slave Sync In CHOP → Render TOP
- 演出マシンを 1 台のマスターと複数のレンダーノードで構成
- マスター側で Sync Out CHOP の Active をオンにして同期信号送信を開始
- Local Address でマスター側 NIC を明示し、有線 LAN 経由でマルチキャスト送信
- 各レンダーノードが同じフレームを出力し、LED 全面で乱れのない演出が成立
Example 3: 応答しないクライアントの自動バン 🚫
Sync Out CHOP (Ban Clients オン) → クライアント切断検知 → Info CHOP でバン状態取得 → ログ出力
- Ban Clients をオンにし Total Timeouts を任意の値(例: 60)に設定
- Client Timeouts (Consecutive) を 10 程度に設定して一時無視も併用
- ネットワーク障害でクライアントが連続タイムアウトすると自動的に無視/バン状態へ移行
- Info CHOP で各クライアントの累計タイムアウトを監視し、Clear Stats ボタンで状態をリセット
関連オペレータ 🔗
類似機能OP 🔍
- Sync In CHOP — Sync Out CHOP と対で機能する受信側、クライアントマシンに配置
- OSC Out CHOP — 汎用 OSC プロトコルでチャンネル値を送信、同期用途では時刻整合が課題
組み合わせ推奨OP 🔄
- Sync In CHOP — クライアント側の対 OP、同じマルチキャストアドレス/ポートで接続
- Info CHOP — Sync Out の各クライアント応答状況・累計タイムアウトを取得
- Timer CHOP — マスター側のタイミング基準として同期送信と組み合わせる
- Trigger CHOP — 同期確立を契機にクライアント側でイベント発火
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Sync Out CHOP は Info 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: クライアントが同期しない / Sync In が受信できない
✅ Solution:
- Multicast Address と Network Port がマスター・クライアントで一致しているか確認
- OS のファイアウォール / アンチウイルスでマルチキャスト UDP がブロックされていないか確認
- 複数 NIC を持つマシンでは Local Address で送信元 NIC を明示的に指定する
❌ Problem: クライアントが頻繁にタイムアウトする
✅ Solution:
- Timeout (msec) を実ネットワーク遅延に対して十分大きい値に設定
- 前段に Filter CHOP を挟むのではなく、ネットワーク自体(スイッチ・ケーブル・NIC ドライバ)を再点検
- Client Timeouts (Consecutive) を上げて一時的なジッタによる無視を抑える
❌ Problem: 意図しないクライアントが恒久バンされた
✅ Solution:
- Ban Clients をオフにして恒久バン機能を無効化し動作を切り分ける
- Total Timeouts の値を高めに設定し、短期障害でバンに到達しないよう余裕を持たせる
- Clear Stats ボタンでバンリストと累計タイムアウトをリセットしてから再運用
❌ Problem: 複数アプリ間でポートが競合する
✅ Solution:
- Local Port Mode を Manual に切り替え、未使用のポートを明示的に割り当て
- Network Port をデフォルト以外の値(例: 10001 以上)に変更して衝突回避
- 同じマシンで複数 TouchDesigner インスタンスを起動する場合は Local Port を個別に設定
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

