
概要 📖 – MIDI入力をマップする
MIDI In Map CHOPは、MIDI Device Mapper でマッピングされたスライダー・ボタンチャンネルを取り込む CHOPです。機材ごとの MIDI 配線差を Mapper 側で吸収し、s[1-16] や b[1-16] のレンジ記法でポータブルにコントローラを取り込めます。
主な用途 🎯
- MIDI Device Mapper でマッピング済みのスライダー・ボタンチャンネルを取り込み
- 機材ごとの MIDI 配線差を Mapper 側で吸収しポータブルなパッチを構築
- レンジ記法 (
s[1-16]/b[1-16]) で複数コントローラを一括取得 - ボタン入力に Velocity を含めるか切替えてベロシティ感応な制御を実装
- スライダーイベントのキューイングで取りこぼしを抑えた高分解能な値変化の捕捉
データフロー 🔄
入力: 物理 MIDI デバイス
↓
MIDI Device Mapper Dialog(機材 →s1/s2…/b1/b2…に抽象化)
↓
MIDI In Map CHOP(Sliders / Buttons パターン抽出)
↓
出力: スライダー / ボタンチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
MidiInMap Page 🎹
Device Table .device 📋
MIDI デバイス定義 Table DAT への参照:
- Device Table: MIDI デバイス定義を保持する Table DAT のパス
Device ID .id 🆔
使用するデバイスの ID 指定:
- Device ID: Device Table の中から実際に取り込みに使うデバイスを特定する ID
Sliders .sliders 🎚️
MIDI Mapper から取り込むスライダー指定:
- Sliders パターン: 取り込むスライダーを指定する文字列。例:
s[1-16] s20 s[32-40]で 1〜16 番、20 番、32〜40 番のスライダーを一括取得
Buttons .buttons 🔘
MIDI Mapper から取り込むボタン指定:
- Buttons パターン: 取り込むボタンを指定する文字列。例:
b[1-16] b20 b[32-40]で 1〜16 番、20 番、32〜40 番のボタンを一括取得
Include Velocity in Buttons .bvelocity 💢
ボタンチャンネルに Velocity を含める設定:
- Include Velocity in Buttons: オン: ボタンの押し下げ強度(Velocity)が利用可能な場合にチャンネル値として反映。オフ: 0/1 のオン・オフのみ
Queue Slider Events .squeue 📥
スライダーイベントのキューイング:
- Queue Slider Events: スライダーの値変化イベントをキューに溜め、フレーム間での取りこぼしを抑える設定
Channel Page 📊
Sample Rate .rate ⏱️
出力チャンネルのサンプルレート (samples/second):
- Sample Rate: 出力チャンネルのサンプルレート (samples/second)
Extend Left .left ⬅️
範囲の左側(開始より前)でのチャンネル値の振る舞い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
現在のチャンネル値を保持 |
| Slope | .slope |
チャンネル開始前まで傾きを延長 |
| Cycle | .cycle |
チャンネルを繰り返しサイクル |
| Mirror | .mirror |
1 サイクルごとに反転しながら繰り返し |
| Default Value | .default |
Default Value パラメータの値を使用 |
Extend Right .right ➡️
範囲の右側(終了より後)でのチャンネル値の振る舞い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
現在のチャンネル値を保持 |
| Slope | .slope |
チャンネル終了後も傾きを延長 |
| Cycle | .cycle |
チャンネルを繰り返しサイクル |
| Mirror | .mirror |
1 サイクルごとに反転しながら繰り返し |
| Default Value | .default |
Default Value パラメータの値を使用 |
Default Value .defval 🔢
Default Value 拡張時の値:
- Default Value: Extend 条件が
Default Valueのときに採用される一定値
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 コントローラのフェーダー 16 本でレイヤーミキサー 🎚️
MIDI Device Mapper → MIDI In Map CHOP (sliders=s[1-16]) → Math CHOP (To Range 0-1) → Composite TOP の opacity
ハードウェア MIDI コントローラのフェーダー 16 本を Mapper で s1〜s16 に割り当て、MIDI In Map CHOP のレンジ記法で一括取得します。
- Dialogs → MIDI Device Mapper で物理コントローラのフェーダーを
s1〜s16にマッピング - MIDI In Map CHOP の Sliders に
s[1-16]を入力 - Math CHOP で 0-127 を 0-1 に正規化
- Composite TOP の各レイヤー opacity に Export して 16 ch ミキサーとして利用
Example 2: パッド入力でVelocity感応トリガー 🥁
MIDI Device Mapper → MIDI In Map CHOP (buttons=b[1-16], bvelocity=on) → Trigger CHOP → パーティクル emit
ベロシティ対応のパッドコントローラを Velocity 込みで取り込み、強さに応じた演出を作ります。
- MIDI Device Mapper でパッド 16 個を
b1〜b16にマッピング - MIDI In Map CHOP の Buttons に
b[1-16]、Include Velocity in Buttons をオン - Trigger CHOP でパッドの押下を検出してエンベロープを起動
- Velocity 値(0-127)をパーティクル emit 数や輝度にマッピング
Example 3: 別機材でも同じパッチを動かすポータブルセットアップ 🔄
(機材A or 機材B) → MIDI Device Mapper (機材ごと再マッピング) → MIDI In Map CHOP (s[1-8] b[1-8] 共通) → 同じパッチ
MIDI 配線が異なる複数機材でも、Mapper 側でだけ再割当てすれば MIDI In Map CHOP より下流のパッチは無変更で動作します。
- 本番機材 A 用に MIDI Device Mapper でフェーダー →
s1〜s8、ボタン →b1〜b8をマッピング - 予備機材 B 用にも同じ
s1〜s8/b1〜b8へマッピングを作成 - MIDI In Map CHOP の Sliders / Buttons は
s[1-8]/b[1-8]固定のまま運用 - 現場で機材切替時は Mapper のプロファイルを差し替えるだけで下流パッチを変更せず復帰
関連オペレータ 🔗
類似機能OP 🔍
- MIDI In CHOP — MIDI チャンネル番号やコントローラ番号で直接アクセス、機材間ポータビリティは低い
- MIDI In DAT — MIDI イベントを DAT テーブルとして取得、ノートオン/オフ等のメッセージ単位で扱う
組み合わせ推奨OP 🔄
- Math CHOP — 0-127 の MIDI 値を 0-1 等の作業レンジに正規化
- Filter CHOP — フェーダーのジッタを後段でスムージング
- Trigger CHOP — ボタン入力でエンベロープを起動
- Logic CHOP — ボタン値の組合せで AND / OR 等の論理判定
- MIDI Out CHOP — 受け取った値を別のデバイスへ送り返してフィードバック
前処理・後処理CHOP 🎯
Info CHOP情報 📊
MIDI In Map 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:
- Dialogs → MIDI Device Mapper で物理コントローラが
s1/s2…やb1/b2…にマッピングされているか確認 - Device Table と Device ID が実機材と一致しているかを確認
- Sliders / Buttons パターン(例:
s[1-16])と Mapper 側の番号がレンジに含まれているか確認
❌ Problem: ボタンの押し下げ強度(Velocity)が反映されない
✅ Solution:
- Include Velocity in Buttons をオンにする
- ベロシティ対応のコントローラかを確認(一部の小型パッドはオン/オフのみ)
- 出力範囲は 0-127 のため、後段で Math CHOP の To Range で 0-1 等に正規化
❌ Problem: 高速にフェーダーを動かすと値がカクつく / 取りこぼす
✅ Solution:
- Queue Slider Events をオンにしてフレーム間のイベントを取りこぼさないようにする
- Sample Rate を上げて時間分解能を確保
- 後段で Filter CHOP によるスムージングを併用
❌ Problem: 別の機材につなぎ替えたらチャンネル番号がズレた
✅ Solution:
- MIDI In Map CHOP は機材依存を Mapper が吸収する設計のため、MIDI In CHOP 直結ではなく Mapper 経由を使う
- 新機材ごとに Dialogs → MIDI Device Mapper でプロファイルを作成し、共通の
s1/s2…/b1/b2…番号に再マッピング - Sliders / Buttons パラメータは固定のまま、Mapper のプロファイルだけ切替えてポータブル運用
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

