从Python到scsynth
通过pyosc
的通信顺利进行,但是当尝试接收来自scsynth audio server
(仅scsynth
而不是{{1}的Python osc消息时}}),我不明白如何让端口SuperCollider
发送到。
如果我尝试发送" / notify"发送到scsynth
的邮件应该使用发送地址回复,但是scsynth
我无法在与发送地址相同的端口上设置侦听器,因此我无法检索应该回来的信息。
有关如何做的任何建议吗?
答案 0 :(得分:1)
您可以使用OSCClient.setServer
告诉您的OSC客户端使用服务器的套接字进行传输。这是一个示例,用于说明在套接字8000中发送和接收OSC消息的位置:
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()
答案 1 :(得分:0)
我几乎肯定发送者和接收者必须在不同的端口上。用于接收的端口也不能同时用于发送。
关于将OSC消息发送回pyosc我不明白你为什么不使用NetAddr.new
然后使用.sendMSg()
。例如(这来自OSC Communication的文档):
b = NetAddr.new("127.0.0.1", 7771);
b.sendMsg("/hello", "there");
更多信息here。
如果你想从SC自动回复那么你可以写一种方法来触发响应.sendMsg
进入你的OSCDef或OSCFunc,例如,它可以简单地等待来自python的初始消息并回复你的任何内容想让python回来。