
概要 📖 – Helios Laser DAC への XY/RGB ポイント送出
Helios DAC CHOPは、入力された XY 座標と RGB / Intensity チャンネルを Helios Laser DAC へリアルタイム送出する CHOPです。ポイントバッファのキュータイム制御と座標・色値の個別スケーリングを 1 オペレータで完結し、レーザー描画のリアルタイム出力に直結します。
主な用途 🎯
- Helios Laser DAC へのリアルタイム XY ポイントストリーム送出
- レーザー描画用 RGB チャンネルとインテンシティの DAC 転送
- ポイントバッファのキュータイム制御によるレイテンシ・滑らかさ調整
- 座標スケーリングと色値スケーリングによるレーザー出力範囲の調整
- 複数台 Helios DAC のデバイス選択とハードウェア有効化制御
データフロー 🔄
入力: XY 座標 / RGB / Intensity チャンネル
↓
Active 判定 (オフなら送出停止)
↓
Device 選択
↓
スケール変換(X/Y/R/G/B/Intensity Scale)
↓
Queue Time バッファリング
↓
出力: Helios Laser DAC ハードウェア
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Helios DAC Page 📋
Active .active 🔌
Helios DAC への送出を有効化/無効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Active | .active |
オフにすると Helios DAC への送出を停止し、ポイントバッファを即座にクリア。Helios DAC の電源を切るのと同等の挙動。 |
Device .device 🎛️
制御対象の Helios DAC を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Device | .device |
接続されている Helios DAC の中から制御対象をメニューで選択。複数台接続時に出力先を切り替える。 |
Queue Time (Seconds) .queuetime ⏱️
Helios DAC ポイントバッファのキューサイズと、それを送出し切るのに要する時間
| 項目 | 内部名 | 説明 |
|---|---|---|
| Queue Time (Seconds) | .queuetime |
ポイントバッファのキューサイズと、バッファを drain するのに要する時間(秒)。送出ポイント数が少ない場合は値を小さくすると有効。 |
X Scale .xscale ↔️
入力 X 値に対する倍率
| 項目 | 内部名 | 説明 |
|---|---|---|
| X Scale | .xscale |
入力された x 値に乗算する倍率。レーザー出力範囲の水平方向のスケーリングに使用。 |
Y Scale .yscale ↕️
入力 Y 値に対する倍率
| 項目 | 内部名 | 説明 |
|---|---|---|
| Y Scale | .yscale |
入力された y 値に乗算する倍率。レーザー出力範囲の垂直方向のスケーリングに使用。 |
Red Scale .redscale 🔴
入力 R 値に対する倍率
| 項目 | 内部名 | 説明 |
|---|---|---|
| Red Scale | .redscale |
入力された r 値に乗算する倍率。赤チャンネルの輝度を調整。 |
Green Scale .greenscale 🟢
入力 G 値に対する倍率
| 項目 | 内部名 | 説明 |
|---|---|---|
| Green Scale | .greenscale |
入力された g 値に乗算する倍率。緑チャンネルの輝度を調整。 |
Blue Scale .bluescale 🔵
入力 B 値に対する倍率
| 項目 | 内部名 | 説明 |
|---|---|---|
| Blue Scale | .bluescale |
入力された b 値に乗算する倍率。青チャンネルの輝度を調整。 |
Intensity Scale .intensityscale 💡
入力 Intensity 値に対する倍率
| 項目 | 内部名 | 説明 |
|---|---|---|
| Intensity Scale | .intensityscale |
入力された intensity 値(i)に乗算する倍率。レーザー全体の出力強度を調整。 |
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: シンプルな円形パターンのレーザー描画 ⭕
LFO CHOP (sin/cos) → Math CHOP (XY スケーリング) → Helios DAC CHOP → Helios Laser DAC
- LFO CHOP を 2 つ用意し、片方を sin、片方を cos に設定して x / y チャンネルを生成
- Math CHOP で振幅を
[-1, 1]の DAC 入力範囲にスケーリング - Constant CHOP で r / g / b / i チャンネルを追加し、Math CHOP の出力と Merge
- Helios DAC CHOP を接続し、Active をオンにして Device で接続済みの Helios を選択
- リアルタイムで円形パターンがレーザー描画される
Example 2: 音声に反応するリサージュ図形 🎵
Audio Device In CHOP → Filter CHOP → Math CHOP (Range) → Helios DAC CHOP
- Audio Device In CHOP で 2ch ステレオ音声を取得
- Filter CHOP で時間方向のスムージングをかけて DAC 安全範囲のなめらかさを確保
- Math CHOP で From Range
[-1, 1]から To Range[-1, 1]へクリップ・スケーリング - Helios DAC CHOP に流し、Intensity Scale で全体の輝度を制御
- 音声波形がそのままレーザーのリサージュ図形として描画される
Example 3: Queue Time 調整による低レイテンシ送出 ⚡
図形入力 CHOP → Helios DAC CHOP (Queue Time 短) → Helios Laser DAC
- 送出ポイント数が少ないシンプルな図形(直線・三角形等)を入力に用意
- Helios DAC CHOP の Queue Time を初期値より小さく設定(例: 0.05 秒)
- ポイントバッファの drain 時間が短くなり、入力変化が即座にレーザーへ反映
- インタラクティブ操作のリアルタイム性が向上
- ポイント数が多い図形では小さすぎるとアンダーランが発生するため balance 調整
関連オペレータ 🔗
類似機能OP 🔍
- OSC Out CHOP — OSC プロトコルでチャンネル値を外部送出(DAC ハードウェアではなくネットワーク経由)
- Audio Device Out CHOP — オーディオインターフェースへの出力(音声 DAC、レーザー DAC ではない)
- DMX Out CHOP — DMX プロトコルでの照明・舞台機材制御出力
組み合わせ推奨OP 🔄
- LFO CHOP — sin / cos で円形やリサージュ図形の XY 入力を生成
- Math CHOP — DAC 入力範囲([-1, 1])への正規化・スケーリング前段に必須
- Filter CHOP — 急峻な値変化を平滑化し、レーザーの hard edge / 焼き付きを抑制
- Limit CHOP — DAC 安全範囲外への値突入を強制クランプ
- Merge CHOP — x / y / r / g / b / i チャンネルを 1 つの CHOP に束ねる
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Helios DAC 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: Helios DAC が Device メニューに表示されない
✅ Solution:
- Helios DAC が USB で正しく接続され、ホスト OS でデバイス認識されているか確認
- 他のレーザー制御アプリケーションが Helios DAC を占有していないか確認し、占有していれば終了
- TouchDesigner を再起動して Device メニューを refresh
❌ Problem: レーザー出力が想定範囲を超えて投影される
✅ Solution:
- X Scale / Y Scale の値を 1.0 未満に下げて出力範囲を縮小
- 前段に Limit CHOP を入れて入力値を
[-1, 1]にクランプ - Math CHOP の Range 変換で入力レンジを DAC の安全範囲に合わせて正規化
❌ Problem: 出力がカクつく・遅延が大きい
✅ Solution:
- Queue Time の値を小さくしてポイントバッファ滞留時間を短縮
- ただし Queue Time が小さすぎるとアンダーランで点滅・チラつきが発生するためバランス調整
- 前段の Filter CHOP で急峻変化を平滑化し DAC への送出ポイント密度を最適化
❌ Problem: 色(RGB)が出力されない・暗い
✅ Solution:
- 入力に r / g / b チャンネルが含まれているか Info CHOP で確認
- Red Scale / Green Scale / Blue Scale が 0 になっていないか確認
- Intensity Scale が 0 だと全体出力がゼロになるため、最低でも 1.0 程度に設定
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

