Crate audio_processor_standalone
source · [−]Expand description
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, 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, 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)Modules
Offline rendering implementation (offline functionality will not work on iOS for now)
Options handling for standalone processor
Online standalone implementation using CPAL
Internal wrapper types
VST support (VST is not compiled for iOS)
Macros
Structs
A standalone processor impl that will only process audio
Handles to the CPAL streams and MIDI host. Playback will stop when these are dropped.
A standalone processor impl that will process audio and MIDI
Traits
Abstract standalone processor with runtime optional MIDI handling.
Functions
A default main function for an AudioProcessor.
A default main function for an AudioProcessor and MidiEventHandler.
Start an AudioProcessor as a stand-alone cpal app>
Start an AudioProcessor / MidiEventHandler as a stand-alone cpal app and forward MIDI
messages received on all inputs to it.
Start a processor using CPAL.