在纯 Python 中打开声音控制服务器和客户端实现
项目描述
在纯 python (3.5+)中打开声音控制服务器和客户端实现。
当前状态
该库是按照 http://opensoundcontrol.org/spec-1_0的规范开发的 ,目前处于稳定状态。
特征
UDP阻塞/线程/分叉/异步服务器实现
UDP客户端
int、int64、float、string、double、MIDI、时间戳、blob OSC 参数
简单的 OSC 地址<->回调匹配系统
广泛的单元测试覆盖率
基本客户端和服务器示例
文档
安装
python-osc 是一个没有外部依赖的纯 python 库,安装它只需使用 pip (首选):
$ 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.
"""
import argparse
import random
import time
from pythonosc import udp_client
if __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)
for x in range(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.
"""
import argparse
import math
from pythonosc import dispatcher
from pythonosc import osc_server
def print_volume_handler(unused_addr, args, volume):
print("[{0}] ~ {1}".format(args[0], volume))
def print_compute_handler(unused_addr, args, volume):
try:
print("[{0}] ~ {1}".format(args[0], args[1](volume)))
except ValueError: pass
if __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()
构建捆绑包
from pythonosc import osc_bundle_builder
from pythonosc import osc_message_builder
bundle = 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 )
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
python-osc-1.8.0.tar.gz
(25.3 kB
查看哈希)
内置分布
python_osc-1.8.0-py3-none-any.whl
(32.0 kB
查看哈希)
关
python_osc -1.8.0-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 9e2abb2fc9ba2c356f8e951609a03c9c7017bf0bad82cca8490e9b8af9e92a0b |
|
| MD5 | 9c83229315b6d159a74840be5bae4289 |
|
| 布莱克2-256 | 08965a71fb55fe48170f97fe01916500cb5b482bbacbd4931546b4a47274fae5 |