quadio_core/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mod player;
pub use player::*;

mod reader;
pub use reader::*;

mod project;
pub use project::*;

pub fn setup_player(
    wave_metadata: &Metadata,
    samples: &[i16],
) -> Result<Player, String> {
    let float_samples = samples
        .iter()
        .map(|&s| s as f32 / i16::MAX as f32)
        .collect::<Vec<_>>();

    let loop_start = wave_metadata
        .loop_start
        .and_then(|start| start.try_into().ok());

    let end = wave_metadata.end.and_then(|end| end.try_into().ok());

    let player_config = PlayerConfig {
        samples: float_samples,
        sample_rate: wave_metadata.sample_rate,
        loop_start,
        end,
    };

    Player::new(&player_config)
}