Skip to content

BillyDM/Firewheel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Firewheel

Documentation Crates.io License

Firewheel is a fully-featured libre open source audio graph engine for games and other applications!

Key Features

  • Modular design that can be run on any backend that provides an audio stream
    • Included backends supporting Windows, Mac, Linux, Android, iOS, and WebAssembly
  • Flexible audio graph engine (supports any directed, acyclic graph with support for both one-to-many and many-to-one connections)
  • A suite of essential built-in audio nodes
  • 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)
  • Ability to add "sequences" to certain nodes (i.e. automation and sequences of events)
  • Support for loading a wide variety of audio files using Symphonium
  • 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!)

Roadmap

✅ = complete, 🚧 = partially complete, ⬛ = Not implemented yet, ❔= might implement

Feature Status
Core audio graph engine
3rd party plugin API
CPAL audio backend 🚧 (audio output works, audio input WIP)
Loading audio files with Symphonium
Volume node
VolumePan node
Stereo to mono node
Peak meter node
Beep test node
Sampler node 🚧 (one-shot works, pitch shift WIP, sequencer WIP)
Basic spatial positioning node
Input stream node (stream audio into the graph)
Output stream node (stream audio out of the graph)
Blending sampler node (blend between music tracks)
Disk streaming SampleResource (using creek)
Network streaming SampleResource ❔ (only if demand is there)
Filter effect node (LP, HP, BP)
Convolution node (apply IR effects like reverb)
Echo effect node
CLAP plugin node
Delay compensation node
Advanced spatial positioning node ❔ (help from DSP expert needed)
RtAudio backend
Interflow backend
C bindings ❔ (only if demand is there)

Motivation

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.

Get Involved

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.

If you are a game or other app developer that wishes to see this project flourish, please consider donating or sponsoring! Links are on the right side of the GitHub page. 🌼

License

Licensed under either of

at your option.

About

Powerful and flexible audio engine for games

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages