
概要 📖 – CHOP チャンネル値をテーブル形式の DAT に書き出す変換
CHOP to DATは、入力 CHOP のチャンネル値を行・列単位でテーブル化し、DAT として出力する DATです。Row per Channel / Column per Channel の 2 種類の出力形態と、Include Names / Latest Sample when Time Slice の組合せで、ログ用・送信用・デバッグ表示用など用途に応じたテーブルを生成します。
主な用途 🎯
- CHOP チャンネル値をテーブル化し、Table DAT で可視化・デバッグする
- Trail CHOP 等の時系列サンプルを File Out DAT へ流して
.csv/.tsvログとして保存 - Web Server DAT や WebSocket DAT から外部クライアントへ送るペイロードの整形
- Convert DAT で JSON 化して REST API 送信 / 別 OP ツリーへの値受け渡しに活用
- Include Names をオンにしてチャンネル名カラムを併記し、行・列指向どちらの後段にも対応
データフロー 🔄
入力: CHOP (parameter で指定)
↓
Latest Sample when Time Slice の判定 (時系列か瞬時値か)
↓
Output 形態の決定 (Row per Channel / Column per Channel)
↓
Include Names で名前列を付加するかを決定
↓
出力: DAT (テーブル)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
CHOP To Page 📋
CHOP 入力 .chop 🔌
値を読み取る元の CHOP を指定する
CHOP .chop 🔌
– 値を取得する対象の CHOP をパス参照で指定
– 各チャンネルの値ごとに 1 行 (または 1 列) を生成する基点となる入力
Include Names .names 🏷️
チャンネル名列の付加トグル:
- Include Names トグル:
namesをオンにすると、各行 (Row per Channel) または各列 (Column per Channel) に対して、対応するチャンネル名を持つ追加カラムが付加される
Latest Sample when Time Slice .latestsample ⏱️
タイムスライス CHOP の最新サンプル限定モード:
- Latest Sample when Time Slice トグル:
latestsampleをオンにし、かつ入力 CHOP が time-sliced のとき、最新サンプルのみが DAT 出力に使われる。フレームが落ちてもテーブルサイズが揺れないため、後段の Table DAT 参照が安定する
Output .output 📤
チャンネル値の並べ方を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Row per Channel | .rowperchan |
各チャンネルを 1 行として並べる (チャンネル数 = 行数)。サンプル数が複数あれば横方向に伸びる |
| Column per Channel | .colperchan |
各チャンネルを 1 列として並べる (チャンネル数 = 列数)。サンプル数が複数あれば縦方向に伸びる |
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (長い行を折り返して表示) |
| Off | .off |
Word Wrap を無効化 (長い行は横スクロール) |
実践アイデア 💡
Example 1: Table DAT で CHOP 値をリアルタイム可視化 👀
Audio Spectrum CHOP → CHOP to DAT (Row per Channel, Include Names=on) → Table DAT
オーディオ解析 CHOP の各バンド値を、チャンネル名カラム付きでテーブル化し、Table DAT に貼り付けて値の挙動をデバッグする基本フロー。Latest Sample when Time Slice をオンにしておくと、time-sliced CHOP でも 1 サンプル分の現在値だけが表示されるため、行数が変動せず読みやすい。
- Audio Spectrum CHOP を配置してオーディオ入力を周波数領域へ変換
- CHOP to DAT を後段に置き、
chopパラメータで Audio Spectrum CHOP を参照 - Output を
Row per Channel、Include Names をオンに設定 - Latest Sample when Time Slice をオンにして瞬時値のみ書き出し
- 後段の Table DAT で各チャンネルの現在値を視覚的に確認
Example 2: CSV ログとして時系列値を保存 💾
Serial CHOP → Trail CHOP (Length) → CHOP to DAT (Column per Channel, Include Names=on) → File Out DAT
センサーや解析 CHOP の時系列サンプルを Trail CHOP で蓄積したあと、CHOP to DAT で列指向テーブルに変換し、File Out DAT 経由で CSV / TSV ログとして保存する用途。Column per Channel 形式は表計算ソフトで開いたときの列見出し付き時系列フォーマットと一致しやすい。
- 計測対象の CHOP (例: Audio Devices DAT 経由で取得した
Audio Device In CHOPの RMS など) を入力に用意 - Trail CHOP で必要な時間長分のサンプルを保持
- CHOP to DAT の Output を
Column per Channel、Include Names をオンに設定 - Latest Sample when Time Slice をオフにして全サンプル書き出し
- 後段の File Out DAT で
.csvまたは.tsvとして保存
Example 3: Web Server DAT で外部クライアントへブロードキャスト 🌐
Math CHOP / Filter CHOP → CHOP to DAT (Row per Channel, Include Names=on) → Convert DAT (To JSON) → Web Server DAT
コントロール値や演奏データを CHOP で生成したあと、CHOP to DAT で名前付きテーブルに変換し、Convert DAT で JSON 化して Web Server DAT 経由で WebSocket クライアントへブロードキャストする用途。Include Names を必ずオンにしてフィールド名を保持しておくと、受信側で値を辞書アクセスできる。
- 送信したい値群を Math CHOP / Filter CHOP で整形しチャンネル名を意味のある名前にリネーム
- CHOP to DAT を後段に配置、Output を
Row per Channel、Include Names をオンに設定 - Convert DAT を続け、Convert に
To JSON等のフォーマットを選択 - Web Server DAT (または WebSocket DAT) でブラウザ / 外部クライアントへ送信
- 受信側で
nameフィールドをキーにして値を取り出し UI 等に反映
Example 4: セットアップ時のスナップショット保存 🗂️
Constant CHOP (設定値) → CHOP to DAT (Row per Channel, Include Names=on) → Table DAT (保存先)
Constant CHOP に書き込まれた設定値群 (機材 ID、ゲイン、しきい値 等) を、人が読めるテーブル形式で記録する用途。プロジェクト引継ぎ時のドキュメント代わりにも使えるほか、後から DAT to CHOP で読み戻して同じ設定を別ファイルへ展開する基点にもなる。
- Constant CHOP に設定値を書き込み、各チャンネル名を意味のある識別名にリネーム
- CHOP to DAT を配置、Output を
Row per Channel、Include Names をオンに設定 - Latest Sample when Time Slice をオンにして単発スナップショット化
- 出力先の Table DAT に Edit ロックを掛けて意図しない上書きを防止
- 必要なら File Out DAT で外部ファイル (
.tsvなど) としても保管
関連オペレータ 🔗
類似機能OP 🔍
- DAT to CHOP — 逆方向: DAT テーブルのセル値を CHOP チャンネルへ展開
組み合わせ推奨OP 🔄
- Table DAT — CHOP to DAT の代表的な保存先・表示先
- Convert DAT — 出力テーブルを JSON / CSV / TSV 等のテキスト形式へ変換
- File Out DAT — テーブル化した値をディスクへ書き出してログ保存
- Web Server DAT — テーブル / JSON 化した値を外部クライアントへブロードキャスト
- Trail CHOP — 前段で時系列サンプルを蓄積し CHOP to DAT で履歴テーブル化
前処理・後処理DAT 🎯
Info CHOP情報 📊
CHOP to DAT は Info CHOP による詳細情報取得に対応しています。num_rows / num_cols でテーブル規模を、total_cooks / cook_time / cpu_time で実行統計を参照でき、後段 DAT の再評価タイミング判定や負荷監視に利用できます。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 値が想定したセル位置に並ばない / 行と列が逆になる
✅ Solution:
- Output が
Row per Channel(行 = チャンネル) かColumn per Channel(列 = チャンネル) のどちらに設定されているかを確認 - Include Names のオン / オフでヘッダ列が追加されるかどうかが変わるため、後段 Table DAT のインデックス参照とずれていないか確認
- 後段の Convert DAT で行・列を入れ替えたい場合は
Transpose系のメニューで補正
❌ Problem: time-sliced CHOP を入力したらテーブル行数が毎フレーム変化する
✅ Solution:
- Latest Sample when Time Slice を オンにして最新サンプルのみ書き出すモードに切替
- 全サンプルを保持したい場合は前段の Trail CHOP でサンプル数を固定してから CHOP to DAT に渡す
- 上記でも揺れる場合は入力 CHOP の Time Slice 設定 (Common Page) 自体を見直す
❌ Problem: チャンネル名カラムが出ない / 想定外のカラムが入る
✅ Solution:
- Include Names がオンになっていることを確認
- 上流 CHOP のチャンネル名が
chan1等のデフォルトのままになっていないか確認 (前段で Rename CHOP で意味のある名前に変更) - Web Server DAT / Convert DAT 後段で名前列が必要な場合は、Include Names オンを必須要件として配線時にチェック
❌ Problem: File Out DAT で書き出した CSV が後段で再読み込みできない
✅ Solution:
- 出力前にチャンネル名・値に
,や改行が混入していないかを確認 (混入していれば前段の Math / 文字列処理で除去) - File Out DAT の Append / Replace モードを意図と合わせて選択 (ログ追記なら Append)
- 再読込側の DAT to CHOP の First Row is / First Column is を、書き出し時の Include Names 設定と整合させる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – CHOP to DAT
- TouchDesigner公式ドキュメント – ChoptoDAT Class
- DAT to CHOP(逆方向の変換 DAT→CHOP)
- Trail CHOP(時系列サンプル蓄積の前段)

