纯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在Android中维护应用程序状态   javajavacc:如何指定在特定上下文中需要哪些令牌?   java为什么改型会在重新加载数据时设置以前的响应?   java如何将键转换为字符串,反之亦然   java JDOM解析器插入#固定手动属性   java按元素对XML数据排序?   java Android中有哪些哈希算法?   java为什么使用可选返回类型进行单元测试失败?   Gson和argonauts使用Gson将javascript数组转换为json字符串并转换为javapojo时遇到的问题。试图让我的结构正确   java中的空格   java SQLite高分,草率IndexOutofBounds Android   使用Spring OAUTH2的java Make客户端   netbeans如何在java中创建一个JPopupMenu,其中包含一个要复制文本的项