39 lines
880 B
Rust
39 lines
880 B
Rust
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<Sample>,
|
|
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);
|
|
}
|