OSC Out CHOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

OSC Out CHOP のネットワーク送信機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 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 メッセージ

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 🏷️

送信先サーバのネットワークアドレス:

  • ホスト名指定: foofoo.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)
  1. MIDI In CHOP もしくは Audio Device In CHOP で制御値を取得
  2. OSC Out CHOP の Network Address に DAW PC の IP、Port に DAW 側 OSC 受信ポートを設定
  3. Data Format を「Transpose By Name」にしてチャンネル名階層を OSC アドレスに対応
  4. DAW 側で受信した OSC をマクロパラメータにマッピング

Example 2: 別PCのTDプロジェクトへ値を送る 🌐

送信側 PC: 任意 CHOP → OSC Out CHOP → ネットワーク → 受信側 PC: OSC In CHOP
  1. 送信側 OSC Out CHOP の Network Address に受信側 PC の IP を指定
  2. Network Port を任意の空きポート (例: 10000) に設定し、受信側 OSC In と一致させる
  3. Protocol を「Messaging (UDP)」、Numeric Format を「Float (32 bit)」に設定
  4. 受信側で OSC In CHOP のチャンネル値が更新されることを確認

Example 3: iPad OSC コントローラへのフィードバック 📱

TouchDesigner 内部状態 CHOP → OSC Out CHOP → iPad (TouchOSC / Mira)
  1. iPad アプリ側の Listen Port を確認し、OSC Out の Network Port にその値を設定
  2. Network Address は iPad の Wi-Fi IP アドレスを指定
  3. 現在再生中のシーン番号・BPM 等の内部状態を OSC として送信
  4. iPad UI 上のインジケータがリアルタイム反映される

Example 4: マルチプロジェクション同期信号配信 🎥

マスタ CHOP (Timeline / Phase) → OSC Out CHOP (Multi-Cast) → 複数台のレンダリング PC
  1. Protocol を「Multi-Cast Messaging (UDP)」に切替
  2. Network Address にマルチキャストグループアドレス (例: 239.255.0.1) を指定
  3. 全レンダリング PC の OSC In CHOP で同じマルチキャストアドレスを購読
  4. 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 🎯


Info CHOP情報 📊

OSC Out CHOPは Info CHOP による詳細情報取得に対応しています。

CHOP固有情報 🎚️

  • start: CHOPインターバルの開始(サンプル単位)
  • length: CHOPのサンプル数
  • sample_rate: フレーム毎秒のサンプルレート
  • num_channels: CHOPのチャンネル数
  • time_slice: タイムスライス有効時は1、無効時は0
  • export_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 を強制

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました