TouchDesignerでキーボード入力のラジオボタンを作る。
Button COMPは、Button Typeを「Radio Up」にして、同じラベルを付けるとラジオボタンになります。
ただマウスでボタンを押すのはめんどくさいので、キーボード入力のラジオボタンを作ってみました。
※もっと良い実装を知ってる方、よろしければ教えてください🙇♂️
まずは、必要なオペレーターを配置します。今回は1~4のキー入力を使ったラジオボタンを作るので、Keyboard In CHOPを4つ配置して、それぞれCount CHOPとMath CHOPを繋げます。
そしたら、keyboardin1のkeysを1に、keyboardin2のkeysを2という感じにkeyboardinの後ろに付いている連番とkeysを同じ数字にします。
Count CHOPはすべて以下のように設定します。
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を以下のように書くと、キーボードが押されるたびにスクリプトを呼び出すようになります。
完成です、やったね。
これを応用すれば、MIDIからの入力とかもラジオボタンにできます。
ボタンの数を増やしたり減らしたい場合は、欲しい分だけオペレーターを用意してforの範囲を変更すればできると思います。ちなみにボタンの数が3つの場合はなんとかコードを書かなくても実装できます()。
ぐっちゃぐちゃだけどMIDIキーボードでラジオボタンできた pic.twitter.com/EIF1rQWilE
— を (@DosShrimp) 2021年4月28日
以上。