This bevy plugin is intended to test an integration of Kira into Bevy. The goal is to replace or update bevy_audio
, if Kira turns out to be a good approach. Currently, this plugin can play ogg
, mp3
, flac
, and wav
formats and supports web builds.
Sound can be played in channels. Each channel has controls to pause or stop playback and can change the volume, playback speed, and panning of all sounds playing in it. You can easily add new channels and access them through Bevy's ECS (see the custom_channel
example).
Note: the Bevy feature bevy_audio
is enabled by default and not compatible with this plugin. Make sure to not have the bevy_audio
feature enabled if you want to use bevy_kira_audio
. The same goes for Bevy's vorbis
feature. See Bevys' Cargo file for a list of all default features of version 0.9
and list them manually in your Cargo file excluding the ones you do not want. Make sure to set default-features
to false
for the Bevy dependency. You can take a look at bevy_game_template's cargo file as an example.
To play audio, you usually want to load audio files as assets. This requires AssetLoaders
. bevy_kira_audio
comes with loaders for most common audio formats. You can enable them with the features ogg
(enabled by default), mp3
, wav
, or flac
. The following example assumes that the feature ogg
is enabled.
```rust norun use bevykira_audio::prelude::; use bevy::prelude::;
fn main() { App::new() .addplugins(DefaultPlugins) .addplugin(AudioPlugin) .addstartupsystem(startbackgroundaudio) .run(); }
fn startbackgroundaudio(assetserver: Res
You can change settings like volume, panning, or playback rate for running sounds, or when starting to play a sound. All changes can be done as smooth transitions. By default, they will be almost instantaneous.
You can configure a sound when playing it: ```rust use bevykiraaudio::prelude::; use bevy::prelude::; use std::time::Duration;
fn playaudio(assetserver: Res
Optionally, you can also load a sound with already applied settings. This requires the feature settings_loader
.
Sounds are configured in ron
files. The following file loads as a AudioSource
which is looped and has a 3 seconds intro before the loop:
```ron
(
// The actual sound file in your assets directory
file: "sounds/loop.ogg",
loop_behavior: Some(3.0),
) ``` would make the loaded sound loop by default and start each repeated playback three seconds into the sound (the three seconds are the intro).
More settings are available. See the settings_loader
example for all options.
You can either control a whole audio channel and all instances playing in it (channel_control
example), or a single audio instance (instance_control
example). Both ways offer audio transitions with Tweens supporting multiple easings.
The main branch is compatible with the latest Bevy release.
Compatibility of bevy_kira_audio
versions:
| bevy_kira_audio
| bevy
|
| :-- | :-- |
| 0.13
| 0.9
|
| 0.11
- 0.12
| 0.8
|
| 0.9
- 0.10
| 0.7
|
| 0.8
| 0.6
|
| 0.4
- 0.7
| 0.5
|
| 0.3
| 0.4
|
| main
| 0.9
|
| bevy_main
| main
|
Dual-licensed under either of
at your option.
Assets in the examples might be distributed under different terms. See the readme in the examples
directory.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.