纯Python实现的Open Sound Control服务器和客户端
项目描述
纯Python实现的Open Sound Control服务器和客户端。
当前状态
该库遵循OpenSoundControl规范1.0 开发,目前处于稳定状态。
功能
UDP阻塞/线程/分叉/asyncio服务器实现
UDP客户端
int, int64, float, string, double, MIDI, 时间戳,blob,nil OSC参数
简单的OSC地址<->回调匹配系统
广泛的单元测试覆盖率
基本的客户端和服务器示例
文档
安装
python-osc是一个没有外部依赖的纯Python库,要安装它只需使用pip(首选)
$ pip install python-osc
示例
简单客户端
"""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.dispatcher 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.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.9.0.tar.gz (33.0 kB 查看哈希)
构建分发
python_osc-1.9.0-py3-none-any.whl (43.7 kB 查看哈希)
关闭
python_osc-1.9.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab50f66b1a19efd5bff722f26ab6450df19cdd84ba868f08c9a33e7c78514456 |
|
MD5 | 9c343b61f6ecef1797ab3a46fcf4b6d4 |
|
BLAKE2b-256 | 2fc9d529263be224e4e093f4f5903025c0014a3e8a35505d15d82660378b31ef |
关闭
python_osc-1.9.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4b16d8c4ae6a8a291037b2216a188d8654a4babe721387b8a37f89470b0c82c1 |
|
MD5 | b261b79e6574ff03d914b8138c60f7ab |
|
BLAKE2b-256 | 2b91435d6a132c120136bcae4a6f3017c312acbbe41f31dc48568e9210928956 |