
概要 📖 – 固定値チャンネルの生成と複合制御
Constant CHOPは、ユーザが指定した名前と値のペアから固定値チャンネルを生成する CHOPです。1 つの OP で最大 40 チャンネルを保持でき、Single Sample / 区間サンプルの両モードに対応します。
主な用途 🎯
- 任意の名前と値を持つ固定チャンネルの生成(最大 40 ch)
- 他オペレータのテスト・初期化用ダミー値の供給
- Mult-Add / Range 等の演算 CHOP に与える定数オフセットの提供
- Snapshot Input による既存 CHOP からの瞬時値スナップ
- Active 入力による外部デバイス(MIDI / キーボード)からの加算的制御
データフロー 🔄
入力(任意): 外部入力(MIDI / キーボード等)
↓
Constant CHOP(固定値テーブル)
↓
Single Sample / 区間サンプル生成
↓
Extend 条件適用
↓
出力: 固定値チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Constant Page 🎚️
Constant パラメータ 🔢
Constant .const 🎛️
– チャンネルを定義する名前と値のペアのシーケンス
– 最大 40 チャンネルまで保持可能
Name .const0name 🔤
– 各チャンネルの名前
– 後段で Scope や Export で参照する識別子になる
Value .const0value 🔢
– 該当チャンネルの値(浮動小数)
– パラメータ式や他 OP からの参照も可能
Snap Page 📸
Snapshot Input .snap 📸
Snapshot Input ボタン押下時に第 1 入力 CHOP の現在値で固定スライダを初期化:
- Snapshot Input ボタン: 押下した瞬間の入力 CHOP のチャンネル名と値で固定スライダを初期化
- スクリプトからの実行:
op('constant1').par.snap.pulse()で同等のスナップを起動可能 - Parameter CHOP との併用: 他 OP のパラメータをスナップしたい場合は Parameter CHOP を経由して接続
First Channel .first 🎯
40 ch を超える入力を分割するための先頭チャンネル選択:
- First Channel インデックス: 入力チャンネルが 40 を超えるとき、Constant CHOP に取り込む先頭チャンネルの番号
- 複数 Constant CHOP への分割: 1 OP につき 40 ch までのため、超過分は別 Constant CHOP を並べて First Channel を変えて受け持つ
Active Needs Current .current ⚡
Active 入力の有効化条件:
- オン: Constant CHOP がカレント CHOP のときだけ Active 入力が反映される
- オフ: Active 入力が 0 より大きい間は常に反映される
- 用途: Channel Editor のキーフレーム編集で、複数 Constant CHOP に同じ入力デバイスを供給しつつカレントのみを変化させる
Channel Page 📊
Single Sample .single 1️⃣
出力チャンネル長の切替:
- オン(既定): 出力は 1 サンプル長の固定値チャンネル
- オフ: Start / End / Sample Rate で指定した区間サンプル長のチャンネルになる
区間サンプルパラメータ 📏
Start .start ▶️
– 区間の開始位置(Common Page の Units で指定: Samples / Frames / Seconds)
– 例: 100 サンプル長にしたい場合、Single Sample オフ・Start=0・End=99
Start Unit .startunit 📐
– Start パラメータの単位(Samples / Frames / Seconds)
– Common Page の Units とは独立に Start 専用に指定可能
End .end ⏹️
– 区間の終了位置(Start と同じ Units 表現)
– 区間内のサンプル数は (End – Start + 1) で決定する
End Unit .endunit 📐
– End パラメータの単位
– Start Unit と独立に指定可能
Sample Rate .rate 🎚️
– 出力チャンネルのサンプルレート(samples per second)
– Single Sample オフ時の区間サンプリングに使用
Extend Left .left ⬅️
区間より前の左側拡張条件:
- Hold: 区間端の値をそのまま延長
- Slope: 区間端の傾きを保ったまま外挿
- Cycle: 区間を周期的に繰り返す
- Mirror: 区間を反転して繰り返す
- Default Value: Default Value パラメータで指定した値を返す
Extend Right .right ➡️
区間より後の右側拡張条件:
- Hold: 区間端の値をそのまま延長
- Slope: 区間端の傾きを保ったまま外挿
- Cycle: 区間を周期的に繰り返す
- Mirror: 区間を反転して繰り返す
- Default Value: Default Value パラメータで指定した値を返す
Default Value .defval 🔁
Extend が Default Value のときに使う既定値:
- Default Value: Extend 条件が「Default Value」のときに返される一定値
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: 他 CHOP のテスト用ダミー入力 🧪
Constant CHOP(x=0.5, y=0.3, z=1.0)→ 検証対象 CHOP → 出力確認
- Constant CHOP に名前付きチャンネル(x / y / z)と値を入力
- 検証対象の CHOP(Math CHOP / Filter CHOP 等)に接続
- 想定値が安定して入る状態で挙動を観察
- 後で実センサーに差し替えるときの基準にする
Example 2: Math CHOP の Pre/Post-Add にオフセット供給 ➕
Constant CHOP → Math CHOP(Pre-Add 参照)→ 補正済み出力
- Constant CHOP に offset チャンネル(例: 値 0.1)を作成
- Math CHOP の Pre-Add パラメータに
op('constant1')['offset']で参照を貼る - Constant CHOP の値を 1 箇所変えるだけで全 Math CHOP のオフセットが更新される
- プロジェクト内の調整パラメータを集中管理する設計にできる
Example 3: Snapshot Input で現在値を瞬時に固定化 📸
実行中の CHOP → Parameter CHOP → Constant CHOP(Snapshot)→ 固定状態保持
- 保存したい CHOP を Parameter CHOP 経由で Constant CHOP の第 1 入力に接続
- 現在のフレームで Snapshot Input ボタンを押下
- そのフレームの名前と値が Constant CHOP の固定スライダに転写される
- 以降は元 CHOP の変動と切り離して固定値として扱える
関連オペレータ 🔗
類似機能OP 🔍
- Pattern CHOP — 周期的な波形パターンを生成(固定値ではなく時間変化する値の供給)
- Noise CHOP — ランダム値を生成(固定値ではなく揺らぎを与えたい場合)
組み合わせ推奨OP 🔄
- Math CHOP — Constant の値を Pre-Add / Post-Add のオフセットとして供給
- Logic CHOP — Constant の閾値と入力 CHOP を比較して判定
- Switch CHOP — Constant CHOP を切替先として使用
- Parameter CHOP — Snapshot Input で他 OP のパラメータをスナップする際の前段
- Trigger CHOP — Constant の値でエンベロープのレベルを定義
前処理・後処理CHOP 🎯
- 前処理: Parameter CHOP、Keyboard In CHOP、MIDI In CHOP
- 後処理: Math CHOP、Logic CHOP、Switch CHOP、Trigger CHOP
Info CHOP情報 📊
Constant 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: 40 チャンネルを超える入力をスナップしたい
✅ Solution:
- 1 つの Constant CHOP は最大 40 チャンネルまでのため、超過分は別 Constant CHOP に First Channel をずらして受け持たせる
- 後段で Math CHOP や Merge CHOP で複数の Constant CHOP を結合して扱う
❌ Problem: Single Sample をオフにしたが、想定したサンプル数にならない
✅ Solution:
- Start / End の Units を Common Page で確認(Samples / Frames / Seconds で意味が変わる)
- (End – Start + 1) がサンプル数になる、例: 100 サンプル長は Start=0 / End=99
- Start Unit / End Unit が独立指定されていないか確認
❌ Problem: Active 入力が想定通り効かない
✅ Solution:
- Active Needs Current がオンの場合、Constant CHOP がカレント CHOP のときしか反映されない
- Active 入力の値が 0 以下になっていないか確認(オフ時は 0 より大きい必要あり)
- 複数 Constant CHOP に同じ Active を供給するときは、どれをカレントとして使うか設計を整理
❌ Problem: 区間外の値が想定外に変動・反復する
✅ Solution:
- Extend Left / Extend Right の選択(Hold / Slope / Cycle / Mirror / Default Value)で挙動が変わる
- 一定値を返したい場合は Extend を Default Value に変更し、Default Value パラメータを設定
- Slope は端の傾きを延長するため、定数値が欲しい場合は Hold を選ぶ
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

