53 lines
1.2 KiB
Rust
53 lines
1.2 KiB
Rust
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<Sample>,
|
|
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);
|
|
}
|