
概要 📖 – ムービーファイルからの音声抽出と同期再生
Audio Movie CHOPは、Movie File In TOP が読み込んだムービーから音声トラックを抽出し、映像と同期した音声サンプルを出力する CHOPです。Audio Sync Offset で映像と音声のラグを補正でき、マルチトラック音声からトラックを選択して再生できます。
主な用途 🎯
- Movie File In TOP と連携したムービー音声トラックの抽出
- 映像と音声の同期再生(Audio Sync Offset によるラグ補正)
- マルチトラック音声を持つムービーからの任意トラック選択
- ムービー再生位置のチャンネル化(Index Channel による 0〜1 正規化)
- Pre-Read による音声キャッシュとオープン待機タイムアウト制御
データフロー 🔄
入力: Movie File In TOP(映像 + 音声トラック)
↓
Audio Track Index で音声トラック選択
↓
Pre-Read による先読みキャッシュ
↓
Audio Sync Offset でラグ補正
↓
Volume でレベル調整
↓
出力: 音声サンプル + (任意で) 再生位置 Index チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Movie Audio Page 📋
再生制御パラメータ ▶️
Play .play ▶️
– On で音声出力を有効化、Off で無音
– 再生のミュート切替に使用
Movie File In TOP .moviefileintop 🎬
– 音声ソースとなる Movie File In TOP のパスを指定
– その TOP が読み込んだムービーファイルから音声を取り出す
Volume .volume 🔊
– ムービーから取得した信号のレベル
– 1 でフルシグナル、0 でミュート
Pre-Read(先読みキャッシュ) ⏳
Pre-Read Length .prereadlength 📥
– 音声をキャッシュへ先読みする長さ
– 単位は Pre-Read Length Unit で指定(samples / frames / seconds)
Pre-Read Length Unit .prereadlengthunit 📐
– Pre-Read Length の単位を選択
– 以下の単位から選択できます:
- samples(サンプル数)
- frames(フレーム数)
- seconds(秒)
Open Timeout .opentimeout ⏱️
– ムービーファイルオープン時、音声サンプル読み込みを待機する最大時間
– タイムアウトに達すると、Pre-Read が完了するまで出力はゼロになる
同期オフセット 🎚️
Audio Sync Offset .syncoffset ↔️
– ムービー音声の再生タイミングをオフセット
– 負の値で音声をその分だけ早めに再生(Audio Device Out CHOP のキューバッファ等によるレイテンシを相殺するため)
Audio Sync Offset Unit .syncoffsetunit 📐
– Audio Sync Offset の単位を選択
– 以下の単位から選択できます:
- samples(サンプル数)
- frames(フレーム数)
- seconds(秒)
出力チャンネル制御 📊
Index Channel .index 📍
– On にすると、現在のムービー再生位置を示す追加チャンネルを出力
– 値域は 0(先頭)〜 1(末尾)で正規化される
Audio Track Index .audiotrack 🎚️
– ムービーが複数の音声トラックを持つ場合の選択インデックス
– 多言語音声・サラウンド/ステレオ別トラック等を切り替え
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: ムービー素材からの BGM 同期再生 🎬
Movie File In TOP → Audio Movie CHOP (Volume / Sync Offset) → Audio Device Out CHOP
- Movie File In TOP に映像素材を読み込む
- Audio Movie CHOP の Movie File In TOP パラメータで上記 TOP のパスを指定
- Volume で再生レベルを調整し、出力を Audio Device Out CHOP に送る
- 映像とリップシンク的にズレを感じたら Audio Sync Offset を負の値で微調整
Example 2: 再生位置を可視化するプログレスバー 📊
Movie File In TOP → Audio Movie CHOP (Index Channel On) → Math CHOP → UI
- Audio Movie CHOP の Index Channel を On にして再生位置 0〜1 を出力
- Math CHOP で UI 幅にマッピング(例: To Range = [0, 1920])
- 出力をプログレスバー TOP の transform x に Export
- ムービー再生に合わせてバーが伸びる UI を構築
Example 3: マルチトラック音声の言語切替 🌐
Movie File In TOP → Audio Movie CHOP (Audio Track Index) → Audio Device Out CHOP
- 複数音声トラックを持つムービーを Movie File In TOP に読み込む
- UI のボタンや Constant CHOP で Audio Track Index を切替
- 選択したトラックの音声が Audio Movie CHOP から出力される
- 多言語コンテンツのライブ切替に活用
関連オペレータ 🔗
類似機能OP 🔍
- Audio File In CHOP — 音声ファイル単体(mp3 / wav 等)を再生する CHOP、ムービー連動が不要な場合はこちら
- Audio Device In CHOP — OS のオーディオ入力デバイスから音声を取得(マイク・ライン入力)
組み合わせ推奨OP 🔄
- Audio Device Out CHOP — Audio Movie CHOP の出力をスピーカーへ送る最も一般的な後段
- Audio Spectrum CHOP — ムービー音声を周波数領域に変換しビジュアライゼーション
- Analyze CHOP — ムービー音声から RMS Power やピーク値を抽出
- Math CHOP — Volume の代替としてのレベル変換、Index チャンネルの値域マッピング
- Trail CHOP — ムービー音声波形の時間履歴を可視化
前処理・後処理CHOP 🎯
- 前処理: Constant CHOP、Logic CHOP
- 後処理: Audio Device Out CHOP、Audio Spectrum CHOP、Analyze CHOP、Math CHOP、Filter CHOP
Info CHOP情報 📊
Audio Movie 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:
Playパラメータが On になっているか確認Movie File In TOPのパスが正しい TOP を指しているか、その TOP がムービーを正常に読み込めているか確認Open Timeoutに達して Pre-Read 完了まで音声がゼロ出力されている可能性、Pre-Read Lengthを短くするか待機
❌ Problem: 映像と音声がズレる(リップシンクのずれ)
✅ Solution:
Audio Sync Offsetに負の値を入れて音声を早める(Audio Device Out CHOP のキューバッファ分を相殺)Audio Sync Offset Unitをsecondsまたはframesに切り替えてキャリブレーション- 後段の Filter CHOP 等で余計な遅延が入っていないか確認
❌ Problem: 選択した音声トラックが鳴らない / 想定と違うトラックが鳴る
✅ Solution:
Audio Track Indexの値を 0 から順に切り替えて目的のトラックを探す- ムービーファイルが本当に複数の音声トラックを持っているか、外部プレーヤー(VLC 等)で確認
- Movie File In TOP 側でファイルが完全にロードされているか確認
❌ Problem: Index Channel の値が滑らかに変化しない / 想定と違う
✅ Solution:
Index Channelが On になっているか確認、出力は 0(先頭)〜 1(末尾)の正規化値- Movie File In TOP 側の再生速度・ループ設定が Audio Movie CHOP の Index と整合しているか確認
- 後段で Math CHOP の From/To Range で UI 幅などへマッピング
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Audio Movie CHOP
- Movie File In TOP(音声ソース TOP)
- Audio Device Out CHOP(出力先 CHOP)

