ここではDATの続きとして、少しだけスクリプト(Python)を使ってみましょう。まず、Text DATを出し、その隣にConstant TOPを置きます。
次に、text1からconstant1にアクセするために、オペレータの名前を指定し、パラメータ名も指定します。
op(‘constant1’).par.colorr = 0.5
この式は、constant1という名前のオペレータのパラメータの中から、colorr(red)という変数を探し、値を0.5にするという意味になります。各オペレータのパラメータは、デフォルトだと表示されていないので、パラメータのウィンドウの左端の+をクリックし、表示させてください。
コマンド+R(Mac)もしくはコントロール+R(Win)のショートカットを使いスクリプトを実行すると、constant1の色が変化します。
このように、すべてのオペレータのパラメータは、スクリプトからアクセス可能です。
それでは次に、tableの値を取り出してみましょう。Table DATを出してください。下図のようにRowとColumnを増やし、数値を入力してください。
そして、text1の指定は以下のようになります。
op(‘constant1’).par.colorr = op(‘table1’)[0,1]
末尾の[0, 1]は[行番号, 列番号]になります。greenとblue用のスクリプトも追加してみましょう。
次に、スライダーの値が変化したらその値をDATに送り、さらにTOPに送ってみます。
Slider COMPとNull CHOP、CHOP Execute DATを出して繋いでください。CHOP Executeは、CHOPの状態が変わったときに、スクリプトを実行してくれるDATです。
chopexec1のonValueChange内を以下のように書き換えましょう。スライダーを操作するとconstant1の色が変化するようになります。また、print()によるvalの値は、TextPortを開くと確認できます。
def onOffToOn(channel, sampleIndex, val, prev):
return
def whileOn(channel, sampleIndex, val, prev):
return
def onOnToOff(channel, sampleIndex, val, prev):
return
def whileOff(channel, sampleIndex, val, prev):
return
def onValueChange(channel, sampleIndex, val, prev):
op('constant1').par.colorr = val
print(val)
return
オペレータの値を取り出す場合のもう一つの書き方
基本的に「op(‘constant1’).par.colorr = 0.5」のような形で値を取得することも書き込むこともできますが、値の取得ができる書き方がもう一種類あり、以下のように書くことができます。
op(‘constant1’)[‘chan1’]
実際に書いてみましょう。Text DATとConstant CHOPを出してください。CHOPの場合は、チャンネル名を記載(chan1、v1など)することによって値にアクセスできます。text1にprint(op(‘constant1’)[‘chan1’])と記入してプログラムを実行(Mac – ⌘+R、Windows – Control+Rしてみてください。Textportに0が表示されます。
しかし、この書き方は、CHOPの場合は値を書き込むことができません。constant1の値を書き換えたい場合は例えば以下のように記入してください。
op(‘constant1’).par.value0 = 3