
概要 📖 – 波形パターンの生成とチャンネル合成
Pattern CHOPは、Sine / Triangle / Ramp / Square / Random など 11 種類の波形パターンを任意の長さ・サイクル数で生成する CHOPです。Phase Step per Channel による複数チャンネルの位相ずらしや、入力 CHOP との Combine 合成、From Range / To Range による値域変換まで 1 オペレータで完結します。
主な用途 🎯
- 11 種類の波形パターン生成 (Constant / Sine / Cosine / Triangle / Ramp / Square / Random / Step / Cyclic Ramp 等)
- サンプル長 (Length) とサイクル数 (Number of Cycles) による任意の解像度・周期の波形構築
- Phase / Phase Step per Channel による複数チャンネルの位相ずらし (円描画・LFO 群生成等)
- Amplitude / Offset / Taper による振幅・直流オフセット・線形減衰の付与
- 入力 CHOP との Combine (Append / Insert / Replace / Add / Multiply) による既存チャンネルへの合成
データフロー 🔄
入力: (任意) 既存 CHOP
↓
Type で波形選択
↓
Length / Number of Cycles で周期構築
↓
Bias / Taper / Phase で形状制御
↓
Amplitude × 値 + Offset で振幅・直流付与
↓
From Range / To Range で値域変換
↓
Integer / Reverse で後処理
↓
Combine Channels で入力 CHOP と合成
↓
出力: 周期的チャンネル波形
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Pattern Page 📋
Type .wavetype 🎛️
1 サイクル分の波形の形状を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Constant | .const |
定数 1 (全サンプルが 1) |
| Sine | .sin |
サイン波 (-1 〜 1) |
| Cosine | .cos |
コサイン波 (-1 〜 1) |
| Triangle | .tri |
三角波 (-1 〜 1) |
| Ramp | .ramp |
ランプ波 (0 〜 1) |
| Ramp Samples | .rampsamples |
サンプル番号そのものを値とするランプ (0 〜 numSamples-1) |
| Square | .square |
矩形波 (-1 〜 1) |
| Random | .random |
ランダム値 (0 〜 1) |
| Random per Cycle | .randomcycle |
1 サイクル内の全サンプルが同じランダム値を取る |
| Random Non-Repeating Integers | .randomnonrepint |
Randomize パルスごとに、各サンプルが直前と重複しないランダム整数値を生成 |
| Step | .step |
ステップ関数 (0 〜 1) |
| Cyclic Ramp | .rampcyclic |
ランプ波と同じ形 (0 〜 (numSamples-1)/numSamples) だが、位相シフトで値が範囲外に出ない |
サンプル長・サイクル数 📏
Length .length 📐
– 出力する CHOP のサンプル数
– 1 サイクル分の解像度ではなく、波形全体の総サンプル数
Number of Cycles .numcycles 🔁
– Length の中に繰り返される波形のサイクル数
– Random タイプ以外で有効
Step per Cycle .steppercycle 🪜
– 1 サイクル内のステップ位置を指定 (Step 波形時)
Number of Steps .numsteps 🔢
– Step 波形時のステップ数
形状制御 〰️
Bias .bias ⚖️
– Triangle 波形を鋸状波に変形させる
– Square 波形の duty cycle (立ち上がり / 立ち下がりの幅) を可変化
Seed .seed 🌱
– Random 系タイプ使用時の乱数シード値
Phase .phase 🌀
– サイクル全体の位相をシフト
Phase Step per Channel .phasestep 🔀
– チャンネルごとに位相を加算してずらす
– 例: 2 ch で Phase Step = 0.25 にすると 2 ch 目は 1/4 サイクル分遅延、x/y チャンネルとして CHOP to SOP に渡せば円を描画
Taper .taper 📐
– 開始 (taper1) から終了 (taper2) まで線形に掛け合わせる 2 値
– デフォルト (1, 1) では何も起きない
Taper Decay Rate .taperdecay 📉
– Taper の線形結果に対してさらに指数的減衰を掛ける指数値
振幅・オフセット・値域変換 🧮
Amplitude .amp 🔊
– 波形値に乗算するゲイン
– Range とも併用可
Offset .offset ➕
– 波形値に加算する直流オフセット
– Range とも併用可
From Range .fromrange 📥
– 入力側の想定値域 (low, high)
– To Range と組み合わせて値域変換を行う
To Range .torange 📤
– 出力側の目標値域 (low, high)
– From Range の各値が To Range の対応値にマッピングされる
Integer .integer 🔢
出力値を整数化するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
値をそのまま (小数のまま) |
| Ceiling | .ceiling |
切り上げ (次の整数) |
| Floor | .floor |
切り下げ (前の整数) |
| Round | .round |
四捨五入 |
その他 🔄
Reverse .reverse ⏪
– 最終的なサンプル順を反転 (Stretch CHOP の reverse と同等)
Randomize .randomize 🎲
– Type が Random Non-Repeating Integers のとき、このパルスで全サンプル値をランダム化
Channel Page 📁
Channel Names .channelname 🔤
出力チャンネルの名前パターン:
- Channel Names:
chan[1-20]でchan1〜chan20の 20 チャンネル生成、t[xyz]でtx/ty/tzの 3 チャンネル生成等のパターン記述に対応
Combine Channels .combine 🔗
入力 CHOP がある場合のチャンネル結合方法 (Length / Sample Rate は入力から継承)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
入力 CHOP の Length / Sample Rate のみ継承し、新規 Pattern チャンネルは結合しない |
| Append | .append |
Pattern CHOP のチャンネルを入力チャンネルの末尾に追加 |
| Insert | .insert |
Pattern CHOP のチャンネルを入力チャンネルの先頭に挿入 |
| Replace | .replace |
チャンネル名マッチングで入力チャンネルを置換 |
| Add | .add |
チャンネル名マッチングで入力チャンネルに加算 |
| Multiply | .multiply |
チャンネル名マッチングで入力チャンネルに乗算 |
Sample Rate .rate ⚡
出力チャンネルのサンプルレート:
- Sample Rate: 1 秒あたりのサンプル数で指定 (samples per second)
Extend Left .left ⬅️
範囲開始より前の値の扱い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
チャンネル開始時の値を保持 |
| Slope | .slope |
チャンネル開始前の傾きをそのまま継続 |
| Cycle | .cycle |
チャンネルを繰り返しサイクル |
| Mirror | .mirror |
1 サイクルごとに反転してサイクル |
| Default Value | .default |
Default Value パラメータで指定した定数値を使用 |
Extend Right .right ➡️
範囲終了より後の値の扱い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
チャンネル終了時の値を保持 |
| Slope | .slope |
チャンネル終了後の傾きをそのまま継続 |
| Cycle | .cycle |
チャンネルを繰り返しサイクル |
| Mirror | .mirror |
1 サイクルごとに反転してサイクル |
| Default Value | .default |
Default Value パラメータで指定した定数値を使用 |
Default Value .defval 🔧
Default Value モードで使用する定数:
- Default Value: Extend Left / Right の
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: 複数チャンネルで位相をずらした LFO 群を生成 🌀
Pattern CHOP (Type: Sine, Phase Step per Channel: 0.25) → 4 ch の位相ずれ Sine 波 → モーション制御
- Pattern CHOP を作成し、Type を
Sine、Length を 600、Number of Cycles を 1 に設定 - Channel Names に
chan[1-4]を入力して 4 チャンネル生成 - Phase Step per Channel を
0.25に設定すると各チャンネルが 1/4 サイクルずつ位相シフト - 出力を 4 つのオブジェクトの位置パラメータに Export すれば、ずれた周期で揺れる動きが得られる
Example 2: x / y チャンネルで円を描画 (CHOP to SOP) ⭕
Pattern CHOP (Sine, 2 ch, Phase Step 0.25) → CHOP to SOP → 円形ジオメトリ
- Pattern CHOP の Type を
Sine、Channel Names をtx ty、Length を 200 に設定 - Phase Step per Channel を
0.25にすると、txは Sine、tyは Cosine 相当 (1/4 サイクル遅延) になる - 後段に CHOP to SOP を繋いで CHOP サンプルを頂点座標に変換
- 200 頂点の円形ジオメトリが生成される
Example 3: Random per Cycleで段状ランダム値 🎲
Pattern CHOP (Random per Cycle) → Filter CHOP (1-frame Boxcar) → Output
- Pattern CHOP の Type を
Random per Cycleに設定 - Length と Number of Cycles で「何サンプルごとに値が切り替わるか」を制御
- Seed を変更して別パターンを生成、再現性を確保
- 後段の Filter CHOP でスムージングすればクオンタイズされた揺らぎになる
Example 4: 入力CHOPに振幅変調をかける 🔊
Audio Device In CHOP → Pattern CHOP (Sine, Combine: Multiply) → 振幅変調された出力
- Pattern CHOP の入力に Audio Device In CHOP を接続
- Type を
Sine、Frequency に相当するサイクル数 (Number of Cycles) と Length を入力レートに合わせて設定 - Combine Channels を
Multiplyに設定して入力チャンネルと乗算 - 入力音声に低周波サイン波で振幅変調をかけたトレモロ効果が得られる
関連オペレータ 🔗
類似機能OP 🔍
- LFO CHOP — 周期波形生成に特化、Pattern とは異なりリアルタイム時間軸で発振
- Constant CHOP — 固定値出力に特化 (Pattern の Type=Constant と用途が重なる)
- Noise CHOP — パーリンノイズベースの連続的ランダム信号、Pattern の Random タイプより滑らか
組み合わせ推奨OP 🔄
- Math CHOP — Pattern 出力にさらなる演算・値域変換を加える
- Filter CHOP — Pattern の Random / Square 出力をスムージング
- CHOP to SOP — Pattern のチャンネル値を頂点座標に変換 (円・螺旋などの幾何形状生成)
- Merge CHOP — Pattern 出力を他 CHOP と合成
- Stretch CHOP — Pattern のサンプル長を動的に変更
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Pattern 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: 波形のサイクル数が想定と合わない
✅ Solution:
- Length は「全サンプル数」、Number of Cycles は「Length の中に入るサイクル数」であることを確認
- 1 サイクルのサンプル数 = Length ÷ Number of Cycles で算出される
- Random 系タイプでは Number of Cycles が機能しない (毎サンプル新規ランダム値)
❌ Problem: Random 系で毎クック値が変わらない / 変わりすぎる
✅ Solution:
Randomはサンプルごとに乱数、Random per Cycleはサイクル内で同値、Random Non-Repeating Integersは Randomize パルスで切替の挙動差を理解する- 再現性が必要なら Seed を固定値に設定
Random Non-Repeating Integers利用時は Randomize パラメータをパルスとして外部から駆動
❌ Problem: 複数チャンネルが完全に同じ波形になる
✅ Solution:
- Phase Step per Channel が
0のままだと全チャンネルが同位相になる、非ゼロ値を設定 - Phase Step per Channel = 1 / チャンネル数 でチャンネル間を均等分散できる
- Random 系では Seed を 1 チャンネルずつずらすか、別の Pattern CHOP を並列に置く
❌ Problem: 入力 CHOP と Combine したら期待した出力にならない
✅ Solution:
- Combine Channels が
Offの場合、Length と Sample Rate のみ入力から継承し、入力チャンネルは出力に含まれない Replace/Add/Multiplyはチャンネル名マッチングで動作するため、Channel Names が入力と一致しているか確認- サンプルレートが異なる場合、後段に Resample CHOP を挟んで明示的に揃える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

