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

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

Resample CHOP のサンプルレート変換機能を示す図

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

概要 📖 – サンプルレート変換と時間軸の伸縮

Resample CHOPは、入力チャンネルのサンプルレートや時間範囲を変換し、補間を伴って新しいサンプル列を生成する CHOPです。Method を切り替えることで「サンプル数だけ変える」「時間範囲だけ変える」「両方変える」を独立に制御でき、Interpolation で No Interp / Linear / Cubic / Repeat の 4 種補間を選べます。

主な用途 🎯

  • 異なるサンプルレートを持つ CHOP 同士のレート統一(前処理)
  • 時系列データのアップサンプリング・ダウンサンプリングによる解像度調整
  • アニメーションカーブの時間方向の伸縮・短縮(タイムストレッチ)
  • 角度・回転チャンネルの周期補正付きリサンプリング(Correct for Cycles)
  • Quaternion を用いた回転チャンネルの正しい補間

データフロー 🔄

入力: チャンネル波形(任意のサンプル数・レート)

Method で変換方式を選択

Sample Rate / Start / End / Interpolation で出力サンプルを再構成

出力: 新しいサンプルレートまたは新しい時間範囲のチャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Resample Page 📋

Method .method 🎛️

サンプルレートと時間範囲の変換方式を決定するメニューパラメータ(4 種)

項目 内部名 説明
Same Rate, New Interval .strech サンプルレートを維持したままチャンネルを時間方向に伸縮(Stretch CHOP と同等)。Start/End を変更してサンプル数が増減
New Rate, Same Time Range .preserve 時間長を維持したままサンプルレートを変更。サンプル数が変わるが Start/End は不変
New Rate, Same Index Range .index サンプル数を維持したままサンプルレートを変更。時間長が変わる
New Rate, New Interval .newint サンプルレートと時間範囲の両方を独立に変更。最も柔軟だが Start/End/Rate を同時指定する必要あり

サンプルレートと時間範囲 ⚡

Sample Rate .rate 🎚️
– 出力チャンネルの新しいサンプルレート(Hz)
– Method が preserve / index / newint のときに有効

Start .start
– 出力チャンネルの新しい開始位置
– Unit Values の設定により絶対値または相対値として解釈される

Start Unit .startunit 📏
– Start パラメータの単位を Samples / Frames / Seconds から選択

End .end
– 出力チャンネルの新しい終了位置
– Unit Values の設定により絶対値または相対値として解釈される

End Unit .endunit 📐
– End パラメータの単位を Samples / Frames / Seconds から選択

Unit Values .relative 🔢

Start / End パラメータの解釈方法を決定するメニュー

項目 内部名 説明
Absolute .abs Start/End の値を新しい開始位置・終了位置の絶対値として扱う
Relative to Start/End .rel Start/End の値を元の開始位置・終了位置からのシフト量として扱う

Interpolation .interp 📈

リサンプリング時に使用する補間方式(4 種)

項目 内部名 説明
No Interpolation .nointerp 最も近いサンプル値をそのまま使用(ステップ補間)
Linear .linear サンプル間を直線補間。出力サンプル数が増える場合は線形補間、減る場合は付近サンプルの平均
Cubic .cubic 3 次補間でサンプル間を滑らかにつなぐ。Linear より滑らかだが、急激な変化を持つチャンネルには非推奨
Repeat Samples .edge 出力サンプル数が入力の整数倍のとき、より等間隔な結果になる補間方式

回転・周期チャンネル制御 🔄

Quaternion Blend .quatrot 🌐
– クォータニオンを用いてサンプル間を補間
– 回転チャンネル(4 チャンネルセット)の補間で姿勢の歪みを避けたい場合に有効

Correct for Cycles .correct 🔁
– 角度のような周期チャンネルでサンプル間の最短経路を選ぶ補間を行う
– 例: 360 から 0 への遷移を「-360 進む」ではなく「+0 へ即遷移」として扱う

Cycle Length .cyclelen 📐
– 1 サイクルの長さを指定
– 角度の場合は 360 が一般的

Constant Area .constarea 📊
– オン時、チャンネル値をスケーリングしてチャンネル下の面積を一定に保つ
– エネルギー保存が必要なシグナル変換で使用

Use Last Frame Only .uselastframe ⏱️
– 入力 CHOP の最終フレームのみを切り出してリサンプリングを実施


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: 異なるレートの CHOP を Math CHOP で合成する前処理 🔗

Audio Device In CHOP (44100 Hz) → Resample CHOP (60 Hz, preserve) → Math CHOP (+ LFO CHOP 60 Hz)
  1. Audio Device In CHOP は 44100 Hz、LFO CHOP は 60 Hz というレート差がある状態
  2. Resample CHOP の Method を「New Rate, Same Time Range」、Sample Rate を 60 に設定
  3. Interpolation を「Linear」にして音声を 60 Hz にダウンサンプル
  4. 後段の Math CHOP で LFO とレート一致のまま加算・乗算が可能になる

Example 2: アニメーションカーブのタイムストレッチ(スローモーション) 🎬

Animation COMP → Resample CHOP (Same Rate, New Interval) → Geometry COMP
  1. Animation COMP で 1 秒のカーブを作成
  2. Resample CHOP の Method を「Same Rate, New Interval」、Unit Values を「Absolute」、End を 2 秒に設定
  3. Interpolation を「Cubic」にして滑らかな補間で 2 倍に引き伸ばす
  4. サンプルレートは維持されたまま、再生時間だけ 2 倍になりスローモーション表現が得られる

Example 3: 角度チャンネルのループ補正付きリサンプリング 🌀

Constant CHOP (0°→360°) → Resample CHOP (Correct for Cycles ON) → Geometry COMP の Rotate
  1. 角度値が 0 から 360 まで変化するチャンネルを用意
  2. Resample CHOP の Correct for Cycles をオンにし、Cycle Length を 360 に設定
  3. 360 → 0 の不連続点でも最短経路(+0 へジャンプ)として補間されるため、ジオメトリの回転がループ境界で逆回転しない
  4. Quaternion Blend を併用すると複数軸の回転チャンネルでも姿勢が崩れない

Example 4: Analyze前段でサンプル数を削減 📉

Audio Device In CHOP → Resample CHOP (New Rate, Same Time Range, 240 Hz) → Analyze CHOP (RMS Power)
  1. Audio Device In CHOP が高サンプルレート(44100 Hz)のまま Analyze に通すと負荷が大きい
  2. Resample CHOP の Method を「New Rate, Same Time Range」、Sample Rate を 240 に設定
  3. Interpolation を「Linear」にしてダウンサンプルし、Analyze CHOP の処理サンプル数を大幅に削減
  4. RMS Power や Peak 検出の精度を保ちつつ、フレームレートに見合った負荷で実行できる

関連オペレータ 🔗

類似機能OP 🔍

  • Stretch CHOP — Same Rate, New Interval モードと同等。時間方向の伸縮専用
  • Filter CHOP — 平滑化目的の用途で機能が一部重なる(補間ではなく畳み込み)
  • Trim CHOP — Start / End 指定での時間範囲切り出し用途

組み合わせ推奨OP 🔄

  • Math CHOP — レート統一後にチャンネル合成を行う後段処理
  • Analyze CHOP — サンプル数を削減してから統計解析を行う前段処理
  • Filter CHOP — リサンプル後に平滑化フィルタを適用してノイズを抑制
  • LFO CHOP — LFO のサンプルレートを他チャンネルに揃える前処理として活用
  • Audio Spectrum CHOP — 音声を周波数領域に変換する前のレート調整
  • Trail CHOP — Resample 結果の時間履歴を可視化

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Resample 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: リサンプル後にエイリアシングやノイズが発生する
✅ Solution:

  • ダウンサンプル時は Interpolation を「Linear」にして付近サンプルを平均化
  • 前段にFilter CHOP(Gaussian や Box)でローパスをかけてからリサンプル
  • Cubic 補間は急峻な変化を持つチャンネルでオーバーシュートを起こすため、ステップ的なデータでは Linear か No Interpolation を選ぶ

❌ Problem: Start / End を指定しても範囲が変わらない
✅ Solution:

  • Method が「New Rate, Same Time Range」だと時間範囲は固定。範囲を変える場合は「New Interval」系を選ぶ
  • Unit Values の Absolute / Relative の解釈を確認(Relative は元の開始位置からの差分)
  • Start Unit / End Unit が想定の単位(Samples / Frames / Seconds)になっているか確認

❌ Problem: 回転チャンネルがリサンプル後に逆回転や姿勢崩れを起こす
✅ Solution:

  • Correct for Cycles をオンにして Cycle Length を 360(角度の場合)に設定
  • クォータニオン入力(4 チャンネル)の場合は Quaternion Blend をオンにする
  • 後段のMath CHOPで値域を確認し、想定外のジャンプがあれば Correct for Cycles を見直す

❌ Problem: サンプルレート違いで Merge / Math が拒否される
✅ Solution:

  • Resample CHOP を前段に挿入して全入力のレートを揃える
  • Method を「New Rate, Same Time Range」にし Sample Rate を統一値に設定
  • Common Page の Sample Rate Match を「Resample At Maximum Rate」等にしておくと自動調整される

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました