7个版本

0.2.0 2024年7月1日
0.1.6 2023年5月31日
0.1.2 2022年11月7日

#124音频

Download history 226/week @ 2024-06-28 42/week @ 2024-07-05

每月325次下载

MIT/Apache

3MB
7K SLoC

C 5.5K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments Visual Studio Project 368 SLoC C++ 80 SLoC // 0.1% comments Visual Studio Solution 62 SLoC Objective-C 13 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许可证。

供您选择。

依赖关系

~1–2.6MB
~53K SLoC