7个版本
0.2.0 | 2024年7月1日 |
---|---|
0.1.6 | 2023年5月31日 |
0.1.2 | 2022年11月7日 |
#124 在 音频
每月325次下载
3MB
7K SLoC
Sofar
Sofa阅读器和渲染器
功能
此crate提供了对libmysofa
API的高层绑定,允许从SOFA
文件(声学空间格式)中读取HRTF
过滤器。
render
模块实现了均匀划分的卷积算法,用于渲染HRTF过滤器。
示例
use sofar::reader::{OpenOptions, Filter};
use sofar::render::Renderer;
// Open sofa file, resample HRTF data if needed to 44_100
let sofa = OpenOptions::new()
.sample_rate(44100.0)
.open("my/sofa/file.sofa")
.unwrap();
let filt_len = sofa.filter_len();
let mut filter = Filter::new(filt_len);
// Get filter at poistion
sofa.filter(0.0, 1.0, 0.0, &mut filter);
let mut render = Renderer::builder(filt_len)
.with_sample_rate(44100.0)
.with_partition_len(64)
.build()
.unwrap();
render.set_filter(&filter);
let input = vec![0.0; 256];
let mut left = vec![0.0; 256];
let mut right = vec![0.0; 256];
// read_input()
render.process_block(&input, &mut left, &mut right).unwrap();
您可以像这样运行cpal
渲染器示例
cargo run --example renderer -- <FILENAME-MONO.wav> libmysofa-sys/libmysofa/share/default.sofa
许可证
本项目采用Apache许可证版本2.0或MIT许可证。
- Apache许可证版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
依赖关系
~1–2.6MB
~53K SLoC