10个重大版本发布
0.13.0 | 2023年12月16日 |
---|---|
0.11.0 | 2023年12月12日 |
0.8.0 | 2023年5月15日 |
#355 在 音频 类别中
每月46次下载
300KB
7.5K SLoC
Rust音频引擎
这是一个受Web Audio API启发的音频引擎。
振荡器示例
更多示例可以在这里找到
-
创建一个引擎
use rawdio::{connect_nodes, create_engine, Level, Oscillator, Node}; let sample_rate = 44_100; let (mut context, mut process) = create_engine(sample_rate);
-
创建一个振荡器
let frequency = 440.0; let output_channel_count = 2; let mut oscillator = Oscillator::sine(context.as_ref(), frequency, output_channel_count);
-
设置振荡器的增益
let level = Level::from_db(-3.0); oscillator .gain() .set_value_at_time(level.as_gain(), Timestamp::zero());
-
连接到输出
connect_nodes!(oscillator => "output");
-
启动上下文
context.start();
-
运行进程以获取样本。这取决于您是否希望以实时(例如使用CPAL)或离线(例如输出到文件)方式运行引擎。引擎不进行任何假设,只是等待被请求处理。
假设所有音频缓冲区都是非交错格式。因此,如果来自您的声卡的音频是交错格式,则需要进行解交错。
let input_buffer = /*create an input buffer*/ let output_buffer = /*create an audio buffer*/ process.process (&mut output_buffer);
运行示例
cd examples && cargo run --bin [example_name] [example_args]
运行测试
cargo test
运行基准测试
cargo bench
缓冲区从哪里来?
引擎不会对它的运行方式做出任何假设。这意味着它可以实时运行,例如使用CPAL。或者,它也可以离线运行,例如使用hound处理文件中的音频。在/examples目录中有这两个示例。
请注意,预期音频为解交错格式。大多数声卡和音频文件将是交错格式,因此需要先进行转换。
依赖项
~6.5MB
~117K SLoC