15 releases (stable)
| new 4.2.0 | Mar 9, 2026 |
|---|---|
| 4.1.0 | Mar 6, 2026 |
| 4.0.3 | Feb 22, 2026 |
| 3.3.1 | Feb 18, 2026 |
| 0.1.8 | Jan 22, 2026 |
#6 in #artnet
Used in clasp-cli
400KB
9K
SLoC
clasp-bridge
Protocol bridges for CLASP, enabling communication with external protocols like OSC, MIDI, MQTT, WebSocket, HTTP, Art-Net, and DMX.
Supported Protocols
| Protocol | Feature Flag | Transport | Direction |
|---|---|---|---|
| OSC | osc |
UDP | Bidirectional |
| MIDI | midi |
USB/Virtual | Bidirectional |
| MQTT | mqtt |
TCP/TLS | Bidirectional |
| WebSocket | websocket |
TCP | Bidirectional |
| HTTP | http |
TCP | Bidirectional |
| Art-Net | artnet |
UDP | Bidirectional |
| DMX | dmx |
Serial | Output |
| sACN | sacn |
UDP Multicast | Output |
| Socket.IO | socketio |
TCP | Bidirectional |
Usage
use clasp_bridge::{OscBridge, OscBridgeConfig, Bridge, BridgeEvent};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let config = OscBridgeConfig {
bind_addr: "0.0.0.0:9000".to_string(),
namespace: "/osc".to_string(),
..Default::default()
};
let mut bridge = OscBridge::new(config);
let mut events = bridge.start().await?;
while let Some(event) = events.recv().await {
match event {
BridgeEvent::ToClasp(msg) => {
println!("Received: {:?}", msg);
}
BridgeEvent::Connected => println!("Bridge connected"),
_ => {}
}
}
Ok(())
}
Bridge Trait
All bridges implement the Bridge trait:
#[async_trait]
pub trait Bridge: Send + Sync {
fn config(&self) -> &BridgeConfig;
async fn start(&mut self) -> Result<mpsc::Receiver<BridgeEvent>>;
async fn stop(&mut self) -> Result<()>;
async fn send(&self, message: Message) -> Result<()>;
fn is_running(&self) -> bool;
fn namespace(&self) -> &str;
}
Feature Flags
Enable only the protocols you need:
[dependencies]
clasp-bridge = { version = "0.1", default-features = false, features = ["osc", "mqtt"] }
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Maintained by LumenCanvas | 2026
Dependencies
~10–49MB
~649K SLoC