基于异步的最小开放式声音控制(osc)通信模块

aiosc的Python项目详细描述


这是一个实验性的最低限度开放式声音控制(OSC)通信 使用Asyncio进行网络操作并与 异步事件循环。

安装

aiosc至少需要python 3.5。它可以使用pip安装:

pip3 install aiosc

或者使用用户选项在本地安装aiosc:

pip3 install --user aiosc

用法

要发送OSC消息,只需使用aiosc.send

importasyncioimportaioscloop=asyncio.get_event_loop()loop.run_until_complete(aiosc.send(('127.0.0.1',9000),'/hello','world'))

要用aiosc实现osc服务器,应该创建udp端点 使用aiosc.OSCProtocol作为协议。OSCProtocol可以是子类 或者直接用字典构造OSC地址模式到 传入消息的处理程序方法:

classEchoServer(aiosc.OSCProtocol):def__init__(self):super().__init__(handlers={'/sys/exit':lambdaaddr,path,*args:sys.exit(0),'//*':self.echo,})defecho(self,addr,path,*args):print("incoming message from {}: {} {}".format(addr,path,args))loop=asyncio.get_event_loop()coro=loop.create_datagram_endpoint(EchoServer,local_addr=('127.0.0.1',9000))transport,protocol=loop.run_until_complete(coro)loop.run_forever()

有关更多示例,请参见examples/

OSC地址模式

aiosc使用glob样式的地址将消息分派给处理程序方法 OSC1.0规范中描述的模式匹配。//运算符 也支持OSC1.1的初步规范。

示例:

  • /hello/world匹配/hello/world
  • /hello/*匹配/hello/world/hello/sarah
  • /{hello,goodbye}//world匹配/hello/world/goodbye/cruel/world
  • //*匹配任何地址。

注释

尚未支持捆绑包。

与大多数osc实现相反,osc数据类型是从 开放式声音控制的特点和未来中的初步规范 NIME纸张的1.1版。例如,“i”类型标签被解码为脉冲 (又名“bang”)作为aiosc.Impulsesingleton传递。

当然,欢迎提出建议、错误报告、问题和/或请求。

许可证

版权所有(c)2014 Artem Popov<;artfwo@gmail.com>;

aiosc是根据mit许可证授权的,详情请参阅许可证文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
爪哇太阳报。安全验证器。ValidatorException:PKIX路径生成失败   java理解为什么在onDispatchTouchEvent()返回True后仍调用onClick()   java如何在资源包中使用JSF标记/如何在资源包中重写URL?   java什么是流控制异常的替代方案?   java使用Spring数据JPA/MongoDB交叉存储,一个查询可以跨越两个数据库吗?   Apache Sling/felix中的java OSGi slf4j日志记录   为什么当我们想要水平/垂直旋转矩阵时,我们要把这个项除以2?   尝试从外部网页接收JSON字符串时出现安卓 Java NullPointerException   java执行异常:从Callable调用方法时   java在jetty上以调试模式运行webapp,使用maven jetty插件在intellij中构建成功(应用程序应在调试模式下启动)   带有内存数据库的linux Java应用程序的构建时间太长   基于java的随机数单元测试算法   java类型javax。摆动JComponent无法解析   Google日历API和UI小部件Java   java tomcat没有突然和任意地响应   java无法使用jsoup在html中获取图像src   我无法让Java接受键盘输入字符串   java如何开始使用Bambol而不让部署永远继续?   java如何使用另一个类的actionPerformed方法删除一个类/组件中的按钮?   java JSON反序列化brakets{}中的一系列对象