Work In Progress, not ready for any kind of use
Firewheel aims to be a fully-featured libre open source audio engine for games!
- Modular design that can be run on any backend that provides an audio stream
- Default backend supporting Windows, Mac, Linux, Android, iOS, and WebAssembly
- Flexible audio graph engine (supports any directed, acyclic graph with support for one-to-many connections)
- A suite of essential built-in audio nodes:
- gain, stereo panning, and summing
- versatile sampler with seamless blending between tracks and disk/network streaming
- effects like filters, delays (echos), and reverbs
- spatial positioning (make a sound "emanate" from a point in 3d space)
- triple buffering for inserting/reading raw samples from any thread
- Custom audio node API allowing for a plethora of 3rd party generators and effects
- Basic CLAP plugin hosting (non-WASM only), allowing for more open source and proprietary 3rd party effects and synths
- Silence optimizations (avoid processing if the audio buffer contains all zeros, useful when using "pools" of nodes where the majority of the time nodes are unused)
- Tweens and animation curves for various effects
- A general purpose "preset" graph with an easy-to-use interface
- Support for loading a wide variety of audio formats
- Fault tolerance for audio streams (The game shouldn't stop or crash just because the player accidentally unplugged their headphones.)
- Properly respect realtime constraints (no mutexes!)
- C bindings
Not all of the above features are planned for the first release. See the Design Document for more details.
While Firewheel is its own standalone project, we are also working closely with the Bevy game engine to make it Bevy's default audio engine.
Join the discussion in the Firewheel Discord Server or in the Bevy Discord Server under the working-groups -> Better Audio
channel!
If you are interested in contributing code, first read the Design Document and then visit the Project Board (TODO).
If you are a game developer that wishes to see this project flourish, please consider donating or sponsoring! Links are on the right side of the GitHub page. 🌼
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0), or
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.