TouchDesignerでワンショットサウンドを再生する
TouchDesignerでSEやセリフなどのワンショットサウンドを再生する方法です。
Audio Play CHOPを使う方法
Audio Play CHOPのMode
パラメータをPlay While On
またはTrigger
にして、Trigger
パラメータを押す、または一つ目のインプットから1を入力するとSound File
パラメータで指定した音声ファイルを一度だけ再生できます。
Trigger
パラメータから再生した場合はMode
パラメータがPlay While On
でもTrigger
でも挙動に違いはありません。一つ目のインプットから再生した場合、Play While On
では入力が1の間だけ再生され、Trigger
の場合は入力が一度1になったら最後まで再生されます。
Audio Play CHOPはオーディオサンプルを取得することができないので、他のCHOPで加工したりAudio Device Out CHOPから音を出すことができません。そのような場合には後述するAudio File In CHOPを使う必要があります。
Audio File In CHOPを使う方法
Audio File In CHOPのRepeat
パラメータをOff
にすると繰り返し再生がされなくなります。その状態でPlay
パラメータをOn
のままCue
のPulse
パラメータを押すとワンショットサウンドを再生できます。
これで音声ファイルの再生はできますが、Play
パラメータがOn
のままだと、プロジェクトを開き直したときなどにサウンドが一回だけ再生されてしまいます。これを避けるにはワンショットサウンドを再生するタイミングだけPlay
パラメータをOn
にして、再生が終わったらOff
に戻す必要があります。
Movie File In CHOPにInfo CHOPを使うとサウンドの再生割合をfraction
チャンネルから0~1の値で取得することができます。この値が1になったときに再生終了とすればいいのでMath CHOPで小数点を切り捨て、CHOP Execute DATのOff to On
でスクリプトによりPlay
パラメータをOff
にします。
def onOffToOn(channel, sampleIndex, val, prev):
op('audiofilein1').par.play = False
再生するときにはPlay
パラメータをOn
に戻してCue
のPulse
パラメータを押します。この操作をボタンに連携させてCHOP Execute DATから実行すると以下のようになります。
def onOffToOn(channel, sampleIndex, val, prev):
op('audiofilein1').par.play = True
op('audiofilein1').par.cuepulse.pulse()
Discussion