#standalone #processor #cli #runner #gui #traits

audio-processor-standalone

Stand-alone Audio/MIDI CLI runner for audio-processor-traits

21 releases (9 stable)

3.3.0 Jan 17, 2024
3.2.0 Dec 7, 2023
3.1.0 May 22, 2023
2.0.0 Mar 22, 2023
0.1.5 Oct 30, 2021

#229 in Audio

Download history 19/week @ 2024-01-15 2/week @ 2024-02-12 68/week @ 2024-02-19 22/week @ 2024-02-26 8/week @ 2024-03-04 24/week @ 2024-03-11 23/week @ 2024-03-18 14/week @ 2024-03-25 63/week @ 2024-04-01

126 downloads per month
Used in 6 crates

MIT license

475KB
5.5K SLoC

audio-processor-standalone

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.

Navigating the documentation

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, 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

~15–58MB
~1M SLoC