MCPcopy Create free account
hub / github.com/BillyDM/Firewheel

github.com/BillyDM/Firewheel @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,460 symbols 3,191 edges 114 files ⚖ MIT 433 documented · 30% updated 42d ago★ 30920 open issues

Browse by type

Functions 1,143 Types & classes 317
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Firewheel

Documentation Crates.io License

An open source audio graph engine for games and other applications, written in Rust. It can be used as-is, or it can be used as a base for other higher-level audio engines.

The Future of this Project

Firewheel is currently planned to be upstreamed into the Bevy game engine where it will become the default audio engine. (The current implementation can be found in the bevy_seedling repository.) The goal is to both make Bevy integration easier by avoiding circular dependencies, and to ease the maintanance burden of a project that has experienced more feature creep than what the author originally anticipated.

While development has shifted to focus more on the needs of Bevy, the core audio graph engine will still be available to use outside of Bevy without any other Bevy dependencies (except for the very lightweight bevy_platform dependency).

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
  • An optional data-driven parameter API that is friendly to ECS's (entity component systems).
  • 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)
  • 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 respects realtime constraints (no mutexes!)
  • no_std compatibility (some features require the standard library)

Non-features

While Firewheel aims to cover most use cases for games and other generic applications, it does NOT aim to be a complete DAW (digital audio workstation) engine. Not only would this greatly increase complexity, but the needs of game audio engines and DAW audio engines are in conflict. (See the design document for more details on why).

Get Involved

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

License

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.

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Method 1,050
Class 261
Function 93
Enum 43
Interface 13

Languages

Rust100%

Modules by API surface

crates/firewheel-core/src/node.rs72 symbols
crates/firewheel-nodes/src/sampler.rs68 symbols
crates/firewheel-graph/src/context.rs67 symbols
crates/firewheel-core/src/diff/notify.rs57 symbols
crates/firewheel-nodes/src/svf.rs38 symbols
crates/firewheel-core/src/clock.rs37 symbols
crates/firewheel-graph/src/graph.rs35 symbols
crates/firewheel-cpal/src/lib.rs33 symbols
examples/visual_node_graph/src/ui.rs30 symbols
crates/firewheel-graph/src/graph/compiler/schedule.rs30 symbols
crates/firewheel-nodes/src/triple_buffer.rs29 symbols
crates/firewheel-core/src/dsp/volume.rs29 symbols

For agents

$ claude mcp add Firewheel \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page