
概要 📖 – SOP/TOP/CHOP からオシロスコープ・レーザー用制御波形を生成
Scan CHOPは、SOP/TOP/CHOP の幾何・画像・波形をオシロスコープやレーザー投影機用の X/Y(/RGB) 制御波形に変換する CHOPです。出力は可聴帯域内のサンプルとして生成でき、Audio Device Out CHOP を介してオシロスコープやレーザー投影機の X/Y 偏向入力を駆動できます。
※ 注意: Scan CHOP は公式ドキュメントで DEPRECATED(非推奨)と明示されており、新規プロジェクトでは Laser CHOP の使用が推奨されています。
主な用途 🎯
- SOP のジオメトリ頂点を X/Y 制御信号に変換してオシロスコープ・レーザー描画
- TOP のラスター画像を画素位置の X/Y と輝度時間で走査し光線として再現
- CHOP の波形を時間軸でスキャンして任意のグラフを画面に描画
- 音声出力経由のレーザー / オシロ駆動(X/Y/RGB チャンネルを Audio Device Out CHOP に渡す)
- blanking 制御による複数オブジェクト描画(ジオメトリ間・走査間の暗転挿入)
データフロー 🔄
入力: SOP / TOP / CHOP
↓
Source OP メニュー選択
↓
ソース別ページ(解像度・順序・トリガ等)
↓
X/Y 振幅スケール・回転・ランダム化
↓
任意で RGB 出力 + blanking
↓
出力: X,Y,(R,G,B) 制御チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Scan Page 📡
Source OP .source 🎯
どのオペレータファミリを走査対象とするかを決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| TOP | .top |
ラスター画像を走査し、各画素の位置を X/Y 振幅に変換 |
| SOP | .sop |
ジオメトリの各頂点位置を X/Y 振幅に変換 |
| CHOP | .chop |
波形の各グラフを水平・垂直オフセットに変換 |
サンプリングと振幅 🎚️
Sample Rate .rate ⏲️
– 1 秒あたりのサンプル数(出力サンプルレート)
– 可聴帯域でレーザー / オシロ駆動する場合は音声デバイスのレートと整合させる
Swap Output .swap 🔄
– X と Y チャンネル出力を入れ替え
– オシロ・レーザー側の偏向極性が逆のときに使用
X Scale .xscale ↔️
– X 軸の振幅をスケーリング
Y Scale .yscale ↕️
– Y 軸の振幅をスケーリング
Rotate .rotate 🔁
– 出力 X,Y 値を度数指定で回転
– レーザー投影面の向きを補正する用途
Randomize Samples .randomize 🎲
– 全サンプルをランダム順で出力
– オシロスコープ上でファジーでカオティックな画像を生成
カラー出力 🎨
Output Color .color 🟢
– オンにすると r,g,b チャンネルが追加生成
– レーザー投影の RGB モジュレーションや blanking 制御に必須
Red Scale .redscale 🔴
– R チャンネルの出力振幅をスケーリング
Green Scale .greenscale 🟢
– G チャンネルの出力振幅をスケーリング
Blue Scale .bluescale 🔵
– B チャンネルの出力振幅をスケーリング
Blanking Count .blankingcount ⬛
– SOP 入力: ジオメトリプリミティブ間に挿入する黒(オフ)位置数
– TOP 入力: フルラスター走査間に挿入する黒(オフ)位置数
– Color 出力が有効になっている必要あり
TOP Page 🖼️
TOP ソース指定 📍
ラスター画像から制御信号への変換設定。輝度は各サンプルがスコープ上に「描画」される時間で表現されます。
TOP .top 🖼️
– 走査対象となる TOP ノードへのパス
Width .width ↔️
– 画像を再サンプリングする列数
Height .height ↕️
– 画像を再サンプリングする行数
Level .level 💡
– 各画素が持てる明度レベル数
Auto Reduce .limit 📉
– 出力フレームレートを一定に保つよう行数・列数を動的に自動低減
Layered .layered 📚
– オン: 画素を明度順で出力
– オフ: 各行を左から右の順で出力
Interleave .interleave 🔀
ちらつきを最小化するため行の出力順序を制御するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Sweep | .sweep |
上から下へ順番に行を出力 |
| Even Odd | .evenodd |
偶数行 → 奇数行の 2 パスで出力 |
| Max | .max |
完全インターリーブ方式で行を出力(最大ちらつき抑制) |
SOP Page 🔺
SOP ソース指定 📍
SOP の各頂点がフレームバッファ・ステレオ音声サンプルとなり、X が X チャンネル、Y が Y チャンネルに置かれます。出力にはエイリアスのない鋭利なベクトルのみが含まれます。
SOP .sop 🔺
– 走査対象となる SOP ノードへのパス
Vertex Order .vertexorder 🧭
– 点をジオメトリ定義順ではなく、各ポリゴンの頂点順で出力
Limit Step Size .limitstep 🛑
– 長い x,y ジャンプを複数の小ステップに分割
Step Size .stepsize 📐
– Limit Step Size 有効時に許容する 1 ステップ当たりの x,y 変化量
Vertex Repeat .vertexrepeat 🔂
– 各プリミティブの頂点を複数回繰り返して出力(輝度ブースト用途)
Camera .camera 🎥
– このカメラから 2D 平面へジオメトリを投影
– 未指定時はジオメトリの元 X,Y 成分のみが使用される
CHOP Page 🎚️
CHOP ソース指定とトリガ 📍
波形を各グラフの水平・垂直オフセットに変換し元の CHOP 波形を再現します。タイムスライスではなく長さを持つ CHOP(Trail CHOP やアニメ済み Wave CHOP 等)を使用してください。
CHOP .chop 🎚️
– 走査対象となる CHOP ノードへのパス
– タイムスライスではなく一定の長さを持つ波形 CHOP を指定
Trigger .trigger ⚡
– 出力グラフがこの値を超えた箇所から開始
– オシロスコープのトリガースイープと同様に「静止」波形を実現
Trigger Value .triggerval 🎯
– トリガを開始する閾値
Trim .trim ✂️
– スキャン対象とする CHOP の長さを制限
Trim Value .trimval 📏
– スキャンする CHOP の長さ
Trim Units .trimunits 📐
– このパラメータで使用する単位を Samples / Frames / Seconds から選択
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: SOP ジオメトリをオシロスコープに描画 📺
入力 SOP → Scan CHOP (Source=SOP) → Audio Device Out CHOP → オシロスコープ X/Y 入力
ジオメトリの頂点を音声帯域の X/Y 制御信号に変換し、オシロスコープの偏向入力に流してベクター描画を行う基本パターン。
- 描画したい形状の SOP(Circle SOP / Text SOP 等)を用意
- Scan CHOP の Source OP を SOP に設定し、SOP パスを指定
- Sample Rate を音声デバイスの出力レート(48000 等)と整合させる
- X Scale / Y Scale で振幅をオシロスコープのレンジに合わせる
- 出力を Audio Device Out CHOP に接続しオシロスコープの X/Y 偏向入力へ
Example 2: TOP 画像をレーザー投影機で再現 🔆
Movie File In TOP → Scan CHOP (Source=TOP, Output Color=on) → Audio Device Out CHOP → レーザー DAC
ラスター画像を走査し RGB チャンネル付きで出力することで、レーザー投影機が再現可能な制御波形を生成する。
- 画像 / 動画ソースを Movie File In TOP で読み込む
- Scan CHOP の Source OP を TOP に設定し、Width / Height で再サンプル解像度を指定
- Output Color をオンにし、Red Scale / Green Scale / Blue Scale で各チャンネル振幅を調整
- Interleave を Even Odd または Max にしてちらつきを軽減
- Blanking Count で走査間の暗転を挿入し、出力をレーザー DAC に渡す
Example 3: CHOP 波形のオシロ静止表示 🌊
Wave CHOP → Scan CHOP (Source=CHOP, Trigger ON) → Audio Device Out CHOP
アニメーション付き Wave CHOP の波形を Scan CHOP で走査し、トリガー機能で波形を画面上に静止表示する。
- Wave CHOP または Trail CHOP で長さを持つ波形を生成(タイムスライスは無効化)
- Scan CHOP の Source OP を CHOP に設定し、CHOP パスを指定
- Trigger をオンにし Trigger Value で開始閾値を設定
- Trim を有効にして表示したい区間の長さを Trim Value / Trim Units で指定
- 出力をオシロスコープに送り、トリガースイープ波形として観測
関連オペレータ 🔗
類似機能OP 🔍
- Laser CHOP — Scan CHOP の後継、レーザー投影向けに機能拡張された推奨オペレータ
- EtherDream CHOP — EtherDream レーザー DAC へ直接データを送出
- Helios DAC CHOP — Helios レーザー DAC 向けの専用出力 CHOP
組み合わせ推奨OP 🔄
- Audio Device Out CHOP — Scan 出力を音声デバイス経由でオシロ / レーザーへ送出
- Trail CHOP — CHOP ソース用に長さを持つ波形バッファを生成
- Wave CHOP — 走査対象となる波形ソース
- Limit SOP — Scan CHOP 出力を SOP として可視化(公式 docs 推奨)
- Math CHOP — Scan 出力の振幅・オフセット補正
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Scan 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: Scan CHOP は非推奨(DEPRECATED)と公式ドキュメントに記載されている
✅ Solution:
- 新規プロジェクトでは Laser CHOP の使用が公式に推奨されている
- Laser CHOP はレーザー投影向けの blanking / カラー制御がより洗練されており Scan CHOP の上位互換
- 既存プロジェクトでの動作維持目的のみ Scan CHOP の継続使用を検討する
❌ Problem: オシロスコープに何も表示されない / 振幅が小さすぎる
✅ Solution:
- X Scale / Y Scale を上げて偏向入力レンジに合わせる(典型値は -1〜+1 や -10V〜+10V)
- Sample Rate が Audio Device Out CHOP のデバイスレートと整合しているか確認
- Source OP が正しいファミリ(SOP / TOP / CHOP)に設定されているか確認
- Output が CHOP Viewer 経由で実際に出力されているか CHOP Viewer をオンにして確認
❌ Problem: ちらつきが激しい・画像が崩れる
✅ Solution:
- TOP ソース時は Interleave を Sweep から Even Odd または Max に切替
- Sample Rate を上げて 1 秒あたりの走査回数を増やす
- Width / Height を下げてサンプル総数を減らし、リフレッシュ間隔を短縮
- Auto Reduce をオンにして動的に解像度を低減
❌ Problem: レーザー投影で複数オブジェクト間にビーム軌跡が見える
✅ Solution:
- Output Color をオンにし、Blanking Count を増やしてジオメトリ間 / 走査間に暗転位置を挿入
- 前段で別の SOP で分割し、明示的にプリミティブを区切る
- Randomize Samples をオフにして連続走査順序を保つ(ランダム順では blanking が機能しにくい)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

