【问题标题】:Sending messages from Python using osc4py3?使用 osc4py3 从 Python 发送消息?
【发布时间】:2020-01-09 20:05:41
【问题描述】:

我目前正在尝试弄清楚如何将 OSC 消息从 Python 发送到 Max/MSP。我目前正在使用 osc4py3 来执行此操作,并且我有一个来自文档的示例代码,假设它应该可以工作,写在这里:

from osc4py3.as_eventloop import *
from osc4py3 import oscbuildparse

# Start the system.
osc_startup()

# Make client channels to send packets.
osc_udp_client("127.0. 0.1", 5000, "tester")

msg = oscbuildparse.OSCMessage("/test/me", ",sif", ["text", 672, 8.871])
osc_send(msg, "tester")

Max 中的接收器只是一个监听端口 5000 的 udprecieve 对象。我设法让 Processing 向 Max 发送 OSC 消息,它使用 oscp5 库非常简单,但我似乎没有同样的运气Python。

我错过了什么?此外,我并不完全了解在 osc4py3 中构建 OSC 消息的结构,即使在尽我所能完成文档之后也是如此;如果有人愿意用类似

的方式解释到底发生了什么(即争论)
msg = oscbuildparse.OSCMessage("/test/me", ",sif", ["text", 672, 8.871])

那我将永远感激不尽。

我对使用另一个 OSC 库完全持开放态度,但我所要求的只是如何发送消息(我曾尝试使用 pyOSC,但事实证明这对我来说太混乱了)。

【问题讨论】:

    标签: python networking osc max-msp-jitter


    【解决方案1】:

    也许您已经解决了它,但在发布的代码中存在两个问题。一种是IP地址格式(第二个“0”前有一个空格)。然后你最后需要命令 osc.process() 。所以下面的方法应该可以工作

    from osc4py3.as_eventloop import *
    from osc4py3 import oscbuildparse
    
    # Start the system.
    osc_startup()
    
    # Make client channels to send packets.
    osc_udp_client("127.0.0.1", 5000, "tester")
    
    msg = oscbuildparse.OSCMessage("/test/me", ",sif", ["text", 672, 
    8.871])
    osc_send(msg, "tester")
    osc_process()
    

    希望可以解决

    【讨论】:

      【解决方案2】:

      在 osc4py3 中有不同的可能调度策略。该文档使用带有as_eventloop 的事件循环模型,其中用户代码必须定期调用osc_process() 以让osc4py3 处理内部消息队列和通信。

      用于发送 OSC 消息的 client exampleosc_process() 调用包装在一个循环中(通常它是在一个事件处理循环中)。

      您可以通过在代码开头导入具有完整多线程调度策略的名称来关闭 osc_process() 调用:

      from osc4py3.as_allthreads import *
      

      第三个调度策略是as_comthreads,其中通信在后台线程中处理,但接收到的消息(在服务器端)在osc_process()调用时同步处理。

      (osc4py3作者)

      【讨论】:

        猜你喜欢
        • 2015-05-14
        • 2013-02-12
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        • 2014-04-18
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多