使用PyOsc从scsynth到python的OSC通信

时间:2016-11-21 13:06:47

标签: python osc supercollider

从Python到scsynth通过pyosc的通信顺利进行,但是当尝试接收来自scsynth audio server(仅scsynth而不是{{1}的Python osc消息时}}),我不明白如何让端口SuperCollider发送到。

如果我尝试发送" / notify"发送到scsynth的邮件应该使用发送地址回复,但是scsynth我无法在与发送地址相同的端口上设置侦听器,因此我无法检索应该回来的信息。

有关如何做的任何建议吗?

2 个答案:

答案 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回来。