use crate::sample::Sample; use std::sync::Arc; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum LoopMode { Off, On, } pub trait AudioBridge { fn play( &mut self, bank_id: u8, sample_id: u16, voice_id: usize, volume: u8, pan: u8, pitch: f64, priority: u8, loop_mode: LoopMode, ); fn play_sample( &mut self, sample: Arc, voice_id: usize, volume: u8, pan: u8, pitch: f64, priority: u8, loop_mode: LoopMode, ); fn stop(&mut self, voice_id: usize); fn set_volume(&mut self, voice_id: usize, volume: u8); fn set_pan(&mut self, voice_id: usize, pan: u8); fn set_pitch(&mut self, voice_id: usize, pitch: f64); fn is_playing(&self, voice_id: usize) -> bool; fn clear_commands(&mut self); }