
概要 📖 – 低周波オシレータによる周期的制御信号生成
LFO CHOPは、Sine / Triangle / Ramp / Square / Gaussian の 5 波形を周期的に生成し、アニメーションやモーション制御の周期信号源となる CHOPです。Frequency・Amplitude・Phase の 3 軸で波形を制御し、Bias による Triangle / Square のシェイプ調整、Reset Condition による外部トリガー同期まで 1 オペレータで完結します。
主な用途 🎯
- 周期的制御信号の生成(Sine / Triangle / Ramp / Square / Gaussian の 5 波形)
- アニメーションやモーション制御へのリズミカルな揺らぎ付与
- Frequency / Amplitude / Offset / Phase による波形パラメータ調整
- Bias による Triangle / Gaussian / Square 波形のシェイプ整形
- Reset / Reset Condition による外部トリガー同期と波形リスタート
データフロー 🔄
入力: Octave Control / Reset 入力
↓
波形タイプ(Type)選択
↓
Frequency / Phase / Bias による形状制御
↓
Amplitude × 値 + Offset で振幅・直流成分付与
↓
Reset Condition による位相リセット
↓
出力: 周期的チャンネル波形
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
LFO Page 📋
Type .wavetype 🎛️
繰り返し再生する波形の種類を選択するメニュー(Source Wave 入力で上書きされない場合)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Sine | .sin |
サイン波(-1 〜 1) |
| Gaussian | .normal |
ガウス曲線(ベルカーブ・正規分布カーブ、0 〜 1) |
| Triangle | .tri |
三角波(-1 〜 1)。Bias でピーク位置を移動可能 |
| Ramp | .ramp |
ランプ波(0 〜 1 へ立ち上がる鋸状波) |
| Square | .square |
矩形波(-1 〜 1)。Bias で立ち上がり / 立ち下がりの幅を制御 |
波形パラメータ 〰️
Play .play ▶️
– 1 で発振(再生)、0 で停止(一時停止)
– 再生 / 停止のトグルとして機能
Frequency .frequency 📡
– 1 秒あたりのサイクル数(Hz)
– Octave Control 入力が接続されているとき指数的に周波数が変化
Offset .offset ➕
– 出力値に加算される直流成分(DC オフセット)
– 波形の中心位置をシフトしたいときに使用
Amplitude .amp 🔊
– 出力値全体に掛ける振幅スケール
– 信号の強度を線形にスケーリング
Bias .bias ⚖️
– Triangle / Gaussian / Square 波形のシェイプ制御
– Triangle ではピーク位置を移動、Square では矩形のデューティ比を変化、0 で対称
Phase .phase 🔃
– 波形の位相シフト量
– 0.5 で 180 度(半周期)、1.0 で 360 度(1 周期)のシフト
Reset Condition .resetcondition 🔁
Reset 入力がチャンネルのリセットをどのタイミングで発火するかを決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off to On | .offtoon |
Reset 入力が Off → On に変わった瞬間にリセット |
| While On | .on |
Reset 入力が On の間リセット値を保持し続ける |
| On to Off | .ontooff |
Reset 入力が On → Off に変わった瞬間にリセット |
| While Off | .off |
Reset 入力が Off の間リセット値を保持し続ける |
リセット制御 ⏹️
Reset .reset 🔁
– On の間チャンネルを 0 にリセット
– 波形を頭出しして外部信号と同期したいときに使用
Reset Pulse .resetpulse ⚡
– 一度押すと瞬時にチャンネルを 0 にリセット
– パルス的な再スタートトリガー用ボタン
Channel Page 🎚️
チャンネル定義 🎚️
Channel Name .channelname 🏷️
– 出力チャンネルの名前リスト
– chan[1-10] のようなパターンで複数チャンネルを一括生成(Pattern Expansion)
– $C 変数を Frequency 等のパラメータに埋め込めばチャンネル毎に異なる波形を生成可能
Sample Rate .rate ⏱️
– CHOP のサンプルレート(フレーム毎秒)
– デフォルトは 60 サンプル / 秒
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 CHOP (Type=Sine) → Math CHOP (Range mapping) → Geometry COMP の Translate Y
- LFO CHOP の Type を「Sine」、Frequency を 0.5 Hz に設定
- Math CHOP で From Range [-1, 1]、To Range [0, 2] に変換
- 出力を Geometry COMP の Translate Y にエクスポート
- オブジェクトが 2 秒周期で滑らかに上下動するアニメーションが完成
Example 2: Square 波で矩形のオン・オフ制御 ⏯️
LFO CHOP (Type=Square) → Logic CHOP → Light Switch
- LFO CHOP の Type を「Square」、Frequency を 1 Hz に設定
- Bias を 0.3 に変更しデューティ比を非対称化
- 後段の Logic CHOP で 0.5 を閾値にしてオン・オフ判定
- 1 秒周期で点滅するライトコントロール信号として活用
Example 3: 外部トリガーによる波形リスタート 🎯
Trigger CHOP → LFO CHOP (Reset 入力) → Output
- LFO CHOP の Reset Condition を「Off to On」に設定
- 外部トリガー信号を LFO CHOP の Reset 入力に接続
- トリガー発火タイミングで波形が頭出し(位相リセット)される
- 演奏イベントやインタラクションに同期した周期波形を実現
関連オペレータ 🔗
類似機能OP 🔍
- Wave CHOP — 波形生成全般、より柔軟な波形指定(Source Wave 入力対応)
- Pattern CHOP — 数式や関数で任意のパターン波形を生成
- Noise CHOP — 周期的ではない不規則な揺らぎ波形を生成
組み合わせ推奨OP 🔄
- Math CHOP — LFO 出力を後段で正規化・スケーリング
- Logic CHOP — LFO 値を閾値判定してデジタル信号化
- Filter CHOP — LFO 出力を後段でスムージング
- Trigger CHOP — Reset 入力源として LFO 位相リセットに接続
- CHOP to TOP — 周期波形を GPU シェーダ uniform に渡してビジュアル変調
前処理・後処理CHOP 🎯
Info CHOP情報 📊
LFO 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:
Playパラメータが 1 になっているか確認(0 だと一時停止)Amplitudeが 0 になっていないか確認Frequencyが極端に小さい(0.001 Hz など)と 1 周期分が長すぎて静止して見える
❌ Problem: Bias を変えても波形が変化しない
✅ Solution:
Biasは Triangle / Gaussian / Square のみ有効。Sine / Ramp では無効- Type を Triangle / Square に切り替えて再確認
- Bias = 0 が対称、±1 に近づくほど非対称化
❌ Problem: Reset 入力が反映されない
✅ Solution:
Reset Conditionが外部トリガー信号の挙動と合っているか確認(Off to On / While On 等)- Reset 入力に接続している CHOP の値が 0/1 で切り替わっているか Logic CHOP 等で整形
- Reset Pulse ボタンで手動リセットができるかまず確認
❌ Problem: 複数チャンネルで全部同じ波形が出てしまう
✅ Solution:
Channel Nameにchan[1-10]等のパターンでチャンネルを生成しただけでは同位相$C変数をPhaseやFrequencyパラメータに埋め込みチャンネル毎に変化させる(例:$C * 0.1)- 個別の Phase を変えるには複数の LFO CHOP を並列配置して Math CHOP でマージ
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

