34 个版本
0.9.4 | 2024 年 8 月 10 日 |
---|---|
0.9.3 | 2024 年 6 月 15 日 |
0.9.0 | 2024 年 5 月 11 日 |
0.8.7 | 2024 年 2 月 1 日 |
0.1.1 | 2020 年 11 月 18 日 |
#5 在 音频
每月下载量 10,989
在 39 个 Crates 中使用 (26 个直接使用)
480KB
12K SLoC
基拉
crates.io | 文档 | 示例
基拉是一个不依赖于后端库的库,用于创建游戏中的表达性音频。它提供了平滑调整声音属性的工具、一个灵活的混音器用于应用音频效果、一个时钟系统用于精确控制音频事件的时间,以及空间音频支持。
示例
同时播放多个声音
use kira::{
manager::{
AudioManager, AudioManagerSettings,
backend::DefaultBackend,
},
sound::static_sound::StaticSoundData,
};
// Create an audio manager. This plays sounds and manages resources.
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let sound_data = StaticSoundData::from_file("sound.ogg")?;
manager.play(sound_data.clone())?;
// After a couple seconds...
manager.play(sound_data.clone())?;
// Cloning the sound data will not use any extra memory.
逐渐加快声音的速度
use std::time::Duration;
use kira::{
manager::{
AudioManager, AudioManagerSettings,
backend::DefaultBackend,
},
sound::static_sound::StaticSoundData,
tween::Tween,
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let sound_data = StaticSoundData::from_file("sound.ogg")?;
let mut sound = manager.play(sound_data)?;
// Start smoothly adjusting the playback rate parameter.
sound.set_playback_rate(
2.0,
Tween {
duration: Duration::from_secs(3),
..Default::default()
},
);
应用低通滤波器的声音播放(这会使音频听起来模糊)
use kira::{
manager::{
AudioManager, AudioManagerSettings,
backend::DefaultBackend,
},
sound::static_sound::StaticSoundData,
track::{
TrackBuilder,
effect::filter::FilterBuilder,
},
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
// Create a mixer sub-track with a filter.
let track = manager.add_sub_track({
let mut builder = TrackBuilder::new();
builder.add_effect(FilterBuilder::new().cutoff(1000.0));
builder
})?;
// Play the sound on the track.
let sound_data = StaticSoundData::from_file("sound.ogg")?.output_destination(&track);
manager.play(sound_data)?;
与音乐节拍同步播放声音
use kira::{
manager::{
AudioManager, AudioManagerSettings,
backend::DefaultBackend,
},
sound::static_sound::StaticSoundData,
clock::ClockSpeed,
};
const TEMPO: f64 = 120.0;
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
// Create a clock that ticks 120 times per second. In this case,
// each tick is one musical beat. We can use a tick to represent any
// arbitrary amount of time.
let mut clock = manager.add_clock(ClockSpeed::TicksPerMinute(TEMPO))?;
// Play a sound 2 ticks (beats) from now.
let sound_data_1 = StaticSoundData::from_file("sound1.ogg")?
.start_time(clock.time() + 2);
manager.play(sound_data_1)?;
// Play a different sound 4 ticks (beats) from now.
let sound_data_2 = StaticSoundData::from_file("sound2.ogg")?
.start_time(clock.time() + 4);
manager.play(sound_data_2)?;
// Start the clock.
clock.start()?;
平台支持
基拉主要面向桌面平台。大多数测试都在 Windows 上进行,但它也已在 Mac 和 Linux 上成功使用。
基拉也可以在以下限制下用于 wasm 环境
- 无法从文件中加载静态声音
- 不支持流式声音,因为它们会大量使用线程
如果您想帮助改进 wasm 支持,请联系我!
路线图
我希望拥有的功能
- C API
- 空间音频功能
- 多普勒效应
- 混响
- 过滤
贡献
我很希望其他人能参与到开发中来!由于该库仍处于早期阶段,我欢迎各种类型的输入 - 错误报告、功能请求、设计批评等。请随意打开一个 issue 或 pull request!
许可证
本项目受以下许可证之一许可
- Apache License,版本 2.0 (LICENSE-APACHE)
- MIT 许可证 (LICENSE-MIT)
任选其一。
除非您明确说明,否则您提交给 kira
以供包含的贡献,根据 Apache-2.0 许可证定义,将按上述方式双许可,不附加任何其他条款或条件。
依赖项
~4–33MB
~546K SLoC