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

时间:2014-03-03 00:10:21

标签: python python-module osc

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

有许多支持OSC的python模块。大。他们都声称自己简单,实用,完美。面临主观领域的风险,您的经验建议用于以下模块?

我认为一个简单的实现对我来说是最好的,因为我对OSC只有一点了解。我正在使用Python 2.7。

6 个答案:

答案 0 :(得分: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)

答案 1 :(得分:6)

这不是问题所针对的问题,但我认为这里值得一提的是:各种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上禁用线程编译它。

答案 2 :(得分:6)

对于每次遇到这个stackoverflow问题的人来说,每次他们都在寻找python OSC实现,并且需要为Python 3实现一个有效的OSC实现 - 我可以确认osc4py3运行良好并且有详细记录。

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

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

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

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

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

答案 3 :(得分:2)

我多年来一直在使用pyOSC ......而且"我在那里"当它从Python 2迁移到3.好吧......如果我不记得了,我在那一刻(Artem Baguinski)请求维护者去做!

现在,有两个托管pyOSC的页面......对于你的问题,其中一个页面(最旧的)托管Python2版本。而Github中的那个(它也是旧的,不再开发的),Python3版本。

我不确定pyOSC版本,因为OSC.py changelog没有提及Python版本。也许它没有被正确地解释。

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

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

正如ptr所说,它很容易实现。我用来连接Blender Game Engine和PureData。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我已经使用python-osc 1.7.4 w / Python 3.8在Windows 10上的tpm2.net网关上实现了OSC。

当然,我只使用了2天,这是我尝试的第一个(我选择了一个说它支持py3,最近提交的内容以及一个不错的示例)。没问题...

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

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