Rust Audio Engine
This is an audio engine, inspired by the Web Audio API.
Oscillator Example
More examples can be found here
-
Create an engine
use ; let sample_rate = 44_100; let = create_engine; -
Create an oscillator
let frequency = 440.0; let output_channel_count = 2; let mut oscillator = sine; -
Set the gain on the oscillator
let level = from_db; oscillator .gain .set_value_at_time; -
Connect to output
connect_nodes!; -
Start the context
context.start; -
Run the process to get samples. This will vary depending on whether you wish to run the engine in realtime (e.g. using CPAL) or offline (e.g. to a file). The engine doesn't make any assumptions, and will simply wait to be asked to process.
All audio buffers are assumed to be non-interleaved. So if the audio that comes from your soundcard is interleaved, it will need to be de-interleaved first.
let input_buffer = /*create an input buffer*/ let output_buffer = /*create an audio buffer*/ process.process ;
To run an example
&&
To run the tests
To run the benchmarks
Where do the buffers come from?
The engine won't make any assumptions about how it is going to be run. This means that it can be run in real-time, for example using CPAL. Or, it could be run offline, for example processing audio from files using hound. There are examples of both of these in the /examples directory.
Bear in mind that audio is expected to be de-interleaved. Most soundcards and audio files will be interleaved, so it will need to be converted first.