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

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

Beat CHOP のビート同期ランプ出力を示す図

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

概要 📖 – 拍に同期してパルスを出す

Beat CHOPは、Time COMP のテンポに同期した 0-1 ランプ・パルス・サイン波などを Bar / Beat / Sixteenth 周期で生成する CHOPです。Update Global によってプロジェクト全体で 1 つのマスタービートソースを確立でき、複数の Beat CHOP を Locked to Global モードで同期させることでオーディオビジュアル演出のテンポ基盤として機能します。

主な用途 🎯

  • Time COMP のテンポ(BPM)に同期した 0-1 ランプ波生成(VJ・映像演出のテンポ駆動)
  • 1 拍ごとの Pulse / Sine 波形による周期的アニメーション制御
  • 現在の Bar / Beat / Sixteenths インデックスをチャンネルとして取得
  • Multiples + Shift Step による複数チャンネルの位相ずらし(ステップシーケンサ的活用)
  • Update Global でプロジェクト全体のマスタービートソースを 1 個確立し全 Beat CHOP を同期

データフロー 🔄

入力: Time COMP の BPM / Bar / Beat

Reference Operator で参照

Period(拍数)でランプ周期決定

Multiples / Shift Step で複数チャンネル展開

Output Page で波形種別を toggle

出力: 同期ランプ / Pulse / Sine / Count / BPM チャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Beat Page 🥁

Reference Operator .reference_node 🔗

Beat CHOP が時間設定を参照する Time COMP の指定:

  • Reference Operator パス: 時間設定を参照する Time COMP のパス。時間は timepath("reference_node") で取得される Time COMP によって定義される

Use Reference Time Slice .reftimeslice ⏱️

Reference Node のタイムスライスを使用するかどうか:

  • オン: Reference Node が使用しているタイムスライスをそのまま使用
  • オフ: Beat CHOP 自身のタイムスライスを使用

Play Mode .playmode ▶️

出力の再生方法を指定するモードメニュー

項目 内部名 説明
Locked to Global .global Global ビートソースに同期。Update Global がオンの Beat CHOP に追従
Local Sequential .local タイムライン位置に関係なく連続出力を生成(ローカル独立再生)

Period .period 🔁

ランプ 1 サイクルを生成するのに必要な拍数:

  • Period(拍数): ランプ 1 サイクルあたりの拍数。プルダウンメニューから一般的な拍数を選択するか、数値で直接指定

Multiples .multiples 🔢

生成するチャンネル数:

  • Multiples: 出力チャンネル数。複数のランプを並行して生成したいときに使用

Shift Offset .shiftoffset

全チャンネルを一律に時間方向へ遅延させるオフセット:

  • Shift Offset: 全チャンネルを遅延させる量。0 = 変化なし、0.5 = 1 周期の 50% 後

Shift Step .shiftstep 🪜

チャンネル間の段階的な位相ずらし:

  • Shift Step: 1 + Multiples = 5 のとき、各ランプチャンネルは前のチャンネルから 1/5 サイクル遅れる。0.1 なら 1/50 サイクルの遅延。チャンネル間で段階的にずらしたいときに使用

Random Offset .randoffset 🎲

各ランプを完全周期からランダムに時間シフトさせる量:

  • Random Offset: 各ランプを完全な周期から相対的にランダムシフトさせる量

Random Seed .randseed 🌱

ランダムオフセットのシード値:

  • Random Seed: 値を変更すると Random Offset で生成されるオフセットのセットが変化

Reset Condition .resetcondition 🔄

Reset 入力でチャンネルがリセットされる条件

項目 内部名 説明
Off to On .offtoon Reset 入力が off → on になった瞬間にリセット
While On .on Reset 入力が on の間リセット状態を保持。入力が off になるまでリセット値を保持
On to Off .ontooff Reset 入力が on → off になった瞬間にリセット
While Off .off Reset 入力が off の間リセット状態を保持。入力が on になるまでリセット値を保持

Reset Bar Value .resetbarvalue 📐

Reset Condition 発火時にジャンプする Bar 値:

  • Reset Bar Value: Reset Condition が満たされたとき Beat CHOP がジャンプする Bar の値。Beat 値はこの値の小数部から導出される

Wait after Reset .resetwait ⏸️

While On Reset Condition 使用時のリセット後の待機挙動:

  • オン: 次の Bar が始まるまでチャンネルを 0 で保持し、その後出力を再開
  • オフ: リセット条件が解除された直後から出力を再開

Reset .reset 🔘

ランプを 0 にリセットするボタン:

  • Reset: オンの間ランプを 0 にリセット。Beat CHOP の入力が 0 を超えているときも 0 になる

Reset Pulse .resetpulse 💥

ランプを瞬時に 0 にリセットするパルスボタン:

  • Reset Pulse: ランプを瞬時に 0 にリセット

Update Global .updateglobal 🌐

プロジェクト全体のマスタービートソースとして指定するスイッチ:

  • Update Global: オンにすると、その Beat CHOP がプロジェクト全体のマスタービートソースとなる。/local/master_beat に参照 Beat CHOP が作成され(既存なら再利用)、他の Beat CHOP は Play Mode: Locked to Global でこれに同期可能
  • 1 toe につき 1 個のみ: Update Global がオンのマスター Beat CHOP は 1 toe ファイル内に正確に 1 個のみ存在できる
  • $MASTER_BEAT 変数: $MASTER_BEAT 変数は Update Global がオンの Beat CHOP のパスにセットされる

Output Page 📤

出力チャンネル切替トグル 🎚️

Output Page では出力するチャンネル種別を個別にオン/オフで切り替える。複数同時オン可能で、それぞれが別チャンネルとして出力される

Ramp .ramp 📈
– Period ごとに 0 から 1 まで上昇するランプ波を出力
– 一般的なテンポ駆動アニメーションで最も多用される基本波形

Pulse .pulse 📊
– Period ごとに 1 サンプルだけ 1 となるパルス波を出力
– トリガー駆動・拍頭の検出に使用

Sine .sine 🌊
– Period ごとに 1 サイクルのサイン波を出力
– 連続的・滑らかな揺らぎの周期信号として活用

Count .count 🔢
– Period ごとにカウント値を 1 増加
– 経過拍数の累積カウンタとして使用

Count+Ramp .countramp 🪜
– Bar がリセットされるまでカウントアップするランプ
– Bar 単位の累積進捗値として活用

Bar .bar 📏
– 現在の Bar(小節)番号を出力
– 楽曲構造のセクション切替判定に使用

Beat .beat 🥁
– 現在の Beat(拍)番号を出力
– 拍頭イベント駆動に使用

Sixteenths .sixteenths 🎵
– 現在の Sixteenths(16 分音符)番号を出力
– 細かいリズム分割の同期に使用

Ramp Bar .rampbar 📈
– Bar ごとに 0 から 1 まで上昇するランプ波を出力
– Bar 1 周期に対する正規化された進捗値

Ramp Beat .rampbeat 📈
– Beat ごとに 0 から 1 まで上昇するランプ波を出力
– Beat 1 周期に対する正規化された進捗値

BPM .bpm 🎼
– 現在の BPM(Beats Per Minute)値を出力
– テンポ値そのものをチャンネル経由で他オペレータへ供給


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: テンポ同期した映像エフェクトの強度ランプ 🎬

Beat CHOP (Ramp, Period=1) → Math CHOP (To Range [0, 1.5]) → Level TOP (opacity)

Beat CHOP の Ramp 出力を映像のフェードイン・フェードアウトに使い、楽曲のテンポと完全同期したリズミカルな視覚演出を実現する基本パターン。

  1. Beat CHOP を作成し、Reference Operator に /local/time 等の Time COMP を指定
  2. Output Page で Ramp をオンにし、Period を 1(拍ごとに 1 サイクル)に設定
  3. 後段の Math CHOP で出力レンジを必要な値域にスケーリング
  4. Level TOP の opacity パラメータに Export して映像強度を拍に同期

Example 2: ステップシーケンサ風の位相ずらしランプ 🪜

Beat CHOP (Multiples=8, Shift Step=0.125) → Trigger CHOP → Audio Synth

Multiples で 8 チャンネルを生成し、Shift Step で各チャンネルを 1/8 拍ずつずらすことで、8 ステップのシーケンサ的なトリガー信号を 1 オペレータで構築できる。

  1. Beat CHOP の Multiples8 に設定(8 チャンネル生成)
  2. Shift Step0.125(= 1/8 拍)に設定し各チャンネルを段階的にずらす
  3. Output Page で Pulse をオンにして拍頭でのみ 1 となる信号を生成
  4. 後段の Trigger CHOP でエンベロープを起動しシーケンス再生

Example 3: Update Global でプロジェクト全体のテンポ基盤を構築 🌐

Master Beat CHOP (Update Global=On) → 各セクションの Beat CHOP (Locked to Global) → 全体同期

1 個のマスター Beat CHOP に Update Global を設定し、他の Beat CHOP を Locked to Global モードにすることで、プロジェクト全体のテンポを 1 箇所で集中管理できる。

  1. プロジェクトの基準となる Beat CHOP を 1 個作成し Update Global をオン
  2. 他のセクション(VJ・照明・サウンド)で個別の Beat CHOP を配置
  3. それらの Play ModeLocked to Global に設定
  4. マスターの BPM 変更が全 Beat CHOP に瞬時伝播し、プロジェクト全体が同期

関連オペレータ 🔗

類似機能OP 🔍

  • LFO CHOP — 周波数指定での周期波形生成(Beat とは異なり Time COMP 同期ではなく Hz 直接指定)
  • Pattern CHOP — サンプル数指定での波形パターン生成(拍同期なしの単発パターン)
  • Timer CHOP — 秒単位のタイマー駆動信号生成(Beat より自由なタイミング制御)

組み合わせ推奨OP 🔄

  • Math CHOP — Beat の 0-1 ランプを任意の値域にスケーリング・オフセット
  • Filter CHOP — Beat の Pulse / Ramp を時間方向にスムージングして滑らかなアニメーション信号化
  • Trigger CHOP — Beat の Pulse 出力でエンベロープを起動(拍頭でアタック・リリース駆動)
  • Logic CHOP — Beat の Bar / Beat / Sixteenths インデックスを閾値判定し条件分岐に活用
  • Switch CHOP — Beat の Bar 値で複数信号ソースを切替(楽曲セクションごとの演出切替)

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Beat 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: Beat CHOP の出力が他の Beat CHOP と同期しない
✅ Solution:

  • Play Mode が Locked to Global になっているか確認(Local Sequential だと独立再生)
  • プロジェクト内に Update Global がオンの Beat CHOP が 1 個だけ存在することを確認(マスタービートソース)
  • 両 Beat CHOP の Reference Operator が同じ Time COMP を参照しているか確認

❌ Problem: Period を変えても出力が想定通りにならない
✅ Solution:

  • Period の単位は「拍数」であり、秒数ではないことを確認(テンポに依存)
  • Reference Operator の Time COMP の BPM 設定が想定と一致しているか確認
  • Multiples + Shift Step の組合せで生成されるチャンネル数と位相関係を再計算

❌ Problem: Reset が想定したタイミングで動作しない
✅ Solution:

  • Reset Condition のモード(Off to On / While On / On to Off / While Off)と入力信号の遷移パターンが整合しているか確認
  • Reset Bar Value を確認し、ジャンプ先の Bar 値が意図通りか検証
  • While On モードで Wait after Reset をオンにすると、次の Bar 開始まで 0 保持となる挙動の差に注意

❌ Problem: Bar / Beat / Sixteenths の値が期待と違う
✅ Solution:

  • Reference Operator の Time COMP に正しい Tempo / Time Signature 値が設定されているか確認
  • Bar は 1 から開始するか 0 から開始するかは Time COMP の設定に従うため、参照先の仕様を確認
  • 前段に Math CHOP を入れて値域変換やインデックス補正を行う

参考資料 📚

その他 🔗

公式リソース 📖

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