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 |
|
#1469 in Audio
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_mainandaudio_processor_main_with_midi - There are plenty examples in the
augmented-audiorepository
The gist of it is:
- Implement
AudioProcessororSimpleAudioProcessorfromaudio_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
~16–59MB
~1M SLoC