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
Use
VirtualHost on cfg(test), otherwise call standalone_start.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. Returns
StandaloneHandles which can be used to take the
processor back and stop the stream.Same as
standalone_start but takes an options parameter.