纯python中的开放式声音控制服务器和客户端实现

python-osc的Python项目详细描述


pure python中打开声音控制服务器和客户端实现(3.5+)。

https://travis-ci.org/attwad/python-osc.svg?branch=master

当前状态

这个库是按照 http://opensoundcontrol.org/spec-1_0 目前处于稳定状态。

功能

  • udp阻塞/线程/分叉/异步服务器实现
  • udp客户端
  • int、float、string、double、midi、timestamps、blob osc参数
  • 简单的OSC地址<;->;回调匹配系统
  • 广泛的单元测试覆盖率
  • 基本的客户机和服务器示例

安装

python osc是一个纯python库,它没有外部依赖项, 要安装它,只需使用pip(首选):

https://img.shields.io/pypi/v/python-osc.svg
$ pip install python-osc

或者来自开发版本的原始源:

$ python setup.py test
$ python setup.py install

示例

简单客户端

"""Small example OSC client

This program sends 10 random values between 0.0 and 1.0 to the /filter address,
waiting for 1 seconds between each value.
"""importargparseimportrandomimporttimefrompythonoscimportudp_clientif__name__=="__main__":parser=argparse.ArgumentParser()parser.add_argument("--ip",default="127.0.0.1",help="The ip of the OSC server")parser.add_argument("--port",type=int,default=5005,help="The port the OSC server is listening on")args=parser.parse_args()client=udp_client.SimpleUDPClient(args.ip,args.port)forxinrange(10):client.send_message("/filter",random.random())time.sleep(1)

简单服务器

"""Small example OSC server

This program listens to several addresses, and prints some information about
received packets.
"""importargparseimportmathfrompythonoscimportdispatcherfrompythonoscimportosc_serverdefprint_volume_handler(unused_addr,args,volume):print("[{0}] ~ {1}".format(args[0],volume))defprint_compute_handler(unused_addr,args,volume):try:print("[{0}] ~ {1}".format(args[0],args[1](volume)))exceptValueError:passif__name__=="__main__":parser=argparse.ArgumentParser()parser.add_argument("--ip",default="127.0.0.1",help="The ip to listen on")parser.add_argument("--port",type=int,default=5005,help="The port to listen on")args=parser.parse_args()dispatcher=dispatcher.Dispatcher()dispatcher.map("/filter",print)dispatcher.map("/volume",print_volume_handler,"Volume")dispatcher.map("/logvolume",print_compute_handler,"Log volume",math.log)server=osc_server.ThreadingOSCUDPServer((args.ip,args.port),dispatcher)print("Serving on {}".format(server.server_address))server.serve_forever()

构建捆绑包

frompythonoscimportosc_bundle_builderfrompythonoscimportosc_message_builderbundle=osc_bundle_builder.OscBundleBuilder(osc_bundle_builder.IMMEDIATELY)msg=osc_message_builder.OscMessageBuilder(address="/SYNC")msg.add_arg(4.0)# Add 4 messages in the bundle, each with more arguments.bundle.add_content(msg.build())msg.add_arg(2)bundle.add_content(msg.build())msg.add_arg("value")bundle.add_content(msg.build())msg.add_arg(b"\x01\x02\x03")bundle.add_content(msg.build())sub_bundle=bundle.build()# Now add the same bundle inside itself.bundle.add_content(sub_bundle)# The bundle has 5 elements in total now.bundle=bundle.build()# You can now send it via a client as described in other examples.

执照?

无证,随你怎么办。(http://unlicense.org

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

推荐PyPI第三方库


热门话题
空字符串检查在java中未按预期工作   JavaSpringWebClient:自动计算主体的HMAC签名并将其作为头传递   foreach是否有一个Java等效的foreach循环和一个引用变量?   java如何在Eclipse中导入jar   使用特定第三方或java时lombok触发错误。*方法或构造函数   安卓 java将对象数组转换为int数组   java使一定百分比的JUnit测试通过   java Android:将Seekbar的一个值与另一个值进行比较   java将int数组(图像数据)写入文件的最佳方式是什么   java取代了系统。yml的构造函数内的getProperty   sqlite Java将公钥和私钥转换为字符串,然后再转换回字符串   安卓获取白色像素并将其保存到java opencv中的数组中   java为什么是ServerSocket。setSocketFactory静态?   Java数组似乎在不直接修改的情况下更改值