5个不稳定版本
0.3.0 | 2020年10月14日 |
---|---|
0.2.0 | 2020年9月6日 |
0.1.2 | 2020年8月13日 |
0.1.1 | 2020年8月13日 |
0.1.0 | 2020年8月13日 |
#836 in 音频
57KB
1K SLoC
timbre
timbre是一个专为实时效果组合设计的音频库。
Timbre旨在建立一个通用的接口,并为实时播放音频提供适量的效果和解码器库。它旨在最终为游戏编程提供大多数音频功能,但也应足够灵活,适用于其他应用程序。
示例
fn main() -> Result<(), Box<dyn std::error::Error>> {
use std::time::Duration;
use timbre::prelude::*;
// SDL setup.
let sdl = sdl2::init()?;
let audio = sdl.audio()?;
// Inputs
let mut microphone = timbre::drivers::Sdl2Input::new(&audio)?;
microphone.resume();
let music = timbre::decoders::WavDecoder::from_file("./assets/music-stereo-f32.wav")?;
// Apply effects
let microphone = timbre::effects::Echo::new(microphone.source(),
Duration::from_secs_f32(0.5), 0.6);
let music = timbre::effects::LowPass::new(music.into_shared(), 200.0);
// Mix them together
let mut mixer = timbre::effects::BasicMixer::new();
mixer.add_source(microphone.into_shared());
mixer.add_source(music.into_shared());
// Output
let mut speaker = timbre::drivers::Sdl2Output::new(&audio)?;
speaker.set_source(mixer.into_shared());
speaker.resume();
std::thread::sleep(Duration::from_secs_f32(10.0));
Ok(())
}
0.3版更新了什么?
- 现在,可失败的功能返回Result。
- 新增错误类型。
路线图
0.4
- 使效果通用,以减少
Arc<Mutex<...>>
的数量。 - 使效果更具可变性;提供对其源的访问。
0.5
- 引入3D空间化效果。
- 为立体声源添加Pan效果。
依赖项
~18MB
~385K SLoC