
概要 📖 – チャンネルから MIDI イベントを送信
MIDI Out CHOPは、入力チャンネルを MIDI イベント(Note / CC / Program Change / Pitch / Timecode)に変換して MIDI 機器または .mid ファイルへ送信する CHOPです。チャンネル名のプレフィックスでイベント種別を判別し、Device 出力とファイル書き出しの両方に対応します。
主な用途 🎯
- チャンネル値を MIDI Note On/Off メッセージとして外部機器へ送信
- コントローラ値(CC)として MIDI 機器に渡し、シンセや DAW の制御信号にする
- プログラムチェンジ・ピッチホイール・アフタータッチ等の演奏表現の出力
- MIDI Timecode (MTC) によるタイムライン同期信号の送信
- MIDI ファイル (.mid) への演奏データ書き出し(オフライン保存)
データフロー 🔄
入力: 名前付きチャンネル(note / controller / pitch 等)
↓
Channel Prefix で識別
↓
MIDI イベント変換(Note / CC / PC / Pitch / Aftertouch)
↓
Normalize / 14-bit 拡張
↓
MIDI Destination(Device or File)
↓
出力: MIDI 機器 or .mid ファイル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Dest Page 📁
Active .active 🎛️
MIDI Out CHOP の有効・無効:
- Active: MIDI Out CHOP の MIDI 送信を有効化または無効化するトグル
MIDI Destination .destination 🎯
MIDI イベントの送信先(デバイスまたはファイル)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Device | .device |
Device Table DAT で指定された MIDI 機器に送信(リアルタイム) |
| File | .file |
MIDI ファイル (.mid) に書き出し(オフライン保存) |
Device Settings .device_settings 🔌
MIDI デバイス出力時の参照設定
Device Table .device 📋
– 接続可能な MIDI デバイス一覧を保持するデバイステーブル DAT のパス
– このテーブル内の id 列を Device ID パラメータと突き合わせて出力先を確定
Device ID .id 🆔
– Device Table DAT 内のどの行を出力先とするかを指定する整数 ID
– 複数の MIDI 機器が接続されているとき、ID 切替で送信先を選択
One Based Index .onebased 🔢
– チャンネル番号や Device ID のインデックスを 1 始まりに切替
– デフォルトは 0 始まり。DAW やハードウェアの表記に合わせて調整
File Settings .file_settings 💾
MIDI ファイル出力時の設定
MIDI File .file 📄
– 出力 MIDI ファイル (.mid) のパスとファイル名
– MIDI Destination が File のときのみ有効
Write MIDI File .writefile 📝
– 入力された全 MIDI イベントを指定ファイルに書き出すパルスボタン
– 録音停止後に押して .mid ファイルとして保存
Channel Prefix .prefix 🔤
チャンネル名からチャンネル番号を抽出する接頭辞:
- Channel Prefix: 入力チャンネル名の接頭辞(例:
ch)。ch1note44のようなチャンネル名から番号1と note 番号44を抽出
Cook Every Frame .cookalways 🔁
毎フレームクックを強制:
- Cook Every Frame: 毎フレームクックを強制するトグル。グラフィックス Viewer に繋がっていないと CHOP がクックされない問題を回避するため、通常はオン推奨
Output Page 📤
Automatic Note Off .autonoteoff 🎵
再生開始・終了時に All Note Off を自動送信するタイミング
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
自動 All Note Off を送信しない |
| At Playback Start | .start |
再生開始時に All Note Off を送信 |
| At Playback End | .end |
再生終了時に All Note Off を送信 |
| At Playback Start and End | .both |
再生開始時と終了時の両方で All Note Off を送信 |
Reset Pulses .reset_pulses ⏹️
全 MIDI チャンネルへリセット系メッセージを即時送信するパルス群
All Notes Off .reset 🔇
– 全 MIDI チャンネルに All Notes Off メッセージを送信するパルスボタン
– 鳴り続けるノートを強制停止したいとき(ハングアップ対策)に使用
All Volume Off .volumeoff 🔈
– 全 MIDI チャンネルにボリューム最小(オフ)相当のメッセージを送信
– 一斉ミュート用途
All Volume On .volumeon 🔊
– 全 MIDI チャンネルにボリューム復帰メッセージを送信
– All Volume Off で下げたボリュームを戻すパルス
Send Start/Stop/Continue Events .startstop ⏯️
Frame Bar 連動の MIDI Start/Stop/Continue 送信:
- Send Start/Stop/Continue Events: Frame Bar の再生開始・停止に合わせて MIDI Start / Stop / Continue メッセージを送信するトグル。DAW やシーケンサとのトランスポート同期に利用
MIDI Timecode .timecode ⏱️
MIDI Timecode (MTC) の送信設定
Send MIDI Timecode .sendmtc 📡
– 有効化すると MIDI Timecode (MTC) を quarter frame メッセージのストリームとして送信
– DAW や映像同期機器とのタイムライン同期に使用
Timecode Object / CHOP / DAT .timecodeop 🎬
– 送信する Timecode 値の参照先
– 参照可能なソース: hour / minute / second / frame チャンネルを持つ CHOP、最初のセルに timecode 文字列を持つ DAT、または Timecode クラスのオブジェクト
Note Page 📁
Note / Pressure Channel Names .note_names 🎹
Note / Aftertouch / Pressure / Pitch Wheel に対応するチャンネル名のベース
Note Name .notename 🎵
– Note チャンネルのベース名(例: note)
– 名前の後に番号がある場合(note44)はそれを note 番号として解釈、無い場合はチャンネル値を note 番号として扱う
Aftertouch Name .aftername 👆
– Polyphonic Aftertouch(鍵盤毎の押圧)チャンネルのベース名
– 個別ノートに対する押圧表現に使用
Pressure Name .pressname 🤚
– Channel Pressure(チャンネル全体の押圧)チャンネルのベース名
– 全ノートに一括適用される押圧表現
Pitch Wheel Name .pitchname 🎚️
– Pitch Wheel(ピッチベンド)チャンネルのベース名
– 14-bit 解像度で連続的なピッチ変化を送信
Normalize .notenorm 📐
Note 系チャンネルの値域変換
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .off |
値をそのまま MIDI 値(0-127)として扱う |
| 0 to 1 | .0to1 |
0-1 の範囲を MIDI 値 0-127 にマッピング |
Control Page 📁
Controller Name .controlname 🎛️
Control Change チャンネルのベース名:
- Controller Name: Control Change(CC)として送信するチャンネルのベース名(例:
cc)
Controller Format .controlformat 🔢
CC イベントのビット解像度
| 項目 | 内部名 | 説明 |
|---|---|---|
| 7 bit Controllers | .7bit |
通常の 7-bit CC メッセージ(0-127)を送信 |
| 14 bit Controllers | .14bit |
MSB と LSB の 2 つの CC をペアにして 14-bit 高解像度(0-16383)を送信 |
Normalize .controlnorm 📐
CC 値の範囲変換
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .off |
値をそのまま MIDI 値として扱う |
| 0 to 1 | .0to1 |
0-1 の範囲を MIDI 値 0-127 にマッピング |
| -1 to 1 | .-1to1 |
-1〜+1 の範囲を MIDI 値 0-127 にマッピング(中央が 64) |
| On/Off | .onoff |
0 / 非 0 を MIDI 値 0 / 127 に二値化 |
Program Change .progname 🎼
Program Change チャンネルのベース名:
- Program Change: Program Change として送信するチャンネルのベース名。値で音色プリセットを切替
Bar Ramp / Tick Settings .bar_ticks 🥁
MIDI Clock 送信のためのテンポランプとティック数
Bar Ramp Name .barname 📈
– 4 拍 1 小節分の 0→1 ランプを供給するチャンネルのベース名
– このランプの周期から MIDI Clock のティック頻度が決定される
Ticks per Bar .barticks 🔢
– 1 小節あたりのティック数(デフォルト 96 = 4 拍 × 24 ticks/拍)
– MIDI Clock 規格に合わせて設定
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: オーディオピークから MIDI ノート発火 🎵
Audio Device In CHOP → Analyze CHOP (Peak) → Logic CHOP (閾値) → Math CHOP (note 番号化) → MIDI Out CHOP
- Audio Device In CHOP でマイク入力を取得
- Analyze CHOP の Function を Peak に設定し瞬時ピーク値を抽出
- Logic CHOP で閾値超えを 0/1 に変換し、Math CHOP で note 番号にマッピング
- MIDI Out CHOP の Note Name を
noteに設定して外部シンセへ送信
Example 2: センサー値を MIDI CC で DAW に送る 🎚️
Serial CHOP → Math CHOP (Range 変換) → Rename CHOP (cc1 等にリネーム) → MIDI Out CHOP
- Serial CHOP でアナログセンサー値を取得
- Math CHOP で From Range / To Range を 0-1 に正規化
- Rename CHOP でチャンネル名を
cc1/cc2に変更 - MIDI Out CHOP の Controller Name を
cc、Normalize を0 to 1に設定して DAW に送信
Example 3: TouchDesigner から MIDI ファイルに演奏を保存 💾
LFO CHOP / シーケンス CHOP → MIDI Out CHOP (Destination=File) → .mid ファイル
- LFO CHOP やパターン CHOP で演奏データを生成
- MIDI Out CHOP の MIDI Destination を
Fileに設定 - MIDI File パラメータに保存先 .mid ファイルパスを指定
- 演奏終了後に Write MIDI File パルスを押して MIDI ファイルとして書き出し
関連オペレータ 🔗
類似機能OP 🔍
- MIDI In CHOP — 外部 MIDI 機器からの入力を CHOP として受信、Out の対概念
- MIDI Event DAT — MIDI イベントを行ベースで送受信、SysEx 等の任意メッセージにも対応
- OSC Out CHOP — OSC プロトコルでチャンネル値を送信、MIDI より高解像度・高速の代替
組み合わせ推奨OP 🔄
- Math CHOP — MIDI 値域 (0-127) へのスケーリング・整数化
- Logic CHOP — 閾値判定でノートのオン・オフ条件を作成
- Trigger CHOP — イベントの立ち上がり検出で Note On パルスを生成
- Rename CHOP — チャンネル名を MIDI Out CHOP の命名規約 (
ch1note44等) に整形 - Analyze CHOP — オーディオピークから MIDI ノート発火のための統計値抽出
前処理・後処理CHOP 🎯
- 前処理: Math CHOP、Logic CHOP、Filter CHOP、Rename CHOP、Trigger CHOP
- 後処理: MIDI In CHOP、Null CHOP、Trail CHOP
Info CHOP情報 📊
MIDI Out 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: MIDI 機器に何も送信されない
✅ Solution:
- Active パラメータがオンになっているか確認
- MIDI Destination が
Deviceで、Device Table DAT がデバイス一覧を保持する正しいテーブル DAT を指しているか確認 - Cook Every Frame をオンにし、ビューア未接続でも CHOP がクックされる状態にする
❌ Problem: ノートが鳴り続けて止まらない(ハングアップ)
✅ Solution:
- Automatic Note Off を
At Playback Start and Endに設定し再生境界で自動オフ - All Notes Off パルスを手動で押して全チャンネルを強制停止
- 前段の Logic CHOP で Note Off 条件(値が 0 になる瞬間)を確実に作る
❌ Problem: CC 値が想定の解像度・範囲で送信されない
✅ Solution:
- Controller Format が
7 bit/14 bitどちらに設定されているか確認 - Normalize の選択肢(None / 0 to 1 / -1 to 1 / On/Off)と入力チャンネルの値域を一致させる
- 前段の Math CHOP で From Range / To Range を使い MIDI 値域に明示変換
❌ Problem: MIDI ファイルが書き出されない
✅ Solution:
- MIDI Destination を
Fileに切替 - MIDI File パラメータに有効な書込み可能パス(.mid 拡張子)を設定
- 演奏入力後に Write MIDI File パルスを押すまでファイルは保存されない(このパルスが必須)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

