# [Session 12] Touch Designer 進階 - 期末專題與表演實務
生成式演算互動藝術實作 (13:20-16:20) - 陽明交大 IAA 應用藝術研究所 | 教師:[吳哲宇](https://www.instagram.com/cheyuwu345/)
[課堂資料目錄](https://drive.google.com/drive/u/3/folders/14EyKA1-UPyZn3iTJCQ2opIASW8K3SsOs)
## Rundown
* 看大家的期末規劃
* 分享一些最近的作品
* TD 進階教學
## 直播留存
## 課堂檔案
## 課程目標
* Perform Mode
* 控制台
* Container / Children
* Table
* 外部組件Color Picket
* 建構自己常用的控制台組合
* Audio: Music Lock to timeline
* 表演訊號控制
* COMP: Animation
* Beat
* WEB render w/ p5.js
* 共用音訊組件
## 參考資料
https://www.elekktronaut.com/tutorials/music-videos-in-td
https://www.elekktronaut.com/tutorials/perform-mode-projector-setup
Building a Step Sequencer for VSTs in TouchDesigner
https://www.youtube.com/watch?v=HnAy3y9_SHM
Color Picker
https://www.patreon.com/posts/colorpicker-for-47031212
Water Color
https://www.youtube.com/watch?v=0nI8V7XZ7yk&t=659s
Pixel Sorting
https://www.youtube.com/watch?v=xasLIEw23zY
trigger web render global variable

```python!
# me - this DAT
#
# channel - the Channel object which has changed
# sampleIndex - the index of the changed sample
# val - the numeric value of the changed sample
# prev - the previous sample value
#
# Make sure the corresponding toggle is enabled in the CHOP Execute DAT.
global tx
global ty
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):
global tx, ty
#print(channel[0])
#
print(f"Channel: {channel.name}, Value: {val}")
if channel.name == "tx":
tx=val
elif channel.name == "ty":
ty=val
op('webrender1').interactMouse(tx+0.5,ty+0.5)
return
```
文字當作材質陣列
