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

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

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

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

概要 📖 – OSC メッセージ受信とチャンネル化

OSC In CHOPは、ネットワーク経由で OSC メッセージを受信し、アドレスごとのチャンネルとして出力する CHOPです。UDP / Multi-Cast に対応し、外部アプリ・スマホ・マイコン等から送られる OSC データをリアルタイムにチャンネル化します。

主な用途 🎯

  • 外部アプリ・デバイスからの OSC (Open Sound Control) メッセージ受信
  • スマホ・タブレット (TouchOSC / mrmr / Lemur 等) からのリモートコントロール入力取得
  • 他 TouchDesigner / Max/MSP / Ableton Live 等とのリアルタイム通信
  • センサーデバイス・マイコン (Raspberry Pi / M5Stack 等) からのデータ受信
  • ネットワーク越しの制御信号を CHOP チャンネルに変換しパラメータへ Export

データフロー 🔄

入力: ネットワーク UDP パケット

Protocol 判定 (UDP / Multi-Cast)

Network Port / Address 受信

OSC Address Scope フィルタ

Strip Prefix Segments

Queued バッファリング (オプション)

サンプリング (Global Rate / Default Sample Rate)

出力: チャンネルデータ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

OSC In Page 📡

Active .active 🟢

ネットワーク受信の有効化:

  • オン: ネットワークポートに送られたデータを受信し続ける
  • オフ: 受信を停止 (オフ中にポート宛に送られたデータは破棄される)

Protocol .protocol 🌐

使用するネットワークプロトコルの選択

項目 内部名 説明
Messaging (UDP) .msging 標準的な UDP ユニキャストで受信 (デフォルト)
Multi-Cast Messaging (UDP) .multicastmsging マルチキャストグループに参加して受信 (Network Address でグループ指定)

Network Address .netaddress 🏷️

Multi-Cast マルチキャストアドレス:

  • Network Address: Multi-Cast 時のグループアドレス (例: 239.255.0.1)。UDP ユニキャスト時は通常未使用

Network Port .port 🔌

受信ポート番号:

  • Network Port: 送信側と同じポート番号を指定する必要あり (例: 7000, 9000)

Local Address .localaddress 💻

受信側 NIC の指定 (複数ネットワークインターフェース時):

  • Local Address: 受信元の NIC を IP で限定 (例: 192.168.1.10)。空欄なら全 NIC で受信

OSC Address Scope .oscaddressscope 🎯

受信チャンネルの絞り込み (Pattern Matching):

  • OSC Address Scope: チャンネル名パターンで include / exclude を指定。例: ^*accel* で iPhone の加速度チャンネルを除外。Pattern Matching の構文に従う

Use Global Rate .useglobalrate ⏱️

サンプルレート選択:

  • オン: TouchDesigner のグローバルサンプルレートで CHOP をサンプリング
  • オフ: 下記 Default Sample Rate のレートでサンプリング

Default Sample Rate .samplerate 🎚️

個別サンプルレート (Use Global Rate=Off 時):

  • Default Sample Rate: CHOP のサンプルレート (Hz)。Use Global Rate がオフ時のみ有効

Queued .queued 📥

メッセージキューの有効化:

  • オン: メッセージをキューに溜め、Queue Variance / Maximum Queue / Queue Adjust Time でバッファ挙動を制御
  • オフ: キューを使わず即座に処理 (高頻度メッセージで取りこぼしの可能性あり)

Queue Variance .queuevariance 📊

キューターゲット周辺の許容範囲:

  • Queue Variance: キュー長がターゲット ± この値の範囲内ならキュー長調整を行わない

Queue Variance Unit .queuevarianceunit 📐

Queue Variance の単位

項目 内部名 説明
Samples .samples サンプル数で指定
Frames .frames フレーム数で指定
Seconds .seconds 秒で指定

Maximum Queue .maxqueue 📦

キューの最大長:

  • Maximum Queue: キューが満杯になったら以降の受信サンプルは drop される

Max Queue Unit .maxqueueunit 📐

Maximum Queue の単位

項目 内部名 説明
Samples .samples サンプル数で指定
Frames .frames フレーム数で指定
Seconds .seconds 秒で指定

Queue Adjust Time .adjusttime 🕒

キュー長調整の頻度:

  • Queue Adjust Time: 値=1 / 単位=seconds なら 1 秒に 1 回サンプルを複製または破棄してキュー長を調整

Adjust Unit .adjusttimeunit 📐

Queue Adjust Time の単位

項目 内部名 説明
Samples .samples サンプル数で指定
Frames .frames フレーム数で指定
Seconds .seconds 秒で指定

Strip Prefix Segments .stripsegments ✂️

OSC アドレスの先頭セグメント除去:

  • Strip Prefix Segments: 例: /a/b/c/d/e で 3 を指定すると d/e (最終チャンネル名は d_e) になる

Reset Channels .resetchannels 🧹

チャンネル削除と新規追加の抑止:

  • オン: 全チャンネルを削除し、オフに戻すまで新規チャンネルは追加されない
  • オフ: 通常動作 (受信した OSC アドレスに応じてチャンネルが追加される)

Reset Channels Pulse .resetchannelspulse 💥

全チャンネル即時削除パルス:

  • Reset Channels Pulse: 押した瞬間に全チャンネルを削除する (オン状態を保持しない)

Reset Values .resetvalues 0️⃣

チャンネル値リセットと更新抑止:

  • オン: 全チャンネルを 0 にリセットし、オフに戻すまで値は更新されない
  • オフ: 通常動作 (受信値で更新される)

Reset Values Pulse .resetvaluespulse 💥

全チャンネル値の即時 0 リセットパルス:

  • Reset Values Pulse: 押した瞬間に全チャンネル値を 0 にする

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: スマホアプリ (TouchOSC) からの遠隔操作 📱

TouchOSC (iPhone/iPad) → Wi-Fi → OSC In CHOP → パラメータ Export
  1. TouchOSC アプリで送信先 IP を PC の IP、ポートを 7000 に設定
  2. OSC In CHOP の Network Port を 7000、Active をオン
  3. 受信した /fader1 等のチャンネルを目的のパラメータに Export
  4. スマホのフェーダー・ボタンでビジュアルパラメータをリアルタイム操作

Example 2: Max/MSP / Ableton Live との連携 🎹

Max/MSP (udpsend) → localhost:9000 → OSC In CHOP → ビジュアルパラメータ
  1. Max/MSP 側で udpsend 127.0.0.1 9000 オブジェクトを設置
  2. TouchDesigner 側 OSC In CHOP の Network Port を 9000 に設定
  3. 音楽パラメータ (テンポ・ノート情報) を OSC で送出
  4. 音と映像のタイミングをサンプル精度で同期

Example 3: マイコン (M5Stack / ESP32) からのセンサー受信 🔌

M5Stack (Wi-Fi OSC) → Network → OSC In CHOP → Math CHOP (正規化) → 制御
  1. M5Stack で OSC ライブラリを使い /imu/accel/x 等を送信
  2. OSC In CHOP で受信、OSC Address Scope で /imu/* に絞り込み
  3. 後段に Math CHOP を挟み From Range / To Range で正規化
  4. 加速度・ジャイロでビジュアル要素を駆動するインスタレーションを構築

Example 4: 複数 PC 間の TouchDesigner 同期 🖥️

TouchDesigner A (OSC Out CHOP) → LAN → TouchDesigner B (OSC In CHOP) → 描画同期
  1. 送信側 PC で OSC Out CHOP を設置し、送信先 IP / ポートを受信側に向ける
  2. 受信側 PC で OSC In CHOP の Network Port を一致させ、Active をオン
  3. マルチディスプレイ環境で Strip Prefix Segments により共通プレフィックスを除去
  4. 複数 PC でフレーム同期したショー再生を実現

関連オペレータ 🔗

類似機能OP 🔍

  • OSC Out CHOP — OSC In の対となる送信側 CHOP、チャンネル値を OSC メッセージにして送信
  • MIDI In CHOP — USB / MIDI 規格でコントローラー入力を受信 (OSC は IP ネットワーク、MIDI は MIDI 規格)
  • Serial CHOP — シリアル通信 (USB / COM ポート) でマイコンから受信、OSC は IP ネットワーク経由

組み合わせ推奨OP 🔄

  • Math CHOP — 受信値の正規化・スケーリング・四則演算
  • Filter CHOP — 受信信号のノイズをスムージング
  • Logic CHOP — 閾値判定で OSC 値をイベント化
  • Trigger CHOP — OSC 受信をきっかけにエンベロープ・パルスを発火
  • Select CHOP — 受信した複数チャンネルから必要なものだけ抽出

前処理・後処理CHOP 🎯


Info CHOP情報 📊

OSC In 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: メッセージが受信できない
✅ Solution:

  • Active がオンになっているか確認
  • 送信側と Network Port が一致しているか確認 (例: 両方 7000)
  • ファイアウォール / セキュリティソフトが UDP ポートをブロックしていないか確認
  • 複数 NIC 環境では Local Address で正しい受信 NIC を指定

❌ Problem: 受信メッセージが取りこぼされる
✅ Solution:

  • Queued をオンにして Maximum Queue を増やす
  • Queue Adjust Time を短くしてキュー長調整を頻繁に行う
  • 送信側の頻度がサンプルレートに対して高すぎる場合、後段に Filter CHOP を挟みダウンサンプリング

❌ Problem: 想定外のチャンネルが大量に生成される
✅ Solution:

  • OSC Address Scope に Pattern Matching パターンを設定して必要なアドレスだけ通す (例: /synth/*)
  • Reset Channels Pulse で一度クリアしてから受信を再開
  • Strip Prefix Segments で共通プレフィックスを除去しチャンネル名を整理

❌ Problem: Multi-Cast 受信が動かない
✅ Solution:

  • Protocol を Multi-Cast Messaging (UDP) に切替
  • Network Address に有効なマルチキャストグループ (例: 239.255.0.1) を指定
  • ルーター / スイッチがマルチキャストを許可しているか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました