TouchDesignerとpython間でOSC
背景
TouchDesignerには内部でpythonスクリプトを実行することが出来ますが、様々な事情によりTouchDesigner内部ではないpython (もちろん、他のマシン含め)とやり取りをしなければならない日が来ることもあります。
というケースが数回有りましたので、記録しておきます。
環境:
windows10, macos, TouchDesigner 2020.23680
python 3.7
OSC
TouchDesignerでのOSCについて
https://qiita.com/kodai100/items/5b614fed5f3e17b7f8f6
http://satoruhiga.com/TDWS2018/day9/
python側
pythonoscを使います。
'''
setup instruction
for Install pythonosc
pip install python-osc
'''
from pythonosc import dispatcher
from pythonosc import osc_server
from pythonosc import udp_client
def messege_handler(unused_addr, *p):
try:
print(p)
client.send_message("/message_echo", p)
except ValueError: pass
dispatcher = dispatcher.Dispatcher()
dispatcher.map("/message", messege_handler)
server = osc_server.ThreadingOSCUDPServer(("127.0.0.1", 5005), dispatcher)
print("Serving on {}".format(server.server_address))
client = udp_client.SimpleUDPClient("127.0.0.1", 5006)
server.serve_forever()
ここでは、port5005で受け取ったデータをそのまま、port5006へ送り返すようにしています。
TouchDesinger側
OSC OutDAT
とOSC InDAT
を使います。ポート番号が違うのに注意。
OSCを送るテストとして、textDATに下記を記載して、runします。
n = op('oscout1')
n.sendOSC('/message',['something', 9999])
Round Trip
同一マシン内(Windows10のRyzen 3960X CPU)でTD→Python→TDの経過時間は6msでした。IP指定をすれば他のマシンとのやり取りも可能です。
code
Author And Source
この問題について(TouchDesignerとpython間でOSC), 我々は、より多くの情報をここで見つけました https://qiita.com/shks/items/5feedbaeb5a743a484c7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .