针对CircuitPython和CPython的最小OSC解析器和服务器
项目描述
简介
针对CircuitPython和CPython的最小OSC解析器、服务器和客户端
Open Sound Control 是一种用于音乐或其他类似活动实时性能消息的高效数据传输编码/协议。OSC字节编码设计为半可读性,足以支持UDP数据包传输。
OSC消息由一个“OSC地址”(例如“/1/faderA”)和可选的“OSC参数”定义,参数是一或多个可能的数据类型(例如float32或int32)。OSC没有预先定义特定的OSC地址,由发送方和接收方协商确定。
此“MicroOSC”库是一个最小的UDP接收器(“OSC服务器”)和OSC数据包解析器。MicroOSC UDP接收器支持CircuitPython和CPython上的单播和多播UDP。
要求
要运行此库,您需要以下之一
具有原生wifi支持的CircuitPython板,如基于ESP32-S2、ESP32-S3等。
桌面Python(CPython)计算机
要发送OSC消息,您需要一个OSC UDP发送器(也称为“OSC客户端”)。一些易于使用的OSC客户端包括:
要接收OSC消息,您需要一个OSC UDP接收器(也称为“OSC服务器”)。一些易于使用的OSC客户端包括:
依赖关系
此驱动程序依赖于
请确保所有依赖项都可在CircuitPython文件系统中使用。这可以通过下载Adafruit库和驱动程序捆绑包或使用circup安装单个库来轻松实现。
从PyPI安装
在支持的GNU/Linux系统(如Raspberry Pi)上,您可以从PyPI本地安装驱动程序从PyPI安装。要为当前用户安装
pip3 install circuitpython-microosc
要全局安装(在某些情况下可能需要)
sudo pip3 install circuitpython-microosc
要在当前项目的虚拟环境中安装
mkdir project-name && cd project-name
python3 -m venv .venv
source .env/bin/activate
pip3 install circuitpython-microosc
使用Circup将驱动程序安装到已连接的CircuitPython设备上
请确保您已在Python环境中安装了circup。如果需要,请使用以下命令安装它
pip3 install circup
安装circup并连接您的CircuitPython设备后,使用以下命令安装
circup install microosc
或以下命令更新现有版本
circup update
使用示例
import time, os, wifi, socketpool
import microosc
UDP_HOST = "224.0.0.1" # multicast UDP
UDP_PORT = 5000
ssid = os.getenv("CIRCUITPY_WIFI_SSID")
password = os.getenv("CIRCUITPY_WIFI_PASSWORD")
print("connecting to WiFi", ssid)
wifi.radio.connect(ssid, password)
socket_pool = socketpool.SocketPool(wifi.radio)
def fader_handler(msg):
"""Used to handle 'fader' OscMsgs, printing it as a '*' text progress bar
:param OscMsg msg: message with one required float32 value
"""
print(msg.addr, "*" * int(20 * msg.args[0])) # make a little bar chart
dispatch_map = {
"/": lambda msg: print("\t\tmsg:", msg.addr, msg.args), # prints all messages
"/1/fader": fader_handler,
"/filter1": fader_handler,
}
osc_server = micro_osc.Server(socket_pool, UDP_HOST, UDP_PORT, dispatch_map)
print("MicroOSC server started on ", UDP_HOST, UDP_PORT)
last_time = time.monotonic()
while True:
osc_server.poll()
if time.monotonic() - last_time > 1.0:
last_time = time.monotonic()
print(f"waiting {last_time:.2f}")
参考
文档
此库的API文档可在Read the Docs上找到。
有关构建库文档的信息,请参阅此指南。
贡献
欢迎贡献!在向本项目贡献之前,请阅读我们的行为准则,以帮助保持本项目的友好性。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
circuitpython-microosc-0.5.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8977001e04816b3de71df378da5894afbef6b2d579f0259b22d48953bc4a6c5c |
|
MD5 | a96a2b5bce7197b64cf6629cfe2586ef |
|
BLAKE2b-256 | 044cde23a061db191523331722596686325367d307c19504a9dffa98fefe6021 |