
概要 📖 – SMPTE タイムコード生成と同期
Timecode CHOPは、SMPTE 規格に準拠したタイムコード(hh:mm:ss:ff)を生成・出力する CHOPです。Index 値・文字列・個別 H/M/S/F パラメータ・シーケンシャル増加の 4 モードで柔軟に生成でき、Drop Frame や Custom Length にも対応します。
主な用途 🎯
- SMPTE 規格準拠のタイムコード生成(hh:mm:ss:ff フォーマット)
- 映像・音声機器とのタイムコード同期(24/25/29.97/30/59.94/60 FPS 対応)
- Drop Frame タイムコードの自動計算(29.97 等の分数 FPS 対応)
- Index 値・文字列・個別パラメータ・シーケンシャルから複数モードで生成
- Movie File In TOP / 外部 CHOP からのタイムコード参照と再生制御
データフロー 🔄
入力: Mode 選択(Index / String / H,M,S,F / Sequential)
↓
Rate / Drop Frame 設定
↓
SMPTE 規格判定(24 時間ループ / 負値許容)
↓
内部タイムコード値計算
↓
Custom Length / Extend Left・Right 処理
↓
出力: hour / minute / second / frame / fps チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Timecode Page 🎬
SMPTE .smpte 📺
SMPTE 規格準拠モードの ON/OFF
| 項目 | 内部名 | 説明 |
|---|---|---|
| SMPTE | .smpte |
オン: SMPTE 規格に準拠したタイムコードを生成。負のタイムコードは出力されず、タイムコードは 24 時間でループする。オフ: 負の値も許容され、最大 100 時間までのタイムコードを生成可能(汎用モード)。 |
Mode .mode 🔀
タイムコードの生成ソース
| 項目 | 内部名 | 説明 |
|---|---|---|
| Specify Index | .specifyindex |
単一の Index 値からタイムコードを生成 |
| Timecode String | .timecodestr |
hh:mm:ss:ff または hh:mm:ss.ff 形式の文字列から生成 |
| Hour, Minute, Second, Frame Parameters | .timecodepar |
H/M/S/F の個別パラメータから生成。値はオーバーフローし、120 秒指定で 00:02:00:00 となる。小数値も可 |
| Sequential | .sequential |
タイムコードが時間経過に伴いシーケンシャルに増加 |
Rate .rate ⏯️
タイムコードの FPS(フレームレート):
- Rate: タイムコードの FPS。最大フレーム値は rate-1 で決まる。分数値(29.97 等)を指定した場合は次の整数に丸められ、Drop Frame が有効なら drop-frame が計算される
Drop Frame .dropframe 🎞️
Drop Frame の計算方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
Drop-frame を追加しない |
| Automatic | .auto |
Rate が分数値のとき drop-frame を自動追加。29.97 等の特殊レートは標準方式(10 分毎を除く 1 分毎に 2 フレーム追加)。それ以外は累積誤差から汎用計算 |
Index .index 🔢
Specify Index モードで使用する Index 値とその単位
Index .index 🔢
– タイムコード生成に使用する Index 値
– 単位は Index Unit で指定(indices / frames / seconds)
Index Unit .indexunit 📐
– Index 値の単位を指定
– 以下から選択:
- I (indices)
- F (frames)
- S (seconds)
Timecode String .timecodestr 🔤
Timecode String モードで使用する文字列:
- Timecode String:
hh:mm:ss:ffまたはhh:mm:ss.ff形式のタイムコード文字列
Hour / Minute / Second / Frame .hmsf ⏰
H,M,S,F Parameters モードで個別指定するタイムコード構成要素
Hour .hour 🕐
– タイムコードの時間成分
Minute .minute ⏱️
– タイムコードの分成分
– オーバーフロー可(60 を超えると上位に繰り上がる)
Second .second ⏲️
– タイムコードの秒成分
Frame .frame 🎞️
– タイムコードのフレーム成分
Sequential 制御 .sequential_control ▶️
Sequential モードでのタイムコード制御パラメータ
Initialize .init 🔄
– Sequential モードでタイムコード値を初期化
Start .start ▶️
– Sequential モードでタイムコードのシーケンシャル増加を開始
Play .play ⏯️
– 有効時は Sequential タイムコードが前進
外部参照 .external_ref 🔗
外部オブジェクト・CHOP・OP からのタイムコード参照
Timecode Object .timecodeobj 📦
– タイムコードオブジェクトへの参照
CHOP .chop 🎚️
– 以下のチャンネルの一部または全てを含む CHOP への参照:
- negative
- hour
- minute
- second
- frame
OP .op 🎬
– タイムコード Python メンバを持つ OP への参照
– 例: MoviefileinTOP_Class
Custom Length .customlength 📏
タイムコードのカスタム長設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
カスタム長を使用しない。SMPTE では 23:59:59:ff-1、それ以外では 99:59:59:ff-1 がデフォルト長 |
| By Value | .value |
Length パラメータで指定した値をカスタム長として使用 |
Length .length 📐
Custom Length の長さ指定と単位
Length .length 📏
– カスタム長をサンプル・フレーム・秒のいずれかで指定
Length Units .lengthunits 📐
– カスタム長の単位を指定
– 以下から選択:
- I (samples)
- F (frames)
- S (seconds)
Length Timecode Object .lengthtimecodeobj 📦
– カスタム長をタイムコードオブジェクトとして指定
Extend Left .extendleft ⬅️
下限を超えたときのタイムコードの挙動(SMPTE: 00:00:00:00 / それ以外: -99:59:59:ff+1)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
下限を超えたら値を保持。SMPTE は 00:00:00:00、それ以外は -99:59:59:ff+1 でホールド |
| Cycle | .cycle |
下限を超えたら循環。SMPTE は Length 値へ、それ以外は 00:00:00:00 へ |
Extend Right .extendright ➡️
上限(Length パラメータで定義)を超えたときのタイムコードの挙動
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
Length 値で値を保持 |
| Cycle | .cycle |
Length に到達したら 00:00:00:00 へ循環 |
Output Page 📤
出力チャンネル選択 .output_channels 📡
出力する CHOP チャンネルの ON/OFF。必要なチャンネルだけ有効化することで下流処理を軽量化できる
Negative Chan .negativechan ➖
– オン: negative チャンネルを出力
– タイムコードが負のとき true。SMPTE モードでは常に false
Frame Chan .framechan 🎞️
– オン: frame チャンネルを出力
Second Chan .secondchan ⏲️
– オン: second チャンネルを出力
Minute Chan .minutechan ⏱️
– オン: minute チャンネルを出力
Hour Chan .hourchan 🕐
– オン: hour チャンネルを出力
Total Seconds Chan .totalseconds ⏰
– オン: total_seconds チャンネルを出力
– タイムコードを秒に変換した値
Total Frames Chan .totalframes 🎬
– オン: total_frames チャンネルを出力
– タイムコードをフレームに変換した値
Drop Frame Chan .dropframechan 🎞️
– オン: drop_frame チャンネルを出力
– タイムコードが drop-frame のとき true
FPS Chan .fpschan 📊
– オン: fps チャンネルを出力
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: 映像再生のタイムコード表示 🎬
Movie File In TOP → Timecode CHOP (Mode: Sequential, Rate: 30) → Text TOP
- Movie File In TOP で映像を再生
- Timecode CHOP の Mode を「Sequential」、Rate を 30 FPS に設定
- Play パラメータを ON にしてタイムコードを前進
- 出力チャンネル(hour / minute / second / frame)を Text TOP に渡して画面に表示
Example 2: Drop Frame タイムコードでの放送向け同期 📺
Timecode CHOP (SMPTE: ON, Rate: 29.97, Drop Frame: Automatic) → Export to External Device
- SMPTE を ON、Rate を 29.97 に設定
- Drop Frame を「Automatic」にして標準方式の drop-frame 計算を有効化
drop_frame/fpsチャンネルを出力してタイムコード規格を明示- 外部の VTR / 放送機器にタイムコードを送出して同期再生
Example 3: Movie File In TOP からのタイムコード参照 🎞️
Movie File In TOP → Timecode CHOP (Mode: HMSF, OP: moviefilein1) → CHOP Channels
- Movie File In TOP で映像ファイルを読み込み
- Timecode CHOP の OP パラメータに
moviefilein1を参照設定 - Movie File In TOP 内のタイムコードメンバを自動取得
- Total Frames / Total Seconds チャンネルでフレーム単位・秒単位の進捗を取得
Example 4: カスタム長ループでのインスタレーション制御 🔁
Timecode CHOP (Custom Length: 5分, Extend Right: Cycle) → Logic CHOP → Trigger CHOP
- Custom Length を「By Value」に設定し、Length を 300、Length Units を「S (seconds)」に
- Extend Right を「Cycle」にして 5 分経過後に自動でループ
- Total Seconds チャンネルを Logic CHOP で閾値判定
- シーン切替トリガーをインスタレーションの周期演出に利用
関連オペレータ 🔗
類似機能OP 🔍
- Count CHOP — イベント数の計数(タイムコードではなく汎用カウンタ)
- Beat CHOP — BPM ベースのビート同期(音楽用途のタイミング生成)
組み合わせ推奨OP 🔄
- Movie File In TOP — 映像のタイムコードメンバ参照ソース
- Logic CHOP — タイムコード値を閾値判定してシーン切替トリガーに
- Trigger CHOP — 特定タイムコードでイベント発火
- Math CHOP — Total Seconds 等のタイムコード値をスケーリング・変換
- Switch CHOP — タイムコードに応じて再生ソースを切替
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Timecode 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: Drop Frame タイムコードと整数 FPS の表示がズレる
✅ Solution:
- Rate に 29.97 / 59.94 等の分数値を入れると Drop Frame が自動計算される(Drop Frame: Automatic)
- 整数 FPS(30 / 60)では drop-frame が発生しないため、放送向けには分数値 + Automatic を使用
drop_frameチャンネルを出力して下流処理で drop-frame モードを明示判別
❌ Problem: SMPTE モードで負のタイムコードが出力されない
✅ Solution:
- SMPTE モードは規格上負値を許容しないため、負タイムコードが必要なら SMPTE を OFF にする
- OFF 時は最大 100 時間まで生成可能、負値も許容される(汎用モード)
negativeチャンネルを出力して負タイムコード判定を取得
❌ Problem: タイムコード文字列が想定どおりにパースされない
✅ Solution:
- Timecode String モードでは
hh:mm:ss:ffまたはhh:mm:ss.ff形式のみ受け付ける - 区切り文字(コロン・ピリオド)が正しいか確認、空白混入は不可
- H,M,S,F Parameters モードに切替えて個別パラメータで確実に指定
❌ Problem: Custom Length 設定時のループ動作が想定と違う
✅ Solution:
- Custom Length を「By Value」にし、Length と Length Units を整合させる
- Extend Right を「Cycle」にすると Length 到達時に
00:00:00:00へ戻る、「Hold」だと Length 値で停止 - Extend Left の挙動も同様に Hold / Cycle で下限到達時の動作が変わる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

