use sim_citizen_derive::Citizen;
use sim_kernel::{Diagnostic, Symbol};
use sim_lib_midi_core::DEFAULT_US_PER_QUARTER;
use sim_lib_stream_core::StreamValue;
pub struct BridgeOutput {
pub stream: StreamValue,
pub diagnostics: Vec<Diagnostic>,
}
#[derive(Clone, Debug, PartialEq, Citizen)]
#[citizen(symbol = "stream-bridge/RenderOptions", version = 1)]
pub struct StreamBridgeRenderOptions {
pub sample_rate: u32,
pub channels: u8,
pub chunk_frames: usize,
}
impl Default for StreamBridgeRenderOptions {
fn default() -> Self {
Self {
sample_rate: 48_000,
channels: 2,
chunk_frames: 512,
}
}
}
#[derive(Clone, Debug, PartialEq, Citizen)]
#[citizen(symbol = "stream-bridge/LiftMidiOptions", version = 1)]
pub struct StreamBridgeLiftMidiOptions {
pub sample_rate: u32,
pub tpq: u16,
pub us_per_quarter: u32,
pub min_confidence: f64,
pub window_size: usize,
pub hop_size: usize,
pub max_events_per_packet: usize,
}
impl Default for StreamBridgeLiftMidiOptions {
fn default() -> Self {
Self {
sample_rate: 48_000,
tpq: 480,
us_per_quarter: DEFAULT_US_PER_QUARTER,
min_confidence: 0.75,
window_size: 2048,
hop_size: 512,
max_events_per_packet: 64,
}
}
}
pub fn stream_bridge_symbol() -> Symbol {
Symbol::qualified("stream", "bridge")
}
pub fn stream_bridge_render_options_class_symbol() -> Symbol {
Symbol::qualified("stream-bridge", "RenderOptions")
}
pub fn stream_bridge_lift_midi_options_class_symbol() -> Symbol {
Symbol::qualified("stream-bridge", "LiftMidiOptions")
}