
概要 📖 – 音声ファイルの再生と出力ルーティング
Audio Play CHOPは、音声ファイルを再生し、入力トリガー・音量・出力スピーカールーティングを制御する CHOPです。Mode メニューで Play While On / Trigger / Loop を切替え、Output 1 / Output 2 ページでマルチチャンネルスピーカーへのチャンネル割り当てが可能です。
主な用途 🎯
- 音声ファイル(.wav / .mp3 / .aif / .mid / .m4a)の再生
- 入力チャンネルによる再生トリガー(Play While On / Trigger / Loop)
- 音量のリアルタイム制御(Volume パラメータまたは第 2 入力)
- DAT List による複数音声ファイルの切り替え再生
- マルチチャンネルスピーカー出力へのルーティング(Front Left / Right / Center / LFE / Back / Top)
データフロー 🔄
入力: トリガー信号 / 音量信号
↓
ファイル読込・再生制御 (Mode 設定)
↓
出力チャンネルルーティング (Output 1 / Output 2)
↓
出力: 各スピーカー宛の音声サンプル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
AudioPlay Page 📋
Device .device 🔊
出力先のオーディオデバイス選択:
- Device: 出力先となるオーディオデバイスを選択するメニュー。
defaultを選ぶと Windows コントロールパネル > サウンド > 再生で選択中のデバイスを使用
Outputs .outputs 🎚️
出力チャンネル数:
- Outputs: 出力するチャンネル数を指定するパラメータ
Sound File .file 📁
再生する音声ファイル:
- Sound File: 再生する音声ファイルのパス。対応形式は
.aif/.mp3/.mid/.wav/.m4a。モノラル・ステレオの両方に対応
DAT List .datlist 📋
切替再生用の Table DAT 参照:
- DAT List: 音声ファイルのリストを保持する Table DAT へのパス。第 1 入力(Input 0: Triggers)に複数チャンネルを与えるとリスト内の各ファイルを個別に発火可能。Python の
audioplayコマンドではインデックスで直接指定
Volume .volume 🔉
再生音量:
- Volume: 0 = ミュート、1 = フル音量。第 2 入力(Input 1: Volume)または Python の
.play(volume=val)メソッドを使うとこのパラメータ値を上書き
Mode .mode 🎛️
第 1 入力でトリガーするときの再生モード
| 項目 | 内部名 | 説明 |
|---|---|---|
| Play While On | .on |
入力が 1 の間だけ再生 |
| Trigger | .trigger |
入力が 0 → 1 に立ち上がった瞬間に 1 回再生 |
| Loop | .loop |
入力が 1 になったら再生開始しループ |
Trigger .trigger ▶️
音声再生の手動トリガー:
- Trigger: クリック・スクリプトから再生をトリガーするボタンパラメータ
Cook Every Frame .cookalways 🔄
毎フレームクックの強制:
- Cook Every Frame: オンにすると CHOP を毎フレーム強制クック。下流が常時更新を必要とする場合に使用
Output 1 Page 🔈
Stereo Mode .stereo 🎧
ステレオ 2 チャンネル固定:
- Stereo Mode: オンにすると出力を Front Left / Front Right の 2 チャンネルのみに固定。マルチチャンネル出力デバイスを使わずステレオ再生したい場合に使用
スピーカールーティング (Output 1) 🗺️
各スピーカー出力に再生ファイルのどのチャンネルを流すかを指定。値の意味は下記マッピング表を参照
Front Left .frontleft ⬅️
フロント左スピーカーへの出力チャンネル番号
Front Right .frontright ➡️
フロント右スピーカーへの出力チャンネル番号
Front Center .frontcenter ⏺️
フロントセンタースピーカーへの出力チャンネル番号
Low Frequency .lowfrequency 🔻
サブウーファー(低域)出力へのチャンネル番号
Back Left .backleft ↖️
リア左スピーカーへの出力チャンネル番号
Back Right .backright ↗️
リア右スピーカーへの出力チャンネル番号
Front Left of Center .frontleftcenter ◀️
フロント中央左スピーカーへの出力チャンネル番号
Front Right of Center .frontrightcenter ▶️
フロント中央右スピーカーへの出力チャンネル番号
Back Center .backcenter ⬇️
リア中央スピーカーへの出力チャンネル番号
Output 2 Page 🔉
拡張スピーカールーティング (Output 2) 🗺️
サイド・トップスピーカー(5.1.4 / 7.1.4 など立体音響構成)への出力ルーティング
Side Left .sideleft ⬅️
サイド左スピーカーへの出力チャンネル番号
Side Right .sideright ➡️
サイド右スピーカーへの出力チャンネル番号
Top Center .topcenter ⬆️
トップセンタースピーカーへの出力チャンネル番号
Top Front Left .topfrontleft ↖️
トップフロント左スピーカーへの出力チャンネル番号
Top Front Center .topfrontcenter ⬆️
トップフロント中央スピーカーへの出力チャンネル番号
Top Front Right .topfrontright ↗️
トップフロント右スピーカーへの出力チャンネル番号
Top Back Left .topbackleft ↙️
トップリア左スピーカーへの出力チャンネル番号
Top Back Center .topbackcenter ⬇️
トップリア中央スピーカーへの出力チャンネル番号
Top Back Right .topbackright ↘️
トップリア右スピーカーへの出力チャンネル番号
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: ボタン押下で効果音を再生 🎵
Button COMP → Constant CHOP (trigger) → Audio Play CHOP (Mode: Trigger) → Speaker
- Button COMP の状態を Constant CHOP 経由でチャンネル化
- Audio Play CHOP の Sound File に効果音 .wav を指定
- Mode を「Trigger」に設定し第 1 入力に Constant CHOP を接続
- ボタンを押した瞬間に効果音が 1 回再生される
Example 2: BGM ループ再生と音量フェード 🔊
Constant CHOP (gate) → Audio Play CHOP (Mode: Loop) → LFO CHOP (volume) → 第 2 入力
- Audio Play CHOP の Sound File に BGM 用の長尺 .mp3 を指定
- Mode を「Loop」に設定し第 1 入力にゲート信号を接続
- LFO CHOP / Lag CHOP で生成した 0〜1 の音量カーブを第 2 入力に接続
- 再生中の BGM がフェードイン・フェードアウトする
Example 3: DAT List による複数効果音の切替再生 📋
Table DAT (file list) → Audio Play CHOP (DAT List) → 多チャンネル trigger
- Table DAT に再生したい音声ファイルパスのリストを 1 行 1 ファイルで作成
- Audio Play CHOP の DAT List にその Table DAT のパスを指定
- 第 1 入力にリスト件数分のチャンネルを与え、各チャンネルが対応するファイルを発火
- Python から
op('audioplay1').play(index=2)でも個別再生可能
関連オペレータ 🔗
類似機能OP 🔍
- Audio File In CHOP — 音声ファイルをサンプルストリームとして読み込む(出力デバイスへ流さず処理用)
- Audio Device Out CHOP — 任意の CHOP サンプルをオーディオデバイスへ出力する(ファイル再生機能なし)
組み合わせ推奨OP 🔄
- Constant CHOP — 再生トリガー信号や音量ゲインの定数を供給
- LFO CHOP — 周期的な音量変調・フェードイン/アウトに使用
- Math CHOP — 音量カーブの値域変換やトリガー信号の整形
- Trigger CHOP — イベント信号から再生用トリガーパルスを生成
- Logic CHOP — 複数条件の AND / OR で再生開始タイミングを判定
- Table DAT — DAT List 用のファイルリストを保持
前処理・後処理CHOP 🎯
- 前処理: Constant CHOP、Trigger CHOP、Logic CHOP、LFO CHOP、Math CHOP
- 後処理: Audio Device Out CHOP、Analyze CHOP、Null CHOP
Info CHOP情報 📊
Audio Play 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:
- Sound File パスが正しく、対応形式(.wav / .mp3 / .aif / .mid / .m4a)か確認
- Device パラメータが目的の出力デバイスを指しているか確認、不明なら
defaultを選択 - Mode が「Trigger」のとき、第 1 入力が 0 → 1 へ立ち上がっているか Info CHOP や Trail で観察
❌ Problem: 音量制御が効かない
✅ Solution:
- 第 2 入力(Input 1: Volume)または Python の
.play(volume=val)がパラメータ値を上書きしている可能性、入力を一旦切って Volume パラメータ単独で確認 - 値域は 0(ミュート)〜 1(フル音量)。Math CHOP で範囲外の値を 0〜1 に正規化
- 出力デバイス側のシステム音量が下がっていないか確認
❌ Problem: 特定のスピーカーから音が出ない
✅ Solution:
- Output 1 / Output 2 ページの該当スピーカー出力パラメータが
-1(出力しない)になっていないか確認 - 出力チャンネル番号の意味を再確認: 0 = ファイルのフロント左 / 1 = フロント右 / 2 = リア左 / 3 = リア右 / 4 = センター / 5 = サブ
- オーディオデバイス自体がそのスピーカー出力に対応しているか OS 側のスピーカー構成で確認
❌ Problem: DAT List 経由で目的のファイルが鳴らない
✅ Solution:
- Table DAT のパス記述に絶対パス・相対パスの混在がないか確認
- 第 1 入力のチャンネル数と DAT List の行数の対応関係を確認、足りないチャンネルは発火しない
- Python から
op('audioplay1').play(index=N)で N 行目を直接発火して切り分け
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

