
概要 📖 – ノイズ生成と時系列モジュレーション
Noise CHOPは、シードと周期から滑らかで自然な不規則波形を生成し、アニメーションやモーション制御に揺らぎを与える CHOPです。ノイズ関数(Type)を切り替えるだけで Random・Perlin・Simplex 等の異なる質感の波形を得られ、Harmonics・Roughness によるディテール調整、Constraint による始点終点固定まで 1 オペレータで完結します。
主な用途 🎯
- 時系列ノイズ波形の生成(Random / Alligator / Sparse / Hermite / Harmonic Summation / Perlin / Simplex)
- アニメーションやモーション制御へのオーガニックな揺らぎ付与
- 周期(Period)と高調波(Harmonics)による自然な不規則変動の制御
- Time Slice モードでのリアルタイム連続ノイズ供給
- Constraint による始点・終点・平均値の固定(Time Slice オフ時のループ素材生成)
データフロー 🔄
入力: シード値(Seed)+ 周期(Period)
↓
ノイズ関数(Type)による波形生成
↓
高調波合成(Harmonics / Roughness)
↓
Exponent / Amplitude による整形
↓
Transform(移動・回転・スケール)
↓
Constraint による値域固定
↓
出力: チャンネル波形
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Noise Page 🌊
Type .type 🎛️
ノイズ生成に使用する関数を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Random | .random |
完全なランダム値(周期=0 で純粋ホワイトノイズ) |
| Alligator | .alligator |
鋸状の不規則な波形 |
| Sparse | .sparse |
Perlin と類似の連続的ノイズ(常に正規化済み) |
| Hermite | .hermite |
エルミート補間による滑らかなノイズ(常に正規化済み) |
| Harmonic Summation | .harmonic |
基本周波数に複数の高調波を重畳した古典的フラクタルノイズ |
| Perlin (2D) | .perlin |
Ken Perlin による定番の連続的ノイズ |
| Simplex (2D) | .simplex |
Perlin の改良版で計算効率と等方性に優れる |
波形パラメータ 〰️
Seed .seed 🌱
– 乱数生成器の起点となる任意の数値(整数・非整数いずれも可)
– 値が異なれば全く違うパターンを得られるが、ノイズ全体の特性は同等
Period .period 📐
– ノイズ波形のピーク間隔(Unit 指定)
– 周期を大きくするとノイズが間延びし、Type=Random で 0 にすると純粋ランダム化
Period Unit .periodunit 📏
– Period の単位を Samples / Frames / Seconds / Fraction から選択
Harmonics .harmon 🎼
– 基本周波数に重ねる高調波の数
– 値を増やすほどノイズが粗く(バンピーに)なる(Roughness が 0 でない場合)
Harmonic Spread .spread 🌀
– 高調波の周波数倍率(通常は 2)
– Type=Harmonic Summation 時のみ有効
Roughness .rough 🪨
– 高調波の振幅減衰係数(0 で高調波無効、1 で基本周波数と同振幅)
– デフォルト 0.5 で各高調波が 0.5・0.25・0.125 と指数減衰
Exponent .exp 📈
– 値を 0 へ寄せる(>1)か ±1 へ寄せる(<1)べき乗整形
– チャンネル形状を再シェーピングする用途
Num of Integrals .numint ∫
– ブラウン運動的ノイズの積分回数(Random タイプのみ有効)
– 値が大きいほど特徴の少ない滑らかな曲線になる(4 以上はほぼ同等)
Amplitude .amp 🔊
– 出力値全体に掛ける振幅スケール
Reset .reset 🔁
– Time Slice オン時のみ有効
– トグルでノイズ計算をリセットし、解除するまで値を保持
Reset Pulse .resetpulse ⚡
– Time Slice オン時のみ有効
– パルスでノイズ計算をリセット
Transform Page 🔄
Transform Order .xord 🔢
Translate (T) / Rotate (R) / Scale (S) を適用する順序を選ぶメニュー。順序を変えると最終位置・姿勢が変わる。表示名は「適用順 (左から先)」、行列式は列ベクトル規約 (column vector convention) — 先に適用するものが式の最右、後に適用するものが左に来る。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Scale Rotate Translate | .srt |
T * R * S * Position |
| Scale Translate Rotate | .str |
R * T * S * Position |
| Rotate Scale Translate | .rst |
T * S * R * Position |
| Rotate Translate Scale | .rts |
S * T * R * Position |
| Translate Scale Rotate | .tsr |
R * S * T * Position |
| Translate Rotate Scale | .trs |
S * R * T * Position |
Rotate Order .rord 🔃
X / Y / Z 軸の回転を適用する順序を選ぶメニュー。Transform Order と同じ規約で、表示名が左から先に適用される軸、行列式は列ベクトル規約 (後から適用する回転ほど左)。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rx Ry Rz | .xyz |
R = Rz * Ry * Rx |
| Rx Rz Ry | .xzy |
R = Ry * Rz * Rx |
| Ry Rx Rz | .yxz |
R = Rz * Rx * Ry |
| Ry Rz Rx | .yzx |
R = Rx * Rz * Ry |
| Rz Rx Ry | .zxy |
R = Ry * Rx * Rz |
| Rz Ry Rx | .zyx |
R = Rx * Ry * Rz |
Transform 値 📐
Translate .t 📍
– XYZ の平行移動値
Rotate .r 🔄
– XYZ の回転値(度数)
Scale .s 📏
– XYZ の拡大縮小スケール
Pivot .p 🎯
– 上記変換を適用する基準点(XYZ)
Constraints Page 🔒
Constraint .constraint 🎚️
ノイズ曲線の始点・終点・平均値を選択値に固定する制約モード(Time Slice オフ時のみ有効)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
制約なし |
| Start | .start |
始点の値を固定 |
| End | .end |
終点の値を固定 |
| Start and End | .startend |
始点と終点の両方を固定(ループ波形生成に有効) |
| Mean | .mean |
平均値を指定値に固定 |
Constraint 値 🎯
Starting Value .constrstart 🏁
– 始点に固定する値
Ending Value .constrend 🚩
– 終点に固定する値
Mean Value .constrmean 📊
– ノイズの平均値として固定する値
Normalize .normal 📐
– すべてのノイズ曲線を -1〜1 に正規化(Amplitude 適用前)
– Random / Harmonic Summation でのみ有効(Hermite / Sparse は常に正規化済み)
Channel Page 📡
Channel Names .channelname 🏷️
チャンネル名生成パターン:
- Channel Names:
chan[1-20]のようなパターンで複数チャンネルを生成(各チャンネルに固有シードが割り当てられる)
区間設定 ⏳
Start .start ⏮️
– 区間の開始位置(Unit 指定)
Start Unit .startunit 📏
– Start の単位を Samples / Frames / Seconds から選択
End .end ⏭️
– 区間の終了位置(Unit 指定)
End Unit .endunit 📏
– End の単位を Samples / Frames / Seconds から選択
Sample Rate .rate ⚡
– チャンネルのサンプルレート(samples/sec)
– デフォルトは me.time.rate
Extend Conditions .extend ↔️
区間の前後(範囲外)でチャンネルがどう振る舞うかの設定
Extend Left .left ⬅️
– 区間の左側(範囲前)の Extend 条件
Extend Right .right ➡️
– 区間の右側(範囲後)の Extend 条件
Default Value .defval 🔢
– Default Value Extend 条件で使用される値
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: ライトの自然な揺らぎ 💡
Noise CHOP (Type: Perlin) → Math CHOP (Range mapping) → Light Intensity
- Noise CHOP の Type を「Perlin」に設定し、Period を 2 秒程度に
- Math CHOP の From Range [-1, 1]、To Range [0.7, 1.0] でランプ強度の範囲にマッピング
- 出力をライトの強度パラメータに Export
- ろうそくのような自然な明滅が得られる
Example 2: オブジェクトのオーガニック移動 🌿
Noise CHOP (3 channels: tx, ty, tz) → Geometry COMP の Transform
- Noise CHOP の Channel Names を「t[xyz]」に設定して 3 チャンネル生成
- Type を「Simplex」、Amplitude を移動量に応じて調整
- Geometry COMP の Translate に各チャンネルを Export
- オブジェクトが浮遊するような有機的な動きを描く
Example 3: ループ可能な背景アニメーション 🔁
Noise CHOP (Time Slice Off, Constraint: Start and End) → Resample CHOP → 出力
- Noise CHOP の Time Slice をオフにし、Start / End で 1 ループ分の長さを定義
- Constraint を「Start and End」に設定し、Starting Value = Ending Value で揃える
- 後段の Resample CHOP で長さを再生フレーム数にリサンプル
- 始点と終点が一致するシームレスなループ素材が得られる
Example 4: ジェネラティブな数値スウォーム 🐝
Noise CHOP (Channel Names: chan[1-50]) → Math CHOP → Instance パラメータ
- Channel Names に「chan[1-50]」を設定し 50 個の独立ノイズを生成(各チャンネル固有シード)
- Math CHOP で値域を Instance の位置範囲にマッピング
- Geometry COMP の Instancing パラメータに割り当て
- 50 個のインスタンスが各々独立に揺らぐスウォーム表現が完成
関連オペレータ 🔗
類似機能OP 🔍
- Pattern CHOP — サイン波・ランプ・矩形波等の決定論的波形を生成(ノイズではなく規則的)
- Constant CHOP — 固定値を出力(揺らぎなしの基準値ソース)
- LFO CHOP — 周期的な低周波振動を生成(ノイズの代わりに規則的な変調が必要なとき)
組み合わせ推奨OP 🔄
- Math CHOP — ノイズ出力の値域変換・スケーリングに最適
- Filter CHOP — ノイズの後段で更に時間方向のスムージング
- Lag CHOP — ノイズに遅延応答を加えて慣性的な動きを表現
- Resample CHOP — Time Slice オフ Noise の長さ・サンプルレート調整
- Trigger CHOP — ノイズ波形をエンベロープのアタック・リリース起動信号に活用
- Logic CHOP — ノイズに閾値を設けてランダムなトリガを生成
- CHOP to TOP — ノイズ波形を GPU シェーダ uniform に渡してビジュアルに反映
前処理・後処理CHOP 🎯
- 前処理: Constant CHOP、Pattern CHOP、LFO CHOP、Timer CHOP
- 後処理: Math CHOP、Filter CHOP、Lag CHOP、Limit CHOP、Resample CHOP
Info CHOP情報 📊
Noise 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:
- Type を「Perlin」「Simplex」「Hermite」等の連続的タイプに変更すると滑らかに、「Random」「Alligator」で粗くなる
- Period を大きくすると間延びして滑らかに、小さくすると細かい振動に
- Harmonics と Roughness の両方が非ゼロのときだけ高調波の効果が現れる(片方が 0 だと単純な基本周波数のみ)
❌ Problem: Time Slice オン時にノイズがリセットされない
✅ Solution:
- Time Slice オン時は Constraint や Reset 系のパラメータが特殊な扱いになる
- Reset / Reset Pulse パラメータでノイズ計算を明示的にリセットする
- Time Slice オフ時のみ Constraint(Start / End / Mean)が機能するため、ループ素材は Time Slice オフで生成する
❌ Problem: シードを変えてもノイズパターンが変わらない
✅ Solution:
- Seed パラメータの変更後、Noise CHOP がクックされているか確認(一部のタイプは Cook が走らないと再評価されない)
- 後段で Math CHOP 等が値域を固定していないか確認
- 複数チャンネル時は Channel Names のパターンに応じて各チャンネルに固有シードが割り当てられるため、全体の Seed は基準値として作用する
❌ Problem: 値域が想定外(-1〜1 を超える / 中央値がずれる)
✅ Solution:
- Normalize をオンにすると -1〜1 に正規化される(Random / Harmonic Summation のみ有効)
- Hermite / Sparse は常に正規化済みのため Normalize は無効
- Amplitude は Normalize の後に適用されるため、最終値域は Amplitude 倍になる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

