
概要 📖 – チャンネル区間の切り出しと除外
Trim CHOPは、入力チャンネルの指定区間を切り出す、もしくは指定区間を除外して残りを連結する CHOPです。Start/End を秒・フレーム・サンプル単位で指定でき、Discard モードで区間内外どちらを残すかを切替えます。
主な用途 🎯
- チャンネルの特定区間を抜き出して短いクリップを作成
- アニメーションカーブの不要な前後フレームを除外
- 音声・センサーデータの開始/終了をトリミングしてループ素材化
- 時間軸(秒/フレーム/サンプル)単位での精密な範囲指定
- Discard で区間内側を切り抜き 2 つの区間をシームレスに連結
データフロー 🔄
入力: 長尺チャンネルデータ
↓
Start/End で範囲指定(Absolute/Relative 切替)
↓
Discard で区間内外どちらを残すか選択
↓
出力: 切り出されたチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Trim Page 📋
Unit Values .relative 🎛️
Start/End パラメータを絶対値で扱うか、入力チャンネル両端からの相対値で扱うかを切替えるメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Absolute | .abs |
Start/End は時間 0 を基準とした実数値そのもの |
| Relative to Start/End | .rel |
Start は入力先頭から、End は入力末尾からの相対オフセット |
Start / End 範囲指定 📐
Start .start ▶️
– 切り出し範囲の開始位置
– 数値は Start Unit に応じて秒・フレーム・サンプルのいずれかで解釈される
Start Unit .startunit 📏
– Start パラメータの単位を切替えるメニュー
– 秒(seconds)/ フレーム(frames)/ サンプル(samples)から選択
End .end ⏹️
– 切り出し範囲の終了位置
– 数値は End Unit に応じて秒・フレーム・サンプルのいずれかで解釈される
End Unit .endunit 📏
– End パラメータの単位を切替えるメニュー
– 秒(seconds)/ フレーム(frames)/ サンプル(samples)から選択
Discard .discard ✂️
Start/End で指定した範囲の内側と外側のどちらを破棄するかを切替えるメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Exterior | .exterior |
範囲外を破棄(範囲内のみを残す = 通常のトリム動作) |
| Interior | .interior |
範囲内を破棄(残った 2 区間が存在する場合はシームレスに連結) |
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: アニメーションカーブの末尾フェードを除外 🎬
Animation COMP → Trim CHOP (Discard: Exterior, End rel) → 後段制御
- Animation COMP で長尺カーブを生成
- Trim CHOP の Unit Values を Relative to Start/End に設定
- Start = 0、End を末尾から数フレーム手前に指定
- Discard = Exterior で範囲内のみ残し、不要な末尾フェードを除外
Example 2: 音声クリップの中央無音区間を詰めて連結 🎵
Audio File In CHOP → Trim CHOP (Discard: Interior) → Audio Device Out CHOP
- Audio File In CHOP で音声ファイルを読込み
- Trim CHOP の Start/End で無音区間を秒単位で指定
- Discard = Interior に設定すると指定区間が除去され前後の音声が連結
- 結果を Audio Device Out CHOP で再生確認
Example 3: センサーデータの最新 N サンプルだけを切り出す 📊
Serial CHOP → Trail CHOP → Trim CHOP (sample units) → 後段解析
- Serial CHOP のサンプルを Trail CHOP で履歴化
- Trim CHOP の Start Unit / End Unit を samples に設定
- Unit Values を Relative にして末尾から N サンプル分のみを切り出し
- 後段の Analyze CHOP 等で直近データのみを集計
Example 4: ループ素材の前後マージン除去 🔁
Audio File In CHOP → Trim CHOP (Discard: Exterior) → Loop 再生
- ループ素材の音声ファイルを Audio File In CHOP で読込み
- Trim CHOP の Start/End で実ループ区間を秒指定
- Discard = Exterior で前後マージンを切除しシームレスループ素材化
- 後段で Sequencer CHOP 等と組み合わせ繰り返し再生
関連オペレータ 🔗
類似機能OP 🔍
- Delete CHOP — チャンネル単位やサンプル単位で削除、Trim と異なり範囲ベースではない
- Stretch CHOP — 時間軸の伸縮、Trim と異なり情報量は保持
組み合わせ推奨OP 🔄
- Resample CHOP — Trim 後にサンプルレートを揃え直す
- Stretch CHOP — Trim で切り出した区間を所定長さに伸縮
- Shuffle CHOP — Trim で切り出した複数区間をチャンネルとして並べ替え
- Merge CHOP — 複数の Trim 結果を 1 CHOP に統合
- Filter CHOP — Trim 後の境界の段差をスムージング
- Audio File In CHOP — 音声ファイル前段ソース、Trim で区間切り出し
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Trim 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: 出力が 1 サンプルしかない
✅ Solution:
- Start Value が End Value より大きい状態になっていないか確認(公式仕様で両方が Start として扱われ 1 サンプル化する)
- Start Unit と End Unit の単位(seconds / frames / samples)が揃っているか確認
- Unit Values が Relative の場合、End が入力末尾から逆向きに進むため Start を超えていないか確認
❌ Problem: 切り出した区間の長さが想定より短い/長い
✅ Solution:
- Start Unit / End Unit が想定の単位(秒 / フレーム / サンプル)になっているか確認
- Unit Values の Absolute / Relative 切替で基準点が変わるため、両モードを比較
- 後段で Resample CHOP を使って明示的にサンプル数を揃える
❌ Problem: Discard = Interior にしても 2 区間が連結されない
✅ Solution:
- 公式仕様では Interior で残る区間が複数あれば連結されるため、入力チャンネルが本当に Start/End 範囲の前後にまたがっているか確認
- Start = 入力先頭、または End = 入力末尾の場合は連結対象が片側のみなので 1 区間のみが残る
- 境界の段差が気になる場合は後段の Filter CHOP でスムージング
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

