#game-engine #game #audio-playback #flexible #node #graph

firewheel

Flexible, high-performance, and libre audio engine for games (WIP)

3 unstable releases

0.1.0 Oct 7, 2024
0.0.1 Oct 23, 2022
0.0.0 Oct 23, 2022

#437 in Game dev

MIT license

105KB
2K SLoC

Firewheel

Documentation Crates.io License

Work In Progress

Firewheel is a flexible, high-performance, and libre audio engine for games.

Key Features

  • Flexible audio graph engine (supports any directed, acyclic graph with support for one-to-many connections)
  • A suite of built-in nodes for common tasks:
    • gain, stereo panning, stereo width (TODO)
    • summation (TODO)
    • versatile sample player (TODO)
      • disk/network streaming (TODO)
    • effects like filters, delays (echos), clippers, and convolutional reverbs (TODO)
    • spatial positioning (make a sound "emanate" from a point in 3d space) (TODO)
    • Decibel meter
  • Custom audio node API allowing for a plethora of 3rd party generators and effects
  • Basic CLAP plugin hosting (non-WASM only) (TODO)
  • Automatable parameters on nodes, with support for automation curves (TODO)
  • Fault tolerance for audio streams (The game shouldn't crash just because the player accidentally unplugged their headphones.)
  • WASM support (TODO)
  • C bindings (TODO)

Motivation

Firewheel is intended to be the default audio engine powering the Bevy game engine. Firewheel was separated out of Bevy into its own repository in the hopes that it could be useful for other games and game engines.

Get Involved

Join the discussion in the Bevy Discord Server under the working-groups -> Better Audio channel!

Dependencies

~1–33MB
~444K SLoC