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

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

MIDI Out CHOP の MIDI 送信機能を示す図

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

概要 📖 – チャンネルから 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 ファイル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 DestinationFile のときのみ有効

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
  1. Audio Device In CHOP でマイク入力を取得
  2. Analyze CHOP の Function を Peak に設定し瞬時ピーク値を抽出
  3. Logic CHOP で閾値超えを 0/1 に変換し、Math CHOP で note 番号にマッピング
  4. MIDI Out CHOP の Note Name を note に設定して外部シンセへ送信

Example 2: センサー値を MIDI CC で DAW に送る 🎚️

Serial CHOP → Math CHOP (Range 変換) → Rename CHOP (cc1 等にリネーム) → MIDI Out CHOP
  1. Serial CHOP でアナログセンサー値を取得
  2. Math CHOP で From Range / To Range を 0-1 に正規化
  3. Rename CHOP でチャンネル名を cc1 / cc2 に変更
  4. MIDI Out CHOP の Controller Name を cc、Normalize を 0 to 1 に設定して DAW に送信

Example 3: TouchDesigner から MIDI ファイルに演奏を保存 💾

LFO CHOP / シーケンス CHOP → MIDI Out CHOP (Destination=File) → .mid ファイル
  1. LFO CHOP やパターン CHOP で演奏データを生成
  2. MIDI Out CHOP の MIDI Destination を File に設定
  3. MIDI File パラメータに保存先 .mid ファイルパスを指定
  4. 演奏終了後に 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 🎯


Info CHOP情報 📊

MIDI Out 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: 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 パルスを押すまでファイルは保存されない(このパルスが必須)

参考資料 📚

その他 🔗

公式リソース 📖

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