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音频

Download history 3521/week @ 2024-05-04 3240/week @ 2024-05-11 3754/week @ 2024-05-18 3287/week @ 2024-05-25 4017/week @ 2024-06-01 3218/week @ 2024-06-08 3771/week @ 2024-06-15 3705/week @ 2024-06-22 2113/week @ 2024-06-29 2072/week @ 2024-07-06 2603/week @ 2024-07-13 2725/week @ 2024-07-20 2768/week @ 2024-07-27 2341/week @ 2024-08-03 3305/week @ 2024-08-10 2205/week @ 2024-08-17

每月下载量 10,989
39 个 Crates 中使用 (26 个直接使用)

MIT/Apache

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