过多的Python OSC模块-使用哪一个?

过多的Python OSC模块-使用哪一个?,python,python-module,osc,Python,Python Module,Osc,开放式声音控制(OSC)是计算机、声音合成器和其他多媒体设备之间的通信协议,针对现代网络技术进行了优化。将OSC与MAX/MSP结合使用尤其常见——事实上,这就是我正在做的,将OSC与Python结合使用,与MAX中的另一个子系统进行对话 有许多python模块支持OSC。伟大的它们都声称是简单、有用和完美的。冒着接近主观领域的风险,您的经验为以下模块提供了哪些用例建议 (尽管这似乎是一个较旧的模块) 我想一个简单的实现对我来说是最好的,因为我对OSC只略知一二。我使用的是Python2

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

有许多python模块支持OSC。伟大的它们都声称是简单、有用和完美的。冒着接近主观领域的风险,您的经验为以下模块提供了哪些用例建议

  • (尽管这似乎是一个较旧的模块)

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

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

我对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,但不能同时使用这两种模块,这意味着您将来可能必须更改代码库并重写应用程序的一部分


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

我已经使用pyOSC多年了。。。当它从Python2迁移到Python3时,“我在那里”。好。。。如果我记不清楚的话,那一刻我让维修人员(阿尔特姆·巴金斯基)去做

现在,有两个页面承载pyOSC。。。而且,关于你的问题,其中一个页面(最旧的)承载了Python2版本。Github中的一个版本(它也很旧,不再开发),Python3版本

我不确定pyOSC的版本,因为OSC.py changelog没有提到Python版本。也许它没有被正确地记录下来

pyOSC 0.3.5(Python2):

pyOSC 0.3.6(Python3):


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

对于任何在每次寻找python OSC实现时遇到此stackoverflow问题的人,以及需要python 3的OSC实现的人,我可以确认osc4py3运行良好,并且有很好的文档记录

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

pyOSC:似乎没有维护,我找不到一个可用的Python3版本,我找到的一些声称为Python3更新的版本的链接被破坏

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

osc4py3:安装了pip,运行良好,每秒大约有1000条消息,没有问题,只要我确保在每条消息之后调用osc_process()


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

我只想提一下,我最近启动了一个新的实现,目标是干净的代码和对python2.7和python3的支持(只测试了3.6,但核心代码没有使用任何特定于它的东西)。如果您感兴趣的话,可以在上找到它,我非常小心地保持代码的整洁和文档化。它是麻省理工学院许可的。

我已经使用python osc 1.7.4 w/python 3.8在Windows 10上实现了osc到tpm2.net网关

诚然,我只使用了2天,这是我第一次尝试(我刚选了一个说它支持py3的,最近提交的,还有一个不错的例子)。。但它运行良好,没有任何问题

唯一的问题是,在README.md中,它说它支持OSC1.0,并且它们的版本是1.1,但对我来说这不是问题


谢谢。我和一对夫妇吵了一架,直到找到了皮奥斯克。然而,有一点需要注意:我用easy_安装拉下来的repos中没有一个版本在用于python2.7的OSX中工作。我在gitorious上获取了最新的开发版本,并以旧的skool方式安装了它,然后运行了setup.py,它为我的机器重新构建。您是否尝试过任何带有OSC的iOS应用程序?我很好奇:当我找到你的问题时,我本打算发布一个与上述问题类似的问题,但也询问与python库兼容的iOS应用程序。谢谢同意,pyOSC非常易于使用-我将它与python 2.7一起使用(通过PsychoPy)将标记事件发送到OSC流中,它非常简单(我以前曾尝试在Windows上编译pyliblo,但放弃创建dll失败),我只是尝试使用Python3,但它不起作用。osc4py3有很好的文档,您可以选择线程模型(即,没有线程,因为线程对于某些应用程序来说太滞后)。代码宿主是svn,这对某些人来说可能是一个挑战。此外,该许可证不是很常见的CeCILL-2.1(基本上是GPL,但是法语)。自上一个2017版以来,windows上的Liblo可以使用windows线程。在撰写本文时,Pyliblo自2015年以来就没有发布过版本,pypi上也没有二进制轮子。