#standalone #command-line #midi #processor #cli #gui

audio-processor-standalone

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

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 Oct 30, 2021

#257 in Audio

Download history 4/week @ 2024-07-22 16/week @ 2024-07-29 13/week @ 2024-08-05 146/week @ 2024-08-12 22/week @ 2024-08-19 180/week @ 2024-08-26 10/week @ 2024-09-02 3/week @ 2024-09-09 19/week @ 2024-09-16 56/week @ 2024-09-23 10/week @ 2024-09-30 1/week @ 2024-10-07 44/week @ 2024-10-14 2/week @ 2024-10-21 24/week @ 2024-11-04

70 downloads per month
Used in 6 crates

MIT license

480KB
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

~17–55MB
~1M SLoC