Expand description

Augmented Audio: Audio Processor Standalone

crates.io docs.rs


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.

The gist of it is:

  1. Implement AudioProcessor or SimpleAudioProcessor from audio_processor_traits
  2. Call audio_processor_main(processor)
  3. 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.

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.