Timer CHOPは、タイミング処理を実行するためのエンジンです。タイミング分数、カウンタ、パルス、タイマー状態などのチャンネルを出力し、様々なタイミングイベントが発生したときに python の関数(コールバック)を呼び出します。
Timer CHOP を使用した例としては、複数のタイムキューのトリガー、プレイリスト、タイムライン、ステートマシンの実行、3D シーンでのアニメーションコンポーネントのプリアニメート駆動などがあります。多くの例については、Help -> Operator Snippetsを参照してください。
タイマーを秒数、フレーム数、サンプル数で設定し、Startパラメータまたは第2入力CHOPを介して起動させます。Timer CHOPは、カウント中に、秒、フレーム、サンプル、フラクション、およびオン/オフ状態で出力します。これには、完了したときに実行される done チャネルが含まれます。サイクルの終了や終了時のような特定の状態に達すると、様々な python コールバックが呼び出され、その動作をカスタマイズすることができます。
Timer CHOP は、イベント(パラメータのパルス入力または 2 つの入力の駆動)によってトリガされます。イベントを取り込み、時間をカウントし、状態を変化させます。pythonコールバック関数を介して、他のノードにイベントを送信したり、パラメータを設定したり、DAT、CHOP、ストレージの値を取得/設定したり、自身を再起動したり、他のノードをトリガしたりすることができます。このように、ステートマシンとして動作することができます。
再生/一時停止に加えて、タイマーを遅くしたり速くしたりするためのスピードコントロールがあります。
また、無期限にサイクルすることができ、その後、すぐに終了するか、現在のサイクルの終了時に終了するように信号を送ることができます。
ひとるの`Timer CHOPで複数のタイマーを持つこともできます。テーブルDATをアタッチすることで、1行に1つのタイマー(セグメント)を定義することができます。Serial Timersモードでは、1つのタイムセグメントの後に別のタイムセグメントが続きます。Parallel Timersモードでは、全てのタイマーが並列に動作し、それぞれが独自の開始時間と長さ、出力チャンネルのセットを持ちます。
タイマーCHOPは、確定的な方法でタイムラインにロックすることも、シーケンシャルモードでより自由に実行することもできます。タイムラインから独立して実行すると、先にジャンプしたり、サイクルから抜け出したり、一時停止したり、タイマー内の正確な位置やタイムコードをgoTo()したり、速度を動的に調整したりすることができます。
Timer CHOP は、1 つのTimer CHOP が終了すると、次のTimer CHOP が開始できるようにチェーン接続することができます。Timer CHOP の ready_pulse チャネルが次のTimer CHOP の Initialize パラメータにエクスポートされます。Timer CHOPのdone_pulseチャンネルの出力を次のTimer CHOPのStart入力(またはStartパラメータにエクスポート)に接続します。最初のTimer CHOP を開始することで、タイマーのチェーンを開始します。いくつかのTimer CHOPを使用して入力や応答を待っている間にループしたり、次にどのCHOPを開始するかを決定するロジックを追加したりすることで、ステートマシンを実装することができます。
サイクルまたはセグメントが終了する前に、Cycle End Alertパラメータに基づくonCycleEndAlert()コールバックを呼び出して、次のサイクル、セグメント、またはTimer CHOPに備えることができます。
タイムコードを見るために Info DAT をアタッチするか、.timecode メンバーを使用してください。Info DATには、セグメントごとにカスタムのテキスト文字列を入れたり、カスタムのアニメーションチャンネルを作成したりすることができます。
最後のセグメントの後にCHOP全体をループさせるには、On DoneメニューをRe-Startに設定します。
参照: Timer CHOPのOPスニペット、Trigger CHOP、 Event CHOP、Speed CHOP、Count CHOP、Beat CHOP、Event CHOP、Clock CHOP、Delay CHOP、CHOP Execute DAT、LFO CHOP
Sequential(タイムラインに依存しない)またはLocked to Timelineに設定します。Locked to Timelineでは、非決定的な機能は無効になります。
- Lock To Timeline / lock
- Sequential / sequential
(パルスパラメータによる) 初期化は、タイマーを準備するための信号です:カウンタをゼロに設定し (遅延、タイマー、サイクル、セグメント)、出力チャンネルを適切な状態に設定し、done をオフにして、onInitialize() コールバックを実行します。初期化が完了すると、ready チャンネルをオンにして準備ができたことを示し、スタートパルスを待ちます。
(パルスによる) スタートはタイマーのカウントを開始する信号です。最初に遅延時間をカウントし、次にタイマーの長さをカウントします。初期化されていない場合は初期化を行い、カウントを開始します。
(float) タイマーの時間の長さを設定します。Units メニューを Seconds(秒)、Frames(フレーム)、または Samples(サンプル)に設定します。
Lengthパラメータの単位を設定します。
(float) スタートの後、タイマーがカウントを開始するまでの遅延時間を設定します。
Delayパラメータの単位を設定します。
(on/off) タイマーを一時停止します。基本的にはSpeedの0または1の乗算です。
(初期値 1) タイマーの速度を遅くしたり、速くしたりします。
キューポイントでの再生をフリーズさせます。
キューのパルスを送信します。
キューポイントがフリーズする時間(秒、フレーム、または分数)を設定します。
Cue Point パラメータの単位を設定します。
(デフォルトは Off) 設定すると、タイマーがサイクルの終わりに到達したときに 0 にループバックします。
CycleパラメータがOnの場合、無期限にサイクルを回すか、最大サイクル数だけサイクルを回すかを設定します。
Cycle パラメータがon、Cycle Limit パラメータがonの場合、最大サイクル数を設定します。
onCycleEndAlert() コールバックが呼び出されるサイクル、セグメント、または完了状態に達するまでの秒数、フレーム数、またはサンプル数。これにより、次のサイクル、セグメント、またはタイマーに備えることができます。
パルスが送信されると、現在再生中のサイクルの終了時にサイクル(およびセグメント)を終了します。
パルスが送信されると、すぐにサイクル(とセグメント)を終了します。
すぐにDone状態になります。
Doneの挙動を設定します。
- Do Nothing / donothing
何もしません。
- Re-Initialize / reinit
再イニシャライズされます。
- Re-Start / restart
再スタートします。
CallbackのDATを設定します。
1 つのTimer CHOP で複数のタイマーを指定することができます。セグメントは1つのタイマーとして動作し、独自の長さ、遅延時間、繰り返し回数などの条件を設定します。
タイマー(セグメント)ごとに1つの行を含むテーブルDAT。列の見出しは delay または begin 、length、cycle 、cyclelimit 、 maxcycles 、cycleendalert とすることができ、これらは同じパラメータを上書きします(これらは対応するパラメータの内部名です)。begin は delay に代わるものとしてユニークです。そして、CHOP がシリアルタイマに設定されているかパラレルタイマに設定されているかに関わらず、タイマがカウントを開始する開始からの時間を表します(Segment Methodの章を参照)。
また、Segments DATには、任意の数のカスタム・カラムを含めることができます。以下の Custom Channels と Columns to Info DAT を参照してください。
Segment MethodがSerial Timersの場合は、タイマーを連続して再生します。Segment MethodがParallel Timersの場合は、同時に再生することができ、各タイマーごとにチャンネルのセットが出力されます。
- Serial Timers / serial
- Parallel Timers / parallel
delay、begin、length、cycleendalert の各列では、秒数、フレーム数、サンプル数のいずれかをこのメニューで設定します。
DAT セグメント内の任意のカラム (任意の名前) を、追加のチャンネルとして出力することができます (カラムには数値が含まれていなければなりません)。その名前は Columns to Channels パラメータで指定します。チャンネル名がカラム名となります。また、length や delay などのカラムをチャンネルとして出力することもできます。
デフォルトでは、カスタムチャンネルはセグメントの開始時に新しい値にステップします。このメニューでは、新しい値に直線的に補間したり、イーズインとイーズアウトを組み合わせて補間したりすることができます。
- Step to Value / steptovalue
- Linear to Value / lineartovalue
- Ease In to Value / easeintovalue
- Ease Out to Value / easeouttovalue
- Ease In-Out to Value / easeinouttovalue
このパラメータでセグメントDAT内の任意の列(任意の名前)を指定すると、Info DATに出力することができます(タイマーCHOPにInfo DATを接続します。)。
ディレイ中や初期化/読み込み中は、Info DATのカスタム行はデフォルトでは空白になります。このオプションを指定すると、CHOPが初期化されているときも含めて、常にカスタム文字列がInfo DATに表示されます。
(パルス) 前のセグメントに移動します。
(パルス) 次のセグメントに移動します。
- Segment
各セグメントは1つのタイマーとして動作し、遅延時間、長さ、繰り返し回数、その他の条件が設定されています。
- Begin
Parallel Timersの場合、スタート(フレームまたはサンプル)からの秒数で、各タイマーがゼロからカウントアップを開始します。
- Done
全てのタイマーがカウントを終えた時の状態、それがParallelかSerialか、Segmentsかどうか。
- End
Cycle Endは各サイクルの終了、Segment Endはセグメントの終了です。
- Cumulative Time
スタート時のゼロ、速度の影響を受け、タイマーが作動している間は上昇するカウント(遅延中ではない)。
- Running Time
開始時のゼロ、遅延、速度、サイクル、またはGo To Segment Endの早すぎるクリックに関係なく、Startが呼び出されてからの実時間。 Doneに達するとカウントを停止します。
各セグメントのtimer_fractionチャネルを出力します。
経過したSecondsチャネルをtimer_secondsとして出力し、Framesチャネルをtimer_framesとして出力し、Samplesチャネルをtimer_samplesとして出力します。 これは経過した時間なので、timer_framesは他の場合と同様に0から始まります。
- Off / off
- Samples / samples
- Frames / frames
- Seconds / seconds
タイマーがカウントされている間のみ(ゼロ以外)に出力されるチャネル timer_activeを出力します。
タイマーがその長さに達すると、timer_pulseチャネルを出力します。
遅延が発生している間、delay_fraction に0〜1の割合を出力します。
遅延カウントを秒、フレーム、またはサンプルで出力します。
- Off / off
- Samples / samples
- Frames / frames
- Seconds / seconds
タイマーが初期化されている間(コールバックの onInitialize() が 0 以外の値を返している間)、チャンネル initializing = 1 を出力します。
初期化後、開始前に ready チャンネルに1を出力します。
初期化が完了し、タイマー開始の準備ができるとパルスを出力します。
タイマーが初期化後、開始してもパルスを送信します。
開始後、完了前にrunningチャンネルに1を出力します。
完了時にdoneチャネルを出力します。
すべてのタイマーが完了した時にdoneチャンネルを出力します。
cycleチャンネルに(セグメント内で)完了したサイクル数を出力します。最初のサイクル全体で0から始まります。 Doneにジャンプすると、通常どおり再生されたようにサイクルがインクリメントされて完了状態になります。
最初の唯一のサイクルであっても、各サイクルの終わりにパルスを出力します。
最初のサイクル全体で0から始まるcycle_plus_fraction チャンネルを出力します。
最初のセグメントの0から始まるsegmentチャンネルを出力します。
各セグメントの終わりのパルスであるsegment_pulse チャンネルを出力します。
最初のセグメントが0で始まり、# segmentsで終了する segment_plus_fraction チャネルを出力します。
累積秒数、累積フレーム数、累積サンプル数を出力します。これは、開始時からのすべてのセグメントのTimer Activeタイムを加算したタイム・カウントで、Speed の影響を受け、 timer_active がオンの時のみカウントアップします。
- Off / off
- Samples / samples
- Frames / frames
- Seconds / seconds
遅延、速度、サイクル、またはGo To Segment Endの早すぎるクリックなどに関係なく、開始からの wall-clock タイムを出力します。完了に達すると、カウントを停止します。 running_seconds 、 running_frames 、または running_samples。 CHOPがParallel Timers に設定されている場合、これはセグメントごとのチャネルと1つのグローバルな実行時間のチャネルを出力します。
- Off / off
- Samples / samples
- Frames / frames
- Seconds / seconds
CHOPが出力するサンプルレート。これは、長さ、遅延、サイクル終了アラート時間の単位がサンプルに設定されている場合にも使用されます。 デフォルトのサンプルレートは60サンプル/秒です。
これをオンにすると、チャネルが強制的に「タイムスライス」されます。 タイムスライスは、最後のクックフレームと現在のクックフレームの間の時間です。
影響を受けるチャネルを特定するために、一部のCHOPでは、Commonページの
でスコープ文字列を使用することができます。
複数の入力CHOPのサンプルレートが異なる場合を処理方法を設定します。 リサンプリングが発生すると、カーブは補間方法オプションに従って補間されます。補間オプションが使用できない場合はLinearで処理されます。
- Resample At First Input’s Rate / first
最初の入力のレートを使用して、他の入力をリサンプリングします。
- Resample At Maximum Rate / max
最も高いサンプリングレートでリサンプリングします。
- Resample At Minimum Rate / min
最も低いサンプリングレートでリサンプリングします。
- Error If Rates Differ / err
競合するサンプルレートは受け入れません。
CHOPチャンネルをパラメーターに接続する方法を設定します。 詳細については、Exportの章を参照してください。
- DAT Table by Index / datindex
ドッキングされたDATテーブルを使用し、CHOP内のチャンネルのインデックスを介してチャンネルを参照します。
- DAT Table by Name / datname
ドッキングされたDATテーブルを使用し、CHOP内のチャネルの名前を介してチャネルを参照します。
Channel Name is Path:パラメータでrelative toを設定することで、エクスポートするすべてのパスのルートノードを指定します。
DAT Table Export Methodsメソッドを使用するときにエクスポート情報を保持するために使用されるDATを指定します。