从 Python 到scsynth
via的通信pyosc
进展顺利,但是当尝试在 Python osc 中接收从scsynth audio server
(只是scsynth
,不是SuperCollider
)发送的消息时,我不明白如何让端口scsynth
发送到。
如果我尝试向它发送“/通知”消息,scsynth
它应该回复发送地址,但是pyosc
我无法在与发送端口相同的端口上设置侦听器,因此我无法检索应该出现的信息背部。
关于如何做到这一点的任何建议?
从 Python 到scsynth
via的通信pyosc
进展顺利,但是当尝试在 Python osc 中接收从scsynth audio server
(只是scsynth
,不是SuperCollider
)发送的消息时,我不明白如何让端口scsynth
发送到。
如果我尝试向它发送“/通知”消息,scsynth
它应该回复发送地址,但是pyosc
我无法在与发送端口相同的端口上设置侦听器,因此我无法检索应该出现的信息背部。
关于如何做到这一点的任何建议?
您可以通过使用OSCClient.setServer
告诉您的 OSC 客户端使用服务器的套接字进行传输来完成此操作。下面是一个示例来说明 OSC 消息在套接字 8000 上发送和接收的情况:
import OSC
def handle_message(address, tags, contents, source):
# prints out the message
print(address)
print(source)
server = OSC.OSCServer(("localhost",8000))
server.addMsgHandler("/test", handle_message)
msg = OSC.OSCMessage("/test", [1])
client = OSC.OSCClient()
client.setServer(server)
client.connect(("localhost", 8000))
client.send(msg)
server.serve_forever()
我几乎肯定发送者和接收者必须在不同的端口上。一个用于接收的端口不能同时用于发送。
关于将 OSC 消息发送回 pyosc 我不明白你为什么不使用NetAddr.new
then .sendMSg()
。例如(这来自 OSC 通信的文档):
b = NetAddr.new("127.0.0.1", 7771);
b.sendMsg("/hello", "there");
更多信息在这里。
例如,如果您想从 SC 自动回复,那么您可以编写一种方法来触发对.sendMsg
您的 OSCDef 或 OSCFunc 的响应,例如,它可以简单地等待来自 python 的初始消息并以您希望 python 返回的任何内容进行响应。