Record CHOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Record CHOP のチャンネル記録機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – チャンネル記録と再生バッファ

Record CHOPは、入力されたチャンネルを時系列に記録してバッファとして保持・再生する CHOPです。Active 入力での録音 ON/OFF 制御、Segment による固定長スライディングウィンドウ、第 3 入力による外部リセット条件をサポートします。

主な用途 🎯

  • ライブ入力チャンネルの時系列記録(センサー値・MIDI・OSC データのキャプチャ)
  • 音声・モーションデータの一定区間バッファリングと再生
  • ジェスチャー・パフォーマンス動作のスナッピング録音(Auto Range モード)
  • フィードバック演出のためのスライディングウィンドウ蓄積(Segment モード)
  • 外部入力トリガーによる記録のリセット・再スタート制御

データフロー 🔄

入力: ライブチャンネル + Active 入力 + Reset 入力

Record 状態判定(Off / On / Add / Auto Range)

サンプリング(Time Slice or Current Frame)

Interpolation(Hold / Linear / Cubic)

出力: 記録済みチャンネルバッファ

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Control Page 📋

Record .record 🎙️

記録のタイミングと方式を決定するメニュー(いつ・どれだけ記録するか)

項目 内部名 説明
Off .off 出力をそのまま変更せず保持(記録停止)
On .on 再生中は常に記録。Active 入力が off の間は入力値を現在の値で保持
Add .add 既存の記録済みチャンネルにオフセット加算。Active 入力 off の間は変更しない
Auto Range .auto Active の on/off に基づいて記録区間を自動生成

Record Input .sample ⏱️

Time Slice 全体をサンプリングするか、現在フレームのみを取得するかを切り替えるパラメータ

項目 内部名 説明
Record Input .sample Current Time Slice はオーディオ等で全フレームを評価する用途に推奨。Current Frame は現在フレームのみクックし、デバイス入力等のフレーム間補間を伴う用途に向く(オーディオでは非推奨)。

Interpolation .interp 🔁

サンプル間欠損部分をどう補間するかを決定するメニュー

項目 内部名 説明
Hold Previous Value .hold 直前のサンプル値を保持(階段状)
Linear .linear 前後サンプル間を直線補間(線形)
Cubic .cubic 前後サンプル間を 3 次曲線で滑らかに補間

Record Output .output 📤

CHOP から出力するフレーム範囲を決定するメニュー

項目 内部名 説明
Full Range .full 記録開始フレームから成長していくフルレンジ出力。2 周目のフレームは上書きされる(Reset Channels で初期化)
Current Frame at Frame 1 .frame1 現在フレームをフレーム 1 にシフトして出力。値が変動しない場合はクックを抑制
Segment .segment Record Segment で指定した固定長のスライディングウィンドウとして出力

Record Segment / Reset 📏

Record Segment .segment 📐
– 固定長インターバル内でデータを記録、最新サンプルが末尾に追加され古いサンプルが先頭側へシフト
– いわゆる「スネーク」型のスライディングウィンドウを作るのに使う

Record Segment Unit .segmentunit 📏
– Record Segment の単位を選択(Samples / Frames / Seconds)
– 用途に応じてサンプル数指定・フレーム数指定・秒指定を切替

Reset Channels .reset 🧹
– 現在の出力をクリアして以降のチャンネルを 1 サンプル長から再開
– 録音を一からやり直したいときに使う

Reset Condition .resetcondition 🔄

Record CHOP の 3 つ目の入力(Input 2)にチャンネルを接続したとき、何が起きたらリセットをトリガーするかを決定するメニュー

項目 内部名 説明
Off to On .offtoon 入力チャンネルが Off → On(0 → 1)に変化したときリセット
While On .on 入力チャンネルが On(1)の間リセット
On to Off .ontooff 入力チャンネルが On → Off(1 → 0)に変化したときリセット
While Off .off 入力チャンネルが Off(0)の間リセット

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 → Record CHOP (Record: On, Output: Full Range) → Trail CHOP
  1. Serial CHOP でセンサーからのリアルタイム値を取得
  2. Record CHOP の Record を「On」、Record Output を「Full Range」に設定
  3. Active 入力(第 2 入力)に開始トリガーを接続
  4. セッション中のセンサー履歴が連続的に記録され、後段で波形解析や再生が可能

Example 2: スライディングウィンドウでのモーション残像表現 🌀

Mouse In CHOP → Record CHOP (Output: Segment, Segment: 60 frames) → CHOP to SOP
  1. Mouse In CHOP でカーソル座標を取得
  2. Record CHOP の Record Output を「Segment」、Record Segment を 60、Unit を「Frames」に設定
  3. 直近 60 フレーム分のサンプルが常時スライディングして出力
  4. CHOP to SOP に渡してマウス軌跡の残像をジオメトリ化

Example 3: 外部トリガーによる録音区間の自動切り出し 🎙️

Audio Device In CHOP → Record CHOP (Record: Auto Range) ← Active: Button COMP, Reset: Trigger CHOP
  1. Audio Device In CHOP でマイク入力を取得
  2. Record CHOP の Record を「Auto Range」に設定し、Active 入力(第 2 入力)にボタン CHOP を接続
  3. 第 3 入力にリセット用 Trigger CHOP を接続、Reset Condition を「Off to On」に設定
  4. ボタンを押している区間のみが自動的に切り出され、外部トリガーで録音バッファを初期化できる

関連オペレータ 🔗

類似機能OP 🔍

  • Trail CHOP — チャンネル値の時間履歴をスライディングウィンドウとして保持
  • Constant CHOP — 固定値を出力(記録なし)。Record の初期サンプルソースとして併用

組み合わせ推奨OP 🔄

  • Trail CHOP — Record と組み合わせて記録波形を可視化
  • Trigger CHOP — Record の Reset 入力に接続してエンベロープ駆動のリセット
  • Filter CHOP — 記録前のスムージングや、再生後のポストフィルタ
  • Math CHOP — 記録バッファの値域変換・スケーリング
  • Analyze CHOP — 記録済みバッファの統計値(最大・平均・ピーク)を抽出

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Record CHOPは Info CHOP による詳細情報取得に対応しています。

CHOP固有情報 🎚️

  • start: CHOPインターバルの開始(サンプル単位)
  • length: CHOPのサンプル数
  • sample_rate: フレーム毎秒のサンプルレート
  • num_channels: CHOPのチャンネル数
  • time_slice: タイムスライス有効時は1、無効時は0
  • export_sernum: Export接続の更新回数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間(ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 記録が始まらない / Active 入力が効かない
✅ Solution:

  • Record パラメータが「Off」になっていないか確認、On / Add / Auto Range のいずれかを選択
  • Active 入力(第 2 入力)に接続したチャンネル値が 0 のままになっていないか確認、1 以上で記録 ON
  • Auto Range モードでは Active の on/off 遷移が必要、常時 1 だと区間が確定しない

❌ Problem: オーディオを記録すると不連続音や欠落サンプルが出る
✅ Solution:

  • Record Input を「Current Time Slice」に設定し全フレームを評価させる(Current Frame ではフレーム間サンプルが欠落)
  • Interpolation を「Linear」または「Cubic」に変更し、サンプル間を滑らかに補間
  • 前段に Filter CHOP を入れてスパイクノイズを除去

❌ Problem: Segment モードでバッファ長が想定と違う
✅ Solution:

  • Record Segment Unit が「Samples / Frames / Seconds」のどれになっているか確認、単位ミスでスケールが桁違いになる
  • Record Segment の値とサンプルレートの組み合わせを再確認(例: 1 秒 60 FPS なら 60 frames = 1 second)
  • Reset Channels を 1 度押して既存バッファを初期化してから再記録

❌ Problem: Reset 入力でリセットがかからない
✅ Solution:

  • 第 3 入力(Input 2)に Reset 用 CHOP が接続されているか確認
  • Reset Condition が現在の入力波形の挙動に合っているか確認(Off to On / While On / On to Off / While Off)
  • 前段に Logic CHOP を入れてリセット用パルスを整形

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました