
概要 📖 – リアルタイム時刻と太陽位相の取得
Clock CHOPは、現在時刻と太陽位相を整数または 0-1 ランプとしてチャンネル出力する CHOPです。Units / Fractions / Countdown の 3 モードを切替えて、時計盤の駆動から日時カウントダウンまで 1 オペレータで完結します。
主な用途 🎯
- 現在時刻のチャンネル化(年・月・日・時・分・秒・ミリ秒の取得)
- 0-1 正規化された時間ランプの生成(時計盤・周期アニメーションの駆動)
- カウントダウン処理(特定の日時までの残り時間を出力)
- 太陽位相の取得(緯度経度から日の出・日の入り・月相を算出)
- 曜日・週・年内日数を使ったスケジュール制御
データフロー 🔄
入力: 現在時刻(システムクロック)または Countdown 用 DAT/CHOP
↓
内部時刻計算(Output 設定で Units / Fractions / Countdown 切替)
↓
太陽位相演算(Latitude / Longitude を反映)
↓
出力: 年・月・日・時・分・秒・太陽位相チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Clock Page 📋
Output .output 📤
出力チャンネルの形式を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Units | .units |
整数値を出力(year=4 は 2004 年、hour=23 は 23 時等) |
| Fractions | .fractions |
0-1 ランプを出力(年・月・週・日・時・分・秒・ミリ秒の周期内位相) |
| Countdown | .countdown |
カウントダウンモード。第 1 入力に year/month/day/hour/min/sec/msec チャンネルを与え、目標日時までの残り時間を出力 |
Hour Format .hourformat 🕐
hour チャンネルの周期と AM/PM チャンネルの動作を決定
| 項目 | 内部名 | 説明 |
|---|---|---|
| 12 hour | .12 |
hour チャンネルを 0-11 の 12 時間周期で出力 |
| 24 hour | .24 |
hour チャンネルを 0-23 の 24 時間周期で出力 |
Start Reference .startref 📅
year=0, day=1, hour=0, minute=0 の基準日時
| 項目 | 内部名 | 説明 |
|---|---|---|
| Since Jan 1 2000 | .jan1 |
2000 年 1 月 1 日を基準とする(year=9 で 2009 年) |
| Since Program Start | .program |
TouchDesigner プロセス起動時刻を基準とする |
時刻チャンネル設定 ⏱️
Hour Adjust .houradjust 🕓
– 現在時刻読み取り後に hour チャンネルへ加算するオフセット値
– タイムゾーン補正やデモ用の時刻ずらしに使用
Millisecond .msec ⏱️
– Units: 0〜999 のミリ秒整数
– Fractions: 1 ミリ秒内の位相(0-1)
Second .sec ⏱️
– Units: 0〜59 の秒整数
– Fractions: 1 秒内の位相(45 秒 = 0.75)
Minute .min ⏱️
– Units: 0〜59 の分整数
– Fractions: 1 分内の位相(45 秒経過 = 0.75)
Hour .hour 🕐
– Units: 0〜11 または 0〜23(Hour Format に依存)
– Fractions: 1 時間内の位相(15 分経過 = 0.25、minute と second を加味)
AM/PM .ampm 🌗
– 正午前は 0、正午以降は 1 を出力
– Hour Format の設定に関わらず常時出力
Day of Week .wday 📆
– Units: 月曜=0、日曜=6 の曜日整数
– Fractions: 1 日内の位相(18:30 = 0.77)
Day of Month .day 📆
– Units: 月内の日付(3 月 20 日 = 20)
– Fractions: このパラメータは無効(月内位相は month チャンネルを使用)
Day of Year .yday 📆
– Units: 年初からの通算日数(1 月 1 日 = 0)
– Fractions: このパラメータは無効(年内位相は year チャンネルを使用)
Week .week 📅
– 年内の週番号(最初の週 = 0、最後の週 = 51)
Month .month 📅
– Units: 1 月 = 1、12 月 = 12
– Fractions: 月内の位相(日・時・分・秒を加味)
Year .year 📅
– Units: Start Reference を基準とした整数年(2009 年で 9)
– Fractions: 年内の位相(月・日・時・分・秒を加味)
Solar Page ☀️
Latitude / Longitude 🌐
Latitude .latitude 📍
– 観測地点の緯度(時間/分の北緯または南緯、デフォルトはトロント)
– 小数表記可能(43.6532 時間 = 43 時間 39 分)
– latitude1 が時間、latitude2 が分
NS .northsouth 🧭
– 緯度の南北半球を選択:
- North(北緯)
- South(南緯)
Longitude .longitude 📍
– 観測地点の経度(時間/分の東経または西経)
– 小数表記可能
– longitude1 が時間、longitude2 が分
EW .eastwest 🧭
– 経度の東西半球を選択:
- East(東経)
- West(西経)
太陽位相チャンネル 🌅
Moon Phase .moonphase 🌙
– 月相を 0-1 で出力
– 0 と 1 が新月、0.5 が満月
Sun Phase .sunphase ☀️
– 太陽位相を 0-1 で出力
– 日の出 = 0、日の入り = 1、日の入り後は 0 まで戻る
Sunrise .sunrise 🌄
– 日の出時刻を 0-1 で出力(深夜 0 時 = 0、24 時間後 = 1)
Sunset .sunset 🌇
– 日の入り時刻を 0-1 で出力(深夜 0 時 = 0、24 時間後 = 1)
Declination .declination 📐
– 太陽の赤道からの角距離(-180〜180 度)
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: アナログ時計盤アニメーション 🕰️
Clock CHOP (Fractions) → Math CHOP (× 360) → SOP Transform (Rz) → 時針・分針・秒針回転
Fractions モードで取得した hour / minute / second の 0-1 ランプを 360 度に乗算し、時計の針 SOP を回転させて滑らかなアナログ時計盤を再現します。
- Clock CHOP の Output を Fractions に設定
- hour / minute / second チャンネルを Select CHOP で個別に取り出す
- Math CHOP の Multiply で 360 を乗算
- Geometry COMP の Transform.Rz に Export して針を回転
Example 2: イベント開始までのカウントダウン表示 ⏳
Constant CHOP (target year/month/day/hour) → Clock CHOP (Countdown) → Text TOP
Countdown モードで第 1 入力に目標日時を渡すと、現在時刻からの残り時間が day / hour / min / sec チャンネルとして出力されます。Text TOP に流して大画面カウントダウンに使えます。
- Constant CHOP で year / month / day / hour / min / sec チャンネルを作成し目標日時を入力
- Clock CHOP の Output を Countdown に切替え、第 1 入力に Constant CHOP を接続
- 出力チャンネルを CHOP to DAT 経由で Text TOP に渡す
Example 3: 日の出・日の入り連動の照明制御 🌅
Clock CHOP (Solar Page: Latitude/Longitude) → Logic CHOP (sunphase 閾値) → DMX Out CHOP
Solar Page に観測地点の緯度経度を設定すると Sun Phase / Sunrise / Sunset チャンネルが出力されます。日の入り後に照明を自動点灯する常駐インスタレーションに使えます。
- Solar Page の Latitude / Longitude / NS / EW を設置場所の値に設定
- sunphase チャンネルを Logic CHOP で閾値判定
- 判定結果を DMX Out CHOP に Export して照明 DMX 信号を生成
Example 4: 曜日別シーン切替 📆
Clock CHOP (wday) → Switch TOP (index) → 7 種シーン
wday チャンネル(月曜=0、日曜=6)を Switch TOP の index に渡すと、曜日に応じた 7 種類のコンテンツを自動切替できます。
- Clock CHOP の Output を Units に設定
- wday チャンネルを Select CHOP で取り出す
- 値を Switch TOP の Index パラメータに Export
関連オペレータ 🔗
類似機能OP 🔍
- Timer CHOP — 経過時間ベースのタイマー(絶対時刻ではなくセグメント単位の経過秒)
- Beat CHOP — BPM 同期のメトロノーム拍子(音楽用途の周期生成)
- LFO CHOP — 周期波形(sin / saw / triangle)による時間関数の生成
組み合わせ推奨OP 🔄
- Math CHOP — Fractions 出力に 360 や 2π を乗算して角度・ラジアンに変換
- Logic CHOP — 曜日・時刻による条件分岐(例: 18 時以降に照明 ON)
- Select CHOP — 出力チャンネル群から必要なものだけ抽出(hour / sunphase 等)
- Constant CHOP — Countdown モードの目標日時を year/month/day/hour/min/sec チャンネルとして供給
- Trigger CHOP — 特定時刻への到達でイベント発火(ADSR エンベロープ起動)
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Clock 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: Fractions 出力が想定の周期で動かない
✅ Solution:
- Output が Fractions に設定されているか確認(Units では整数出力)
- day / yday は Fractions モードでは無効。月内・年内位相は month / year チャンネルから取得する
- Hour Format(12 / 24 hour)の設定が hour チャンネルの周期に影響していないか確認
❌ Problem: Countdown モードで残り時間が出力されない
✅ Solution:
- 第 1 入力に year / month / day / hour / min / sec / msec チャンネルが揃っているか確認
- Constant CHOP で正しいチャンネル名(year / month / day 等)を指定する
- 目標日時が現在時刻より過去だと出力が 0 またはマイナスになる
❌ Problem: Sun Phase / Sunrise が想定とずれる
✅ Solution:
- Solar Page の Latitude / Longitude を観測地点の正しい値に設定(デフォルトはトロント)
- NS(North/South)と EW(East/West)の半球設定が地球の正しい側に合っているか確認
- Hour Adjust によるタイムゾーン補正が必要な場合がある
❌ Problem: 時刻が動かない・更新されない
✅ Solution:
- Time Slice が ON になっていないか確認(時刻は毎クック更新が前提)
- 後段で Filter CHOP 等の遅延処理が掛かっていないか確認
- Cook 状態を Info CHOP の
total_cooksでモニタリング
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

