23

开放式声音控制 (OSC) 是一种用于计算机、声音合成器和其他多媒体设备之间通信的协议,已针对现代网络技术进行了优化。将 OSC 与 MAX/MSP 一起使用是特别常见的——这实际上是我正在做的,使用 OSC 和 Python 与 MAX 中的另一个子系统通信。

有一堆支持 OSC 的 python 模块。伟大的。他们都声称简单、有用和完美。冒着进入主观领域的风险,您的经验对以下模块有什么建议?

我想一个简单的实现对我来说是最好的,因为我对 OSC 只熟悉了一眼。我正在使用 Python 2.7。

4

6 回答 6

13

对于每次在寻找 python OSC 实现并且需要适用于 Python 3 的 OSC 实现时遇到这个 stackoverflow 问题的任何其他人,我可以确认 osc4py3 运行良好并且有据可查。

我在 2018 年 1 月 22 日的调查结果:

pyOSC:似乎没有得到维护,我找不到工作的 Python3 版本,我发现一些声称为 python3 更新的版本的链接被破坏了。

aiosc:在测试中工作(并且似乎是一个很酷的实现),但由于某种原因,它在我需要的带宽几秒钟后失败并出现“打开的文件太多”错误。

osc4py3:使用 pip 安装,运行良好,并且在每秒大约一千条消息的情况下给我零问题,只要我确保在每条消息后调用 osc_process()。

可能还有另一个 OSC 版本,它是专为 py3k 设计的,并且有更多人在使用,但由于该领域仍然有点不透明,我觉得这可能是分享这个的最合适的地方。我希望它可以节省别人一点时间。

于 2018-01-23T02:27:49.497 回答
10

我在 OSX 上成功使用了 pyOSC。代码没有经过太多开发,但这很可能是由于它的稳定性和简单性。我简单地尝试了 txosc,它可能需要进一步测试。

我对 pyosc 的使用有限,但效果很好。例如。

import OSC
c = OSC.OSCClient()
c.connect(('127.0.0.1', 57120))   # connect to SuperCollider
oscmsg = OSC.OSCMessage()
oscmsg.setAddress("/startup")
oscmsg.append('HELLO')
c.send(oscmsg)
于 2014-03-03T17:10:08.493 回答
7

这并不是问题所问的,但我认为这里值得一提:关于各种 Python OSC 模块的一件烦人的事情是,大多数都可以使用 Python 2.x 或 Python 3.x ,但不能同时使用两者,这意味着您将来可能需要更改代码库并重写部分应用程序。

我发现唯一同时针对 Python 2.x 和 3.x 的是Pyliblo,它实际上是 C 库Liblo的包装器。Liblo 已经过专门测试,可以与 Pd 和 SuperCollider 一起使用(请参阅其主页末尾的注释),这是我在使用此类库时最关心的... Liblo 的一个缺点是它有点难以开始工作在 MS Windows 上,因为它仅支持 POSIX 线程 (pthreads) 但不支持本机 win32 线程 API,因此您需要一个仿真库,如http://liblo.sourceforge.net/README-platforms.html中所述。但是您也可以在 Windows 上禁用线程来编译它。

于 2014-12-18T11:51:33.133 回答
2

我已经使用 pyOSC 多年了......当它从 Python 2 迁移到 3 时“我就在那儿”。嗯......如果我记不太清了,我当时问维护者(Artem Baguinski)去做吧!

现在,有两个页面托管 pyOSC ......并且,关于您的问题,其中一个页面(最旧的)托管 Python2 版本。还有 Github 中的一个(它也很旧,不再开发),Python3 版本。

我不确定 pyOSC 版本,因为 OSC.py 更改日志没有说明 Python 版本。也许它没有正确记录。

pyOSC 0.3.5 (Python2): https://trac.v2.nl/wiki/pyOSC

pyOSC 0.3.6 (Python3): https://github.com/ptone/pyosc

正如 ptr 所说,它很容易实现。我用来连接 Blender 游戏引擎和 PureData。

于 2015-07-25T02:00:52.367 回答
1

我只想提一下,我最近开始了一个新的实现,目标是干净的代码和对 python2.7 和 python3 的支持(只测试了 3.6,但核心代码没有使用任何特定的东西)。如果您有兴趣,可以在https://pypi.org/project/oscpy/https://github.com/kivy/oscpy找到它,我非常注意保持代码的清洁和记录。它是麻省理工学院许可的。

于 2018-04-09T23:31:00.203 回答
0

我已使用带有 Python 3.8 的 python-osc 1.7.4 在 Windows 10 上实现 OSC 到 tpm2.net 网关。

诚然,我只使用了 2 天,这是我尝试的第一个(我刚刚选择了一个说它支持 py3,最近有提交,以及一个不错的例子).. 但它工作得很好,没有问题...

唯一的问题是,在 README.md 中,它说它支持 OSC 1.0,并且最高支持 1.1,但对我来说这不是问题。

https://github.com/attwad/python-osc

于 2020-01-08T00:26:08.340 回答