#convolution #reverb #audio-processing #processing #audio #cabinet

aloe-convolution

Aloe Convolution is a Rust crate for real-time audio convolution operations, implementing both cabinet simulation and reverb with efficient FFT-based processing. This crate is a translation of the c++ juce module serving the same function.

1 unstable release

Uses new Rust 2024

new 0.1.1 Apr 3, 2025

#9 in #reverb


Used in 2 crates

GPL-3.0 license

225KB
1.5K SLoC

Aloe Convolution

Aloe Convolution is a Rust crate designed to perform high-quality convolution operations suitable for real-time audio processing applications. It provides a robust framework for performing fast Fourier transform (FFT) based convolution, which is crucial for implementing effects such as cabinet (cab) simulation and reverberation (reverb) in audio processing pipelines.

Features

  • Modular Convolution Processing: The crate provides a ConvolutionProcessor to manage and streamline the convolution process for both cabinet and reverb effects.
  • Impulse Response Handling: Load and process impulse response (IR) files efficiently to simulate physical spaces and hardware devices.
  • Dry/Wet Mixing: Incorporates a DryWetMixer to allow flexible blending of dry and processed signals.
  • Latency Management: Accurately computes the latency introduced by convolution operations, essential for real-time applications.

Implementation Details

ConvolutionProcessor is the core structure of the crate, enabling users to:

  • Prepare and reset processing configurations via prepare and reset methods.
  • Execute audio processing with the process method, controlling both cabinet and reverb convolutions.
  • Accurately assess the inherent latency of convolutions with get_latency.

Example Usage

use aloe_convolution::ConvolutionProcessor;

fn setup_convolution() {
    // Instantiate the convolution processor
    let mut processor = ConvolutionProcessor::<f32>::default();

    // Prepare the processor with the given specifications
    processor.prepare(&spec);

    // Process audio data in context
    processor.process(&mut context);
}

Licensing

This crate is licensed under GPL-3.0.

Contributions & Feedback

The Aloe Convolution project is open for contributions and feedback. Visit our GitHub repository to learn more.

Disclaimer: This README file was generated by an AI model. While intended to be accurate, please verify all information as necessary.

This crate is a translation of the JUCE module.

JUCE is a c++ software framework for developing high performance audio applications.

Usage falls under the GPLv3 as well as the JUCE commercial license.

See github.com/juce-framework/JUCE and the JUCE license page for details.

This crate is in the process of being translated from c++ to rust. For progress updates, please see the workspacer rust project.

Dependencies

~41MB
~651K SLoC