use crate::sample::Sample; use std::sync::Arc; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum LoopMode { Off, On, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] #[repr(i32)] pub enum AudioOpStatus { Ok = 0, VoiceInvalid = 1, SampleNotFound = 2, ArgRangeInvalid = 3, AssetNotFound = 4, NoEffect = 5, BankInvalid = 6, } pub trait AudioBridge { #[allow(clippy::too_many_arguments)] fn play( &mut self, bank_id: u8, sample_id: u16, voice_id: usize, volume: u8, pan: u8, pitch: f64, priority: u8, loop_mode: LoopMode, ) -> AudioOpStatus; #[allow(clippy::too_many_arguments)] fn play_sample( &mut self, sample: Arc, voice_id: usize, volume: u8, pan: u8, pitch: f64, priority: u8, loop_mode: LoopMode, ) -> AudioOpStatus; 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); }