
概要 📖 – 波形生成と周期信号
Wave CHOPは、Type で選んだ波形(Sine / Triangle / Square / Ramp / Gaussian / Constant)を Period 周期で繰り返し生成し、サンプル列として出力する CHOPです。Bias / Amplitude / Offset / Decay Rate / Ramp Slope による形状・振幅制御に加え、Extend Left / Extend Right で interval 外の振る舞いも 1 オペレータで完結します。
主な用途 🎯
- 周期的な波形信号(サイン波・三角波・矩形波・ランプ波 等)の生成
- アニメーション制御用の LFO(Low Frequency Oscillator)として活用
- オーディオ波形のサンプル生成(テストトーン・シンセサイザー基礎波形)
- Bias / Amplitude / Offset によるパラメトリックな波形整形
- Decay Rate による減衰包絡線(エンベロープ)の付加
データフロー 🔄
Type / Period / Phase 設定
↓
波形生成(サイン・矩形・三角 等)
↓
Bias / Offset / Amplitude による整形
↓
Decay / Ramp Slope による経時変化
↓
出力: 周期サンプル列
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Wave Page 📋
Type .wavetype 🌊
生成する波形の形状を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Constant | .const |
値 1 の定数「波形」(実質的には直流) |
| Sine | .sin |
サイン波(-1 ~ 1 の範囲) |
| Gaussian | .normal |
ガウス曲線(ベルカーブ / 正規分布、0 ~ 1 の範囲) |
| Triangle | .tri |
1 まで上昇し 0 まで下降するランプ。Bias で形状を整形可能(-1 ~ 1 の範囲) |
| Ramp | .ramp |
0 から 1 へ立ち上がるランプ波形 |
| Square | .square |
ステップ状の矩形波。Bias で長方形(パルス幅)を制御可能(-1 ~ 1 の範囲) |
周期・位相パラメータ ⏳
Period .period 🔁
– 波形が 1 回繰り返すまでの長さ。Period Unit で指定した単位(秒 / フレーム / サンプル)で表現
– デフォルト単位は秒(Common Page の Units 設定に従う)
Period Unit .periodunit 📏
– Period パラメータで使う単位を選択(Samples / Frames / Seconds)
Phase .phase 🌗
– 波形を時間方向にシフトする位相量。1 周期分の割合として通常 0 ~ 1 の範囲で指定
形状・振幅パラメータ 📐
Bias .bias ⚖️
– Triangle / Square 等の波形形状を -1 ~ +1 の範囲で変形
– Triangle ではピーク位置、Square ではデューティ比に相当
Offset .offset ↕️
– 波形全体の値を上下にオフセット
– 例: Sine を常に正にしたい場合は Offset を 1 に設定
Amplitude .amp 📊
– 波形の値を倍率でスケール
減衰・ランプパラメータ 📉
Decay Rate .decay 🔻
– 波形の振幅を時間とともに指数関数的に減衰させる係数
– 例: Decay 0.2 で単位が秒の場合、1 秒後に振幅は 0.8 倍、2 秒後にはさらに 0.8 倍(合計 0.64 倍)
Decay Rate Unit .decayunit 📏
– Decay Rate パラメータで使う単位を選択(Samples / Frames / Seconds)
Ramp Slope .ramp ↗️
– 波形に重ねる傾斜の傾き。1 単位時間あたりに値が増加する量
– 例: Ramp Slope 1.2 で単位が秒の場合、波形の値が毎秒 1.2 ずつ増加
Ramp Slope Unit .rampunit 📏
– Ramp Slope パラメータで使う単位を選択(Samples / Frames / Seconds)
Expression .exprs ✍️
– 波形タイプが Expression の場合に評価する数式を入力
– 利用可能なローカル変数: $I(インデックス), $L(0 ~ 1 の周期内ループ変数), $C(現在のインデックスまでに通過した周期数)
Channel Page 🎚️
チャンネル定義 🏷️
Channel Names .channelname 🏷️
– 生成するチャンネル名を指定。chan[1-20] のようなパターンで複数チャンネル(chan1 ~ chan20)を一括生成可能
Sample Rate .rate ⏱️
– 出力チャンネルのサンプルレート(samples per second)
インターバル設定 📐
Start .start ▶️
– インターバルの開始位置。Start Unit で指定した単位(秒 / フレーム / サンプル)で表現
Start Unit .startunit 📏
– Start パラメータで使う単位を選択(Samples / Frames / Seconds)
End .end ⏹️
– インターバルの終了位置。End Unit で指定した単位(秒 / フレーム / サンプル)で表現
End Unit .endunit 📏
– End パラメータで使う単位を選択(Samples / Frames / Seconds)
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 / Extend 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 によるアニメーション制御 🌊
Wave CHOP (Sine, Period 2s) → Math CHOP (Range 変換) → Geometry COMP の Rotate
- Wave CHOP の Type を
Sineに設定し Period を 2 秒に - Math CHOP で -1〜1 の出力を 0〜360 度の範囲に変換
- Geometry COMP の Rotate Y パラメータに Export して周期的な回転アニメーションを生成
Example 2: 減衰エンベロープの生成 📉
Wave CHOP (Sine + Decay Rate) → Audio Filter → Audio Device Out
- Wave CHOP の Type を
Sineにし Period を短く(例: 0.01 秒 = 100Hz)に設定 - Decay Rate を正の値にして振幅を時間とともに指数減衰
- 結果をオーディオ信号として出力すると、減衰するシンセトーンが得られる
Example 3: 矩形波によるトリガー信号 🔲
Wave CHOP (Square, Bias) → Logic CHOP → イベントトリガー
- Type を
Squareに設定し Bias でデューティ比を調整 - Logic CHOP で閾値判定し ON/OFF のトリガー信号に変換
- 周期的に発火するイベント(点灯・サンプル再生 等)を駆動
Example 4: 複数チャンネル波形の一括生成 🎚️
Wave CHOP (Channel Names: chan[1-8]) → Math CHOP (位相シフト) → 出力
- Channel Names に
chan[1-8]を設定して 8 本のチャンネルを生成 - 後段の Math CHOP やリファレンスで位相をずらして多相波形を構築
- LED マトリクス制御・マルチチャンネル LFO 等に活用
関連オペレータ 🔗
類似機能OP 🔍
- Constant CHOP — 固定値チャンネルの生成(周期を持たない場合)
- LFO CHOP — 低周波オシレータ。位相連続性と Time Slice 対応に特化
- Pattern CHOP — より複雑な数学的パターン(指数・ガウシアン・ハミング窓 等)の生成
- Noise CHOP — ノイズベースの非周期信号を生成
組み合わせ推奨OP 🔄
- Math CHOP — Wave 出力を後段で正規化・スケーリング・値域変換
- Filter CHOP — 波形をスムージングしてエッジを丸める
- Logic CHOP — Wave 出力に閾値判定をかけて ON/OFF 信号に変換
- Trigger CHOP — 波形ピークでエンベロープ(ADSR)を起動
- Audio Device Out CHOP — 波形を音声出力としてスピーカーに送出
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Wave 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: 波形が出力されない / すべて 0 になる
✅ Solution:
Amplitudeが 0 になっていないか確認StartとEndの範囲が反転していないか確認(End > Start が必要)Sample Rateが 0 や極端に低い値になっていないか確認
❌ Problem: 波形の周期が想定と違う
✅ Solution:
PeriodとPeriod Unitの組み合わせを確認(秒 / フレーム / サンプル)- Common Page の Time Slice 設定がデータ特性に合っているか確認
- 後段で Math CHOP を入れて時間スケールが変更されていないか確認
❌ Problem: 波形がインターバル外で意図通りに繰り返さない
✅ Solution:
Extend Left/Extend RightをCycleに設定して繰り返しを有効化- ミラー反転したい場合は
Mirror、定数値で埋めたい場合はDefault Value+Default Valueパラメータを使用 - 現状の挙動をリセットしたい場合は両端を
Holdに戻す
❌ Problem: Decay Rate / Ramp Slope の効果が出ない
✅ Solution:
Decay Rate Unit/Ramp Slope Unitが想定と合っているか確認(Samples / Frames / Seconds)Decay Rateが 0 だと減衰しない(小さな正の値から試す)- 後段で Filter CHOP 等で波形が再度平滑化されていないか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

