TouchDesignerでキーボード入力のラジオボタンを作る。

 Button COMPは、Button Typeを「Radio Up」にして、同じラベルを付けるとラジオボタンになります。
f:id:DosShrimp:20210501164152j:plain


 ただマウスでボタンを押すのはめんどくさいので、キーボード入力のラジオボタンを作ってみました。


※もっと良い実装を知ってる方、よろしければ教えてください🙇‍♂️

 
 まずは、必要なオペレーターを配置します。今回は1~4のキー入力を使ったラジオボタンを作るので、Keyboard In CHOPを4つ配置して、それぞれCount CHOPとMath CHOPを繋げます。
f:id:DosShrimp:20210501203953j:plain

 
 そしたら、keyboardin1のkeysを1に、keyboardin2のkeysを2という感じにkeyboardinの後ろに付いている連番とkeysを同じ数字にします。
Count CHOPはすべて以下のように設定します。
f:id:DosShrimp:20210501204719j:plain


Math CHOPは、KeyBoard in CHOPの時と同じ要領で、mathの後ろに付いている連番と、RangeパラメータのTo Rangeの最大値を同じ数字にします。
そして、CHOP Execute DATを配置して、以下のコードに書き換えます。

counts = []

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):

	if(len(counts) == 0):
		for i in range(1, 5):
			counts.append(op("count" + str(i)))
	
	if(val > 0):

		tmpCounts = counts[:]

		tmpCounts.pop(int(val) - 1)

		for j in range(0, len(tmpCounts)):
			tmpCounts[j].par.resetpulse.pulse()

	return


CHOP Execute DATのCHOPsを以下のように書くと、キーボードが押されるたびにスクリプトを呼び出すようになります。
f:id:DosShrimp:20210501211118j:plain


完成です、やったね。
f:id:DosShrimp:20210501170151g:plain
 

 これを応用すれば、MIDIからの入力とかもラジオボタンにできます。


 ボタンの数を増やしたり減らしたい場合は、欲しい分だけオペレーターを用意してforの範囲を変更すればできると思います。ちなみにボタンの数が3つの場合はなんとかコードを書かなくても実装できます()。


 以上。