基于异步的最小开放式声音控制(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传递。
当然,欢迎提出建议、错误报告、问题和/或请求。