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

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

Delay CHOP の遅延機能を示す図

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

概要 📖 – 信号の遅延と時間シフト

Delay CHOPは、入力チャンネルを指定時間だけ遅延させ、過去のサンプル値を時間シフトして出力する CHOPです。Delay Unit で秒・フレーム・サンプル単位を切替でき、Reset / Reset Pulse でバッファを瞬時にクリアできます。

主な用途 🎯

  • 入力チャンネルを指定時間だけ遅延させて時間シフトさせる
  • リアルタイム入力に対するエコー・反響表現の生成
  • 複数センサー間のタイミング差を補正するアライメント
  • 音声・映像同期のためのオフセット調整
  • アニメーションの追従効果(追従・余韻・残響)の演出

データフロー 🔄

入力: チャンネルデータ

Delay バッファに蓄積

指定時間(Delay Unit に基づく単位)だけ過去のサンプルを取り出し

出力: 遅延されたチャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Delay Page 📋

Delay .delay

入力チャンネルに適用する遅延量。Delay Unit メニューで指定した単位(秒・フレーム・サンプル)に従う。

Delay .delay
– 入力チャンネルに対する遅延量
– Delay Unit で指定した単位で値を入力
– チャンネルごとに異なる遅延を与えたい場合は me.chanIndex を式に使用
– 表で個別に遅延量を指定したい場合は op('delaysTable')[me.chanIndex,0] のように Table DAT を参照

Delay Unit .delayunit 📏

Delay パラメータの単位を選択するメニュー

項目 内部名 説明
Samples .samples サンプル単位で遅延量を指定
Frames .frames フレーム単位で遅延量を指定
Seconds .seconds 秒単位で遅延量を指定(最も直感的な時間単位)

Reset .reset ♻️

遅延キャッシュをクリアし、遅延処理をバイパスするトグル:

  • Reset トグル: オン: 遅延処理をバイパスし、内部に蓄積されている過去サンプルのキャッシュを全消去する。オフに戻すと再びバッファ蓄積が始まる

Reset Pulse .resetpulse

押下した瞬間に遅延キャッシュをクリアするパルスボタン:

  • Reset Pulse ボタン: 押下した瞬間に遅延キャッシュをインスタント・クリア。Reset トグルとは異なり、押した瞬間 1 回限りの動作で連続バイパスは行わない

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: アニメーションの追従効果(残響) 🎞️

Mouse In CHOP → Delay CHOP (0.2s) → Geometry tx/ty
  1. Mouse In CHOP でカーソル座標を取得
  2. Delay CHOP の Delay Unit を「Seconds」、Delay を 0.2 に設定
  3. 出力をフォロワーオブジェクトの tx/ty パラメータに Export
  4. メインカーソルから 0.2 秒遅れて追従するエコー的な動きが得られる

Example 2: 複数センサーのタイミング補正 📡

Sensor A (早い) → Delay CHOP → Math CHOP (合成) ← Sensor B (遅い)
  1. Sensor A と Sensor B のサンプル間に既知のタイミングずれがある状況を想定
  2. 早く届くチャンネルに Delay CHOP を挟み、ずれ量だけ遅延させる
  3. 後段の Math CHOP / Logic CHOP で 2 系統を時間軸を揃えて合成
  4. センサー間の物理的レイテンシ差を補正したアライメント信号を生成

Example 3: リアルタイム音声のディレイ・エコー 🎵

Audio Device In CHOP → Delay CHOP → Math CHOP (Mix) → Audio Device Out CHOP
  1. Audio Device In CHOP でマイク入力を取得
  2. Delay CHOP の Delay Unit を「Seconds」、Delay を 0.3 に設定
  3. 原音と遅延音を Math CHOP で 50:50 の比率でミックス
  4. Audio Device Out CHOP に送ることでエコー効果が得られる

関連オペレータ 🔗

類似機能OP 🔍

  • Lag CHOP — 目標値への追従に時間をかけるスムージング型の遅延(バッファコピーではなく補間ベース)
  • Filter CHOP — 時間方向の平滑化を行うフィルタリング系(鋭い時間シフトではなく緩やかな遅延)

組み合わせ推奨OP 🔄

  • Math CHOP — 原音・原信号と遅延信号をミックスしてエコー・残響効果を作る
  • Filter CHOP — Delay 出力を後段で平滑化してより滑らかな残響を演出
  • Trail CHOP — Delay 前後の信号の時間履歴を可視化して遅延量を確認
  • Trigger CHOP — Reset Pulse へ Trigger 出力を接続して条件付きで遅延キャッシュをクリア
  • Audio Device In CHOP — オーディオ入力に Delay を適用してリアルタイム・エコーを構築

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Delay 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:

  • Delay Unit が想定単位(Seconds / Frames / Samples)になっているか確認
  • Delay 値を変えた直後はバッファに古いサンプルが残るため、Reset Pulse でキャッシュをクリア
  • Time Slice 設定が下流の期待と一致しているか確認

❌ Problem: 遅延キャッシュが古いまま残っている
✅ Solution:

  • Reset トグルをオンにして遅延処理をバイパスし、キャッシュを空にしてからオフへ戻す
  • Reset Pulse ボタンを押下して瞬時にキャッシュをクリア
  • 上流に Filter CHOP 等を入れている場合、上流側の遅延も合算されるためトポロジを再確認

❌ Problem: チャンネルごとに異なる遅延を与えられない
✅ Solution:

  • Delay パラメータの式欄に me.chanIndex を含めるとチャンネル毎に遅延量を計算できる
  • Table DAT を用意し op('delaysTable')[me.chanIndex,0] で行ごとの遅延量を参照
  • 後段の Math CHOP でチャンネル毎にスケールし結果を整える

参考資料 📚

その他 🔗

公式リソース 📖

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