#resampling #stream #audio #interpolation #signalprocessing

nightly aloe-interp

Aloe-Interp provides stateful, high-quality interpolation for resampling streams of floating-point numbers, applicable in advanced audio processing. This crate is a translation of the c++ juce module serving the same function.

2 releases

Uses new Rust 2024

new 0.1.1 Apr 2, 2025
0.1.0 Apr 2, 2025

#1 in #signalprocessing

Download history 93/week @ 2025-03-28

93 downloads per month
Used in 122 crates (via aloe-math)

GPL-3.0 license

430KB
408 lines

Aloe-Interp

Aloe-Interp is an advanced Rust library designed for the precise resampling and interpolation of streams of floating-point numbers. It is highly suitable for audio processing applications, where maintaining signal integrity during resampling is critical.

The library offers multiple interpolation techniques:

  • Windowed Sinc Interpolation - Ideal for high-fidelity applications where aliasing must be minimized.
  • Lagrange Interpolation - Provides a polynomial-based approach suitable for smooth transitions.
  • Catmull-Rom Interpolation - Ensures smooth, curve-based interpolation of data points.
  • Linear Interpolation - A straightforward method for quick, computationally efficient resampling.
  • Zero Order Hold Interpolation - Retains each sample value until the next is provided, ideal for certain discrete signals.

Features

  • Stateful Design: Each interpolation object preserves its state, accommodating continuous data streams.
  • Versatile Processing: Handles multichannel audio by allowing separate interpolator instances per channel.
  • Reset capability: Reset interpolators seamlessly in case of stream discontinuity using the reset() method.
  • Performance Tuning: Trade-offs between computational complexity and resampling quality, suitable for both real-time and offline processing.

Usage Notes

  • Always ensure the continuity of input data streams. Initiate reset() during breaks.
  • Each audio channel should independently utilize its own interpolator instance to maintain data integrity.

Installation

Add the following line to your Cargo.toml:

aloe-interp = "0.1.0"

License

This project is licensed under the GPL-3.0 License.

Repository

Find the source code here.

(Note: This README was generated by an AI model and may not be 100% accurate, however it should be pretty good.)

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. designed specifically for rust projects.

Dependencies

~12–26MB
~353K SLoC