23 releases (11 stable)
3.5.0 | Aug 26, 2024 |
---|---|
3.3.0 | Jan 17, 2024 |
3.2.0 | Dec 7, 2023 |
3.1.0 | May 22, 2023 |
0.1.5 |
|
#257 in Audio
70 downloads per month
Used in 6 crates
480KB
5.5K
SLoC
audio-processor-standalone
Augmented Audio: Audio Processor Standalone
This is part of https://github.com/yamadapc/augmented-audio. Please review its goals. This
crate builds upon audio_processor_traits::AudioProcessor
.
Provides a stand-alone audio-processor runner for AudioProcessor
implementations.
Navigating the documentation
- Look at exported functions & macros; the structs/traits are for more advanced/internal usage.
- Start with
audio_processor_main
andaudio_processor_main_with_midi
- There are plenty examples in the
augmented-audio
repository
The gist of it is:
- Implement
AudioProcessor
orSimpleAudioProcessor
fromaudio_processor_traits
- Call
audio_processor_main(processor)
- You now have a CLI for rendering online (CPAL, use your mic) or offline (pass a file through your processor & write
the results to a
.wav
)
A VST may also be generated through the standalone_vst
module and by enabling the vst
feature flag.
Example usage
Declare the AudioProcessor
:
use audio_processor_traits::{AudioBuffer, AudioContext, AudioProcessor};
struct GainProcessor {}
impl GainProcessor { fn new() -> Self { GainProcessor {} }}
impl AudioProcessor for GainProcessor {
type SampleType = f32;
fn process<BufferType: AudioBuffer<SampleType=Self::SampleType>>(
&mut self,
_context: &mut AudioContext,
data: &mut BufferType
) {
for sample in data.slice_mut() {
*sample = *sample * 0.4;
}
}
}
Declare the main function:
fn main() {
let processor = GainProcessor::new();
audio_processor_standalone::audio_processor_main(processor);
}
Usage of the command-line
audio-processor-standalone
USAGE:
my-crate [OPTIONS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-i, --input-file <INPUT_PATH> An input audio file to process
--midi-input-file <MIDI_INPUT_FILE> If specified, this MIDI file will be passed through the processor
-o, --output-file <OUTPUT_PATH> If specified, will render offline into this file (WAV)
License: MIT
Dependencies
~17–55MB
~1M SLoC