大量的Python OSC模块-使用哪一个?

2024-05-16 07:10:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有很多python模块支持OSC。伟大的。他们都声称自己简单、有用、完美。冒着接近主观领域的风险,您的经验对以下模块建议了哪些用例?

我想一个简单的实现对我来说是最好的,因为我对OSC只略知一二。我使用的是Python2.7。


Tags: 模块网络声音协议计算机对话技术max
3条回答

对于那些每次在寻找python OSC实现时遇到stackoverflow问题并且需要python 3的有效OSC实现的人来说,我可以确认osc4py3工作良好并且有很好的文档记录。

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

pyOSC:似乎没有被维护,我找不到一个可用的Python3版本,我找到的指向声称要为Python3更新的版本的一些链接已断开。

aiosc:在测试中工作过(看起来是一个很酷的实现),但由于某种原因,在我需要的带宽数秒后,它因“打开的文件太多”错误而失败。

osc4py3:与pip一起安装,运行良好,每秒大约有1000条消息给我带来零个问题,只要我确保在每条消息之后调用osc_process()。

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

我在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)

这并不完全是问题所在,但我认为这里值得一提:各种Python OSC模块的一个令人恼火的地方是,大多数都可以使用Python 2.x或Python 3.x但不能同时使用这两个模块,这意味着您将来可能需要更改代码基并重写部分应用程序。

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

相关问题 更多 >