Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

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を使います。

OSC-Python.py

'''
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 OutDATOSC InDATを使います。ポート番号が違うのに注意。

image.png

OSCを送るテストとして、textDATに下記を記載して、runします。

textDat

n = op('oscout1')
n.sendOSC('/message',['something', 9999])

Round Trip

同一マシン内(Windows10のRyzen 3960X CPU)でTD→Python→TDの経過時間は6msでした。IP指定をすれば他のマシンとのやり取りも可能です。

code

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?