This Week in Fyrox #13

Fyrox is an open-source (opens new window) Rust game engine with lots of out-of-box game-ready features and a full-featured editor. Changes of this week was mostly focused on sound system improvements.

# Audio System Refactoring

Previously, the sound system supported direct output of sound samples to an audio playback device with some effects that can take samples from sound sources and put processes samples in the audio playback device. It worked ok for most cases, but it was quite rigid and effect management was a pain. To add more flexibility in audio processing pipeline there was added two new entities: audio buses and audio bus graph.

# Audio Bus

Audio bus is a sound processing unit that takes samples from various sound sources, applies zero or more effects to the samples and sends the samples either to an audio playback device or some other audio bus (see the next section). Effect list includes: lowpass filter, highpass filter, bandpass filter, allpass filter, low and high shelf filters, reverberation.

# Audio Bus Graph

Audio bus graph is a set of audio buses connected with each other: one audio bus could be a source of samples for another audio bus or for an audio device:

data flow diagram

Such structure provides high flexibility, allowing you to create complex processing steps for the sound in your game.

In action the graph looks (sounds) like this:

# Other

Sound panning in HRTF mode was fixed (left was right and vice versa). Fixed a bug in the sound preview panel, it was possible to infinitely play a sound, even when preview mode is disabled. Recent files list in the editor now sorted and non-existing files are auto-removed from it:

data flow diagram

# Full List of Changes in Random Order

  • Sound system refactoring.
  • Fixed incorrect sound panning in HRTF mode.
  • Fixed sound preview: infinitely playing sound bug.
  • Keep recent files list sorted and up-to-date.