#midi #audio-processing #standalone #plugin #processing #audio

aloe-standalone

Aloe Standalone is a Rust crate facilitating standalone audio plugin processing. It integrates audio and MIDI device management while providing state control and buffer size predictability. 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

#39 in #standalone


Used in 4 crates (2 directly)

GPL-3.0 license

3MB
25K SLoC

Aloe Standalone

Aloe Standalone is a Rust crate designed to facilitate the implementation of standalone instances of audio plugins. By leveraging AudioDeviceManager, AudioProcessorPlayer, and other essential elements, it offers powerful audio processing capabilities without embedding within a host application.

Features

  • Standalone Audio Processing: Create and run audio plugins in a standalone fashion using the createPluginFilter() function.
  • Comprehensive MIDI and Audio Management: Utilize AudioDeviceManager for handling audio and MIDI devices with efficiency.
  • State Management: Save and restore the state of your audio processor seamlessly through user dialogs.
  • Platform Independent: Supports Android, iOS, and desktop platforms with conditional configuration for MIDI device management.
  • Buffer Size Handling: Ensures predictable buffer sizes for audio callbacks to prevent out-of-bounds issues across platforms.

Core Concepts

  • StandalonePluginHolder: Central object facilitating audio processing. Manages processor creation, device handling, plugin lifecycle, and user settings.
  • StandaloneFilterWindow: Provides a windowing wrapper to host and manage the plugin interface, featuring options for user interactions.
  • CallbackMaxSizeEnforcer: Addresses platform-specific buffer size discrepancies, ensuring stable audio and MIDI I/O operations.

Quick Start

use aloe_standalone::StandalonePluginHolder;

fn main() {
    // Initialize and configure standalone audio processor instance
    let settings_to_use = std::ptr::null_mut();
    let preferred_setup_options = std::ptr::null();
    let holder = StandalonePluginHolder::new(
        settings_to_use,
        Some(true),
        Some("default"),
        preferred_setup_options,
        None,
        Some(true),
    );
    
    // Additional logic to utilize plugin holder
}

License

This project is licensed under the terms of the GNU General Public License v3.0.

Additional Information

This README.md file was generated by an AI model and may not be 100% accurate; however, it should provide a good representation of the crate and its usage.

Repository

The source code can be found at GitHub.

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

~28–42MB
~610K SLoC