
概要 📖 – 曲線で時間軸を歪ませる
Warp CHOPは、第 1 入力(Pre-Warp Channels)を第 2 入力(Warp Curve)の単一チャンネルでタイムワープし、可変速再生や任意位置サンプリングを行う CHOPです。Rate Control では Warp Curve の値そのものが再生速度(1 = 等速、>1 で加速、<0 で逆再生)として作用し、Index Control では Warp Curve の値が Pre-Warp Channels の時間インデックスとして直接参照されます。出力チャンネル数とサンプルレートは Pre-Warp 入力に従い、start-end 区間は Warp Curve 入力に従います。
主な用途 🎯
- Pre-Warp Channels のタイムストレッチ・タイムコンプレッション(Warp Curve による時間軸の伸縮)
- Rate Control モードでの可変速再生(Warp Curve > 1 で加速、< 1 で減速、< 0 で逆再生)
- Index Control モードでの任意位置サンプリング(Warp Curve の値を時間インデックスとして直接参照)
- キーフレームアニメーションのタイミング調整(非タイムスライス済みチャンネルの時間軸再マッピング)
- Stretch Indices to Channel Length による Warp Curve の自動正規化(min/max を Pre-Warp 範囲の端点に対応付け)
データフロー 🔄
入力 1: Pre-Warp Channels(時間ワープ対象)
+
入力 2: Warp Curve(単一チャンネルの時間制御信号)
↓
Method(Rate Control / Index Control)選択
↓
Stretch Indices to Channel Length による正規化
↓
線形補間(stretch / compress 両対応)
↓
出力: Warp Curve の start-end 区間で時間軸変換されたチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Warp Page 📁
Method .method 🎛️
Warp Curve をどう解釈するかを決定するモード切り替え
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rate Control | .rate |
Warp Curve の値を再生速度(rate)として解釈。値 1 で等速、>1 で加速、<1 で減速、<0 で逆再生 |
| Index Control | .index |
Warp Curve の値を Pre-Warp Channels への時間インデックスとして解釈。Units が Seconds なら Warp Curve 値 2 で時刻 2 秒の値を取得 |
Stretch Indices to Channel Length .scaleindex 📏
Warp Curve の値域マッピング設定:
- オン: Warp Curve の最小値・最大値を Pre-Warp Channels の開始・終了に対応付け。Warp Curve の絶対値ではなく相対形状のみが意味を持つ
- オフ: Warp Curve をそのままの値で適用。Pre-Warp Channels の伸縮(stretch / compress)に対し線形補間が行われる
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: キーフレームアニメーションのタイムストレッチ 🎬
Keyframe CHOP (Pre-Warp Channels) → Warp CHOP ← LFO CHOP (Warp Curve, Rate Control) → Geometry transform
- Keyframe CHOP でモーションパスを作成(非タイムスライス済み)
- 第 2 入力に LFO CHOP を接続し、Warp Curve として時間制御信号を供給
- Warp CHOP の Method を「Rate Control」に設定、Warp Curve の値で再生速度を可変
- 出力をジオメトリの transform パラメータへ Export し、緩急のあるアニメーションを生成
Example 2: Index Control で任意位置サンプリング 🎯
Pattern CHOP (Pre-Warp Channels) → Warp CHOP ← Constant CHOP (Warp Curve, Index Control) → Output
- Pattern CHOP で 0〜10 秒分の波形データを生成
- 第 2 入力に Constant CHOP(または Math CHOP の出力)を接続
- Method を「Index Control」に設定し Warp Curve 値 = 3.5 で時刻 3.5 秒の値を直接取得
- Warp Curve の値を別 CHOP で動的に変化させればスクラブ再生(タイムライン上を自在に移動)が可能
Example 3: Rate Controlで逆再生・スロー演出 🔁
Pre-key-framed motion → Warp CHOP ← Wave CHOP (Warp Curve: -1 → 1 sweep, Rate Control) → Geometry
- 事前にキーフレーム化したモーションを Pre-Warp Channels に流し込む
- Warp Curve として -1 〜 1 を sweep する Wave CHOP を第 2 入力に接続
- Method を「Rate Control」、Stretch Indices to Channel Length をオンに設定
- Warp Curve が負の領域でアニメーションが逆再生、絶対値が小さい領域でスローモーションになる演出が完成
関連オペレータ 🔗
類似機能OP 🔍
- Speed CHOP — 速度値を時間積分して進行を制御する CHOP。Rate Control 用途で代替可能
- Lookup CHOP — 別 CHOP をインデックスとして値を引く。Index Control 用途と類似
- Stretch CHOP — サンプル数を変えずに開始・終了時刻のみ伸縮(純粋なタイムストレッチ)
組み合わせ推奨OP 🔄
- Speed CHOP — Rate Control の前段で Warp Curve を積分し、Index Control 等価の挙動に変換
- Audio Oscillator CHOP — 周期波形を Warp Curve として供給し、揺らぎのある再生レートを生成
- LFO CHOP — 低周波変調を Warp Curve に供給し、緩急のあるタイミング演出
- Pattern CHOP — 明示的なタイミングカーブを生成して Warp Curve として供給
- Math CHOP — Warp Curve に Range 変換やスケーリングを適用して挙動を整える
前処理・後処理CHOP 🎯
- 前処理: Keyframe CHOP、Pattern CHOP、Wave CHOP、LFO CHOP、Math CHOP
- 後処理: Filter CHOP、Lag CHOP、Resample CHOP、Null CHOP、Trail CHOP
Info CHOP情報 📊
Warp 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: Warp Curve を変えても出力が変化しない
✅ Solution:
- Pre-Warp Channels がタイムスライス済みになっていないか確認(Warp CHOP は通常、非タイムスライス済みチャンネルで動作)
- 前段に Null CHOP を挟み、Time Slice を明示的にオフにして信号を整える
- Method が Rate Control の場合、Warp Curve が定数 1 だと出力 = Pre-Warp と等価になる(変化させたければ 1 以外の値を流す)
❌ Problem: 出力の start-end 区間が想定と違う
✅ Solution:
- 公式仕様: 出力の start-end は Warp Curve(第 2 入力)に従う。Pre-Warp Channels の区間ではない
- Warp Curve 側の length / start を Trim CHOP や Stretch CHOP で先に整える
- Sample Rate Match を確認し、両入力のサンプルレート不一致による意図しない resample を回避
❌ Problem: アニメーションがカクついて滑らかにならない
✅ Solution:
- Warp Curve に高周波ノイズが混入していないか確認、前段に Filter CHOP でスムージングを追加
- Stretch Indices to Channel Length をオフにし、Warp Curve の絶対値で動かしたいときは値域を Math CHOP の Range 変換で先に整える
- Index Control では Warp Curve の値が逆行・急変すると線形補間でジャンプが発生する。連続単調な Warp Curve を入力する
❌ Problem: 逆再生(Rate < 0)で挙動が予期しない
✅ Solution:
- Rate Control で Warp Curve が負の領域に入ると進行が逆向きになるが、累積位置が Pre-Warp Channels の範囲外に出ると無音/値ホールドになる場合がある
- Stretch Indices to Channel Length をオンにして Warp Curve の min/max を Pre-Warp の端点に対応付けると、範囲外参照が起きにくい
- Speed CHOP を先に挟んで累積を可視化し、想定する Warp Curve 範囲を Math CHOP で clamp する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

