
概要 📖 – LTCタイムコード信号のデコード
LTC In CHOPは、音声信号にエンコードされた LTC タイムコードをデコードして時・分・秒・フレーム値を出力する CHOPです。外部機器との同期や収録音声からのタイムコード復元に使用し、プロジェクト FPS へのアップサンプリングにも対応します。
主な用途 🎯
- LTC(Linear Timecode)音声信号からタイムコード値をデコード
- 外部機器(ビデオデッキ・マルチトラックレコーダ・SMPTE 機器)との同期
- 収録済み音声トラックに記録されたタイムコードからフレーム位置を復元
- 映像・音声・ライブシステム間でのタイムベース統一
- プロジェクト FPS へのアップサンプリングによるタイムライン整合
データフロー 🔄
入力: LTC を含む音声 CHOP
↓
LTC デコーダ(エッジ検出 / ビット復号)
↓
タイムコード成分(時・分・秒・フレーム)
↓
オプションのアップサンプリング(タイムライン FPS へ)
↓
出力: 同期用チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
LTC Page 📋
Input Frame Rate .inputrate 🎞️
LTC 信号がエンコードしている 1 秒あたりのフレーム数
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input Frame Rate | .inputrate |
LTC 信号が 1 秒あたりにエンコードしているフレームメッセージ数。一般的には 24〜30 の範囲で、収録機器側の FPS 設定と一致させる必要がある。 |
Discrete Channels .discrete 🔢
時・分・秒・フレームを個別チャンネルとして出力するかどうか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Discrete Channels | .discrete |
オン: frame / second / minute / hour の 4 チャンネルを出力に追加する。タイムコード成分を個別に参照したい場合に使用。 |
Total LTC Frames .totalframes 🧮
現在時刻までに経過した LTC フレームの累積数
| 項目 | 内部名 | 説明 |
|---|---|---|
| Total LTC Frames | .totalframes |
オン: 現在時刻における LTC フレーム累積数を 1 チャンネルとして出力に追加する。タイムライン FPS にアップサンプリングしている場合、この値も再サンプリング後の値に変化する。
|
Total Seconds .totalsec ⏲️
経過秒数の累積を 1 チャンネルで出力するかどうか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Total Seconds | .totalsec |
オン: 累積経過秒数を 1 チャンネルとして出力に追加する。長尺収録の進行管理や経過時間表示に使用。 |
Up-sample to Timeline FPS .upsample ⬆️
プロジェクト FPS への補間アップサンプリング
| 項目 | 内部名 | 説明 |
|---|---|---|
| Up-sample to Timeline FPS | .upsample |
オン: LTC のフレームレートからプロジェクトの FPS までアップサンプリングし、タイムライン側で滑らかに参照できる値に変換する。
|
User Fields .userfields 🏷️
LTC のユーザフィールド(任意エンコード領域)をチャンネル化するかどうか
| 項目 | 内部名 | 説明 |
|---|---|---|
| User Fields | .userfields |
オン: 音声信号にエンコードされたカスタムユーザフィールドをチャンネルとして出力する。シーン番号やショット ID などの付加情報を埋め込んでいる場合に有効。 |
Debug Channels .debugchans 🛠️
LTC デコード過程の中間値をチャンネルとして可視化するためのデバッグ出力
Debug Channels .debugchans 🛠️
– オン: LTC デコードの内部状態を以下の 4 チャンネルとして出力に追加
– 信号品質の確認やデコード失敗時のトラブルシューティングに使用
- quantized — 入力音声信号を on / off レベルに二値化した生波形
- bits — 二値化信号からデコードされたビット列(ビットはエッジ列から復号、生レベルそのものではない)
- ones_count — 連続デコードされた 1 ビットの累積数(12 連続でメッセージ末尾を示す)
- decode_count — デコードに成功した LTC フレームメッセージの累積数
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: 外部ビデオデッキとのタイムコード同期 🎬
Audio Device In CHOP (LTC track) → LTC In CHOP → Discrete Channels (frame/second/minute/hour) → 同期用ロジック
- ビデオデッキの LTC 出力をオーディオインターフェースの 1 ch に接続
- Audio Device In CHOP で LTC ch を取得し LTC In CHOP に渡す
- Input Frame Rate をデッキ側の FPS(例: 30)に合わせる
- Discrete Channels をオンにして hour / minute / second / frame を取得
- 取得値で映像再生位置やイベントトリガを駆動
Example 2: 収録音声トラックからのフレーム位置復元 📼
File In CHOP (録音された LTC 音声) → LTC In CHOP → Up-sample to Timeline FPS → タイムライン位置
- LTC が録音されている音声ファイルを File In CHOP で読み込み
- LTC In CHOP に渡し Input Frame Rate を収録時の値に設定
- Up-sample to Timeline FPS をオンにしてプロジェクト FPS へ整合
- Total LTC Frames チャンネルでタイムライン位置にマップ
Example 3: ライブシステムでの SMPTE マスタークロック追従 🎚️
SMPTE 機器 → Audio Device In CHOP → LTC In CHOP → Total Seconds → 各サブシステムへ配信
- SMPTE マスター機器の LTC 出力を音声入力に接続
- LTC In CHOP で Total Seconds をオンにして秒単位の累積値を取得
- 他サブシステム(照明・映像・MIDI)に同期信号として配信
- Debug Channels をオンにして decode_count を監視し同期失敗を即検知
関連オペレータ 🔗
類似機能OP 🔍
- MIDI In CHOP — MIDI Time Code(MTC)を扱うタイムコード受信オペレータ
- Audio Device In CHOP — LTC In の上流で LTC 音声信号を取り込む音声入力 CHOP
組み合わせ推奨OP 🔄
- Audio Device In CHOP — LTC が含まれる音声を取り込む直接の上流
- File In CHOP — 録音済み LTC 音声ファイルから値をデコード
- Math CHOP — デコードされたフレーム値のオフセット補正・スケーリング
- Trigger CHOP — 特定タイムコード値到達時のイベント発火
- Logic CHOP — decode_count 増加の監視やタイムコード閾値判定
前処理・後処理CHOP 🎯
Info CHOP情報 📊
LTC In 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: decode_count が増えずタイムコードが取れない
✅ Solution:
- Input Frame Rate が送信側機器の FPS と一致しているか確認
- Audio Device In CHOP の入力レベルが極端に低い / 高くないか確認し、必要なら前段で Math CHOP で振幅を整える
- Debug Channels をオンにして
quantized/bitsが正しく振動しているか確認
❌ Problem: Total LTC Frames の値が想定値とずれる
✅ Solution:
- Up-sample to Timeline FPS をオンにしている場合、累積フレーム値が再サンプリング後の値に変化する仕様
- 本来の LTC フレームカウントが必要な場合は Up-sample をオフにして比較
- Input Frame Rate の設定値が信号と一致しているか再確認
❌ Problem: Discrete Channels の hour / minute / second / frame が一部欠落している
✅ Solution:
- Discrete Channels パラメータ自体がオンか確認
- Scope(Common Page)でチャンネル絞り込みがかかっていないか確認
- Debug Channels の
ones_countがメッセージ末尾を示す 12 に到達しているか確認し、信号が完結していない場合は前段の音声品質を見直す
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

