ムービーファイルをTouchで再生するには、Movie in CHOPを使用しますが、それだけではループ再生するだけの状態です。任意のタイミングでムービーを再生するにはいくつかのオペレータを組み合わせる必要があります。このサンプルはボタンをクリックすると、ムービーファイルを最初から最後まで1回だけ再生する仕組みです。
このサンプルではMovie in CHOPのPlayタブにあるCue(キュー)パラメータをコントロールして、ムービーを任意のタイミングで再生させて、ムービーを再生が最後に達したら、再生を終了させています。Cueパラメータは0でムービーを再生、1でムービーを停止するパラメータです。サンプルシーンを見ると、Cueパラメータがエキスポートされているのが確認できます。
Cueパラメータで再生・停止をコントロールするためには、ムービーファイルの長さの分、Cueパラメータを0にすれば良いので、Info CHOPでMovie in CHOPを参照します。Info CHOPはNode Pathで指定したオペレータのデータの状態をチャンネル化します。ムービーファイルの長さ(フレーム数)はlengthというチャンネル名に割り当てられます。
Info CHOPで得られるムービーファイルのフレーム数は30FPSでの長さです。一方、Touch077の再生レートはデフォルトで60FPSです。Math CHOPでlengthを2倍にしています。もしシーン自体の再生レートを30FPSにする場合は、この処理は不要です。
ムービーファイルのフレーム数はTrigger CHOPのAttack lengthにエキスポートされます。Trigger CHOPは入力に対して、Attack lengthで設定した時間をかけて、Peak Levelパラメータで設定した数値のランプを出力します。Attack Shapeは増加を一定にするために、Linearに設定します。また、ランプはピークに達した後、減衰は必要ないので、Sustainタブの数値パラメータはすべて0にしておきます。
Trigger CHOPでボタンを押したタイミングで、ムービーの長さの時間分、0.0001~1のランプが出力される仕組みまでできました。最後はランプが出力されている間は0、ランプが出力されていない間は1の値になるように調整すれば、Cueパラメータのチャンネルとして使用することができます。Logic CHOPは入力した値に対して、設定したロジックにしたがって、0または1を出力します。Convert InputをOff When Zeroを設定すると、入力が0の場合は0、入力が0以外の場合は1を出力します。これでは上記の状態とは逆になってしまうので、Channel Par OPをInvertに設定することで、入力が0の場合は1、入力が0以外の場合は0を出力するようになります。