4个版本
0.4.2 | 2024年8月9日 |
---|---|
0.4.1 | 2023年3月30日 |
0.4.0 | 2023年1月30日 |
0.3.1 | 2023年1月18日 |
在音频类中排名第130
每月下载143次
195KB
950 代码行
pacmog
pacmog是PCM文件的解码库。
专为在微控制器固件中播放嵌入式PCM文件而设计。
Rust有一个include_bytes!宏可以嵌入程序中的字节序列。使用它,可以将PCM文件嵌入到固件中并用于播放。
pacmog默认支持no_std。
格式 | 状态 |
---|---|
WAV 16位 | ✅ |
WAV 24位 | ✅ |
WAV 32位 | ✅ |
WAV 32位浮点 | ✅ |
WAV 64位浮点 | ✅ |
IMA ADPCM | ✅ |
AIFF 16位 | ✅ |
AIFF 24位 | ✅ |
AIFF 32位 | ✅ |
AIFF 32位浮点 | ✅ |
AIFF 64位浮点 | ✅ |
示例
cargo run --example beep
读取一个WAV样本文件。
use pacmog::PcmReader;
let wav = include_bytes!("../tests/resources/Sine440Hz_1ch_48000Hz_16.wav");
let reader = PcmReader::new(wav);
let specs = reader.get_pcm_specs();
let num_samples = specs.num_samples;
let num_channels = specs.num_channels as u32;
println!("PCM info: {:?}", specs);
for sample in 0..num_samples {
for channel in 0..num_channels {
let sample_value = reader.read_sample(channel, sample).unwrap();
println!("{}", sample_value);
}
}
测试
cargo test
基准测试
cargo criterion
no_std
pacmog默认支持no_std。
无需设置。
依赖
~4MB
~76K SLoC