[−][src]Crate bae_rs
Broad Audio Engine (BAE)
The Broad Audio Engine presents the ability to process sounds and audio files for applications like video games and DAWs.
This engine was born out of a frustration with other audio systems for their lack of readable code that results from the large monolithic structures and architecture-specific systems they contain. I do understand why structures and systems are the way they are, but nevertheless they are a pain to work with in most cases. With this audio engine, I intend to create an interface that is well documented and has minimal time to start writing code and calculate samples.
To get started, there is always the documentation, but additionally I
recommend taking a look at the Generator
, Modifier
, and
SimpleSound
structures to get you started. In the world of BAE, sources
of sound (e.g. simple sine, wav file, etc.) are called "Generators" and
filters (e.g. low pass, reverb, etc.) are called "Modifiers". There's no
particular reason for this naming convention other than I like them.
Utilizing the Generator
, Modifier
, and SimpleSound
you can get
started with a simple system for generating your samples. In truth you could
get your samples from a Generator
on its own, and that functionality is
allowed, but for more advanced sounds and systems you'll likely need a more
complex way of representing those systems. For that purpose there is the
Sound
trait, giving the ability to operate many Generator
s and
Modifier
s as a single unit, as you might find with some digital
synthesizers.
Dependencies
lazy_static
: For initializing large arrays at run-time for some systems that use a wavetable.petgrah
: For the graph structure used by theComplexSound
struct.rand
: To generate white noise.wav
: To read and write WAV files.
Future Expansion
In no particular order
- Generators:
- Modifiers:
- Features:
- Side-chain (?)
- FFT (use FFTW?)
- Read/write multiple audio formats (not just WAV)
License
This library is licensed under the MIT license. The loud words can be found here
Re-exports
pub use sample_format::*; |
Modules
channels | Sound Channels |
generators | Generators |
modifiers | Modifiers |
sample_format | Sample Format |
sounds | Sounds |
utils | Utils |
Constants
INV_SAMPLE_RATE | The inverse of the sampling rate for easy referencing and calculating. |
SAMPLE_RATE | The sampling rate the engine is set to run at. |
Type Definitions
MathT | Type to perform infrequent mathematical operations with when accuracy is needed. |
SampleT | Type to calculate samples with. |
TrackT | Shorthand for a vector containing sample data. |