
概要 📖 – チャンネルデータのファイル書き出し
File Out CHOPは、入力されたチャンネルを定期的にファイルへ書き出すロギング用の CHOPです。Active がオンの間、Interval で指定したフレーム間隔ごとにチャンネル値をファイルへ追記し、長時間の記録や後処理用データのキャプチャに使用します。
主な用途 🎯
- チャンネルデータをファイルに記録するロギング・データキャプチャ
- センサー入力やパフォーマンスログの長時間アーカイブ
- 実機モーションやインタラクションの再生用データ収集
- 解析・後処理向けのオフラインデータエクスポート
- ライブパフォーマンスの状態履歴を保存して再現可能化
データフロー 🔄
入力: チャンネルデータ
↓
Active 判定(オン時のみ書き込み)
↓
Interval 間隔でサンプル蓄積
↓
File パラメータで指定したパスへ書き出し
↓
出力: 入力チャンネルをパススルー
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
File Page 📄
Active .active 🟢
ファイル書き出しの有効・無効を切り替えるトグル
| 項目 | 内部名 | 説明 |
|---|---|---|
| Active | .active |
1 にすると Interval で指定した間隔でファイルに書き込みが行われます。0 にすると書き込みは停止し、ファイルは更新されません。 |
File .file 📁
出力先のファイルパスとファイル名:
- File パス: 保存先のパスとファイル名を指定。拡張子は通常
.chanや.txtなど、用途に応じて選択 - 相対・絶対パス: プロジェクトファイル基準の相対パスと OS 絶対パスのどちらも指定可能
Interval .interval ⏲️
ファイルへの書き込み間隔(フレーム単位)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Interval | .interval |
1 回の書き込みと次の書き込みの間に挟むフレーム数を指定します。値が大きいほど書き込み頻度が下がりディスク負荷が軽くなりますが、サンプル粒度も粗くなります。 |
Write .write ✍️
1 フレーム分のデータを即時に書き出すボタン
| 項目 | 内部名 | 説明 |
|---|---|---|
| Write | .write |
クリックすると現在のフレームのチャンネル値を 1 回だけファイルに書き出します。Active がオフの状態でも単発書き込みに利用できます。 |
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: センサー値の長時間ロギング 📝
Serial CHOP → Math CHOP (正規化) → File Out CHOP
外部センサーの値を長時間記録し、後で解析や再生に利用するための基本パターンです。Active をオンにし、Interval を適切に設定して負荷を抑えます。
- Serial CHOP でセンサー値を取得
- 前段の Math CHOP で値域を正規化
- File Out CHOP の File に保存先パスを指定
- Interval を 30〜60 程度に設定して書き込み頻度を調整
- Active を 1 にしてキャプチャ開始、終了時は 0 に戻す
Example 2: ライブパフォーマンスの状態スナップショット 🎭
複数 Constant CHOP / Slider COMP → Merge CHOP → File Out CHOP (Write ボタン)
演出中のスライダー値やトリガー状態を、特定のキューが来たタイミングで 1 フレームだけ書き出して状態を保存する用途です。
- 演出パラメータをまとめた CHOP チェーンを構築
- File Out CHOP の File に状態スナップショット用のパスを設定
- Active はオフのまま、Write ボタンを押した瞬間のみ書き出し
- 後で別シーンに読み込み直して状態を復元
- 本番中はコールバックや Panel から Write をトリガー
関連オペレータ 🔗
類似機能OP 🔍
- File In CHOP — File Out で書き出したファイルを読み込む対のオペレータ
- Record CHOP — メモリ上に時間履歴を蓄積し、ファイル書き出しせず内部参照で扱う
組み合わせ推奨OP 🔄
- Math CHOP — 保存前に値域を正規化したり整数化する前処理
- Filter CHOP — ノイズを抑えてから保存することでデータ品質を上げる
- Trigger CHOP — 特定イベントで Write を発火する用途
- Resample CHOP — 保存前にサンプルレートを揃えて一貫したファイルを生成
- Select CHOP — 保存対象のチャンネルだけを抽出してから書き出し
前処理・後処理CHOP 🎯
Info CHOP情報 📊
File Out 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:
- Active が 1 になっているか確認、0 だと書き込みは停止する
- File パラメータで指定したディレクトリの書き込み権限を確認
- Interval が極端に大きい場合、書き込みタイミングがまだ来ていない可能性
- 単発確認なら Write ボタンで即時書き出しを試す
❌ Problem: 書き込み頻度が高すぎてディスク負荷が上がる
✅ Solution:
- Interval を増やしてフレーム間隔を広げる
- 前段の Resample CHOP でサンプルレート自体を下げる
- 保存対象のチャンネルを Select CHOP で絞り込んでデータ量を削減
❌ Problem: 保存したファイルの値が想定と違う
✅ Solution:
- 前段の Math CHOP で値域や整数化の設定を再確認
- ノイズが大きい場合は Filter CHOP を前段に挿入
- Sample Rate Match の設定でリサンプル方法が想定通りか確認
❌ Problem: ファイルが上書きされ過去データが消える
✅ Solution:
- File パスにフレーム番号や日時を含む式を組み込んで一意化
- 別シーンに切り替える前に File パスを変更してから Active を再オン
- 重要キャプチャの後は Active をオフにして偶発的な上書きを防止
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

