#plugin #audio #unix #audio-plugin #ladspa #graphics #dynamiclibrary

aloe-ladspa

A Rust crate for managing and interfacing with LADSPA audio plugins, supporting loading and operating plugins on Linux and BSD. 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 #audio-plugin


Used in aloe-exports

GPL-3.0 license

1MB
9K SLoC

Aloe-LADSPA

aloe-ladspa is a Rust crate providing comprehensive management and instantiation of LADSPA audio plugins on Unix-like systems. This crate primarily focuses on implementing a plugin format manager capable of loading, scanning, and operating LADSPA plugins in an audio processing environment, leveraging dynamic libraries via libladspa. It supports Linux and BSD platforms.

Features

  • Plugin Format Management: Offers structure and functionality to manage and recognize LADSPA plugins.
  • Dynamic Module Handling: Loads and interacts with modules via dynamic library utilities.
  • Instance Creation and Lifecycle: Provides methods for creating plugin instances, initializing audio parameters, and executing plugins.
  • Efficient Resource Management: Ensures proper resource allocation and deallocation with Drop traits and recursive searches.
  • Thread Safety: Utilizes critical sections to ensure thread-safe operations during plugin interactions.

Introduction to Core Components

The crate comprises several core constructs that define its functionality:

LADSPAPluginFormat

  • Manages plugin formats and scanning processes.
  • Provides methods to determine a file's plugin validity and manage search directories.

LADSPAModuleHandle

  • Handles the loading and management of dynamic libraries, maintaining active module lists.
  • Implements RAII for module opening and closing.

LADSPAPluginInstance

  • Represents individual plugin instances, dealing with initialization and execution.
  • Manages audio buffers and ports, facilitating seamless audio processing.

Usage

Add aloe-ladspa to your Cargo.toml:

[dependencies]
aloe-ladspa = "0.1"

Include the crate in your project:

use aloe_ladspa::{LADSPAPluginFormat, LADSPAModuleHandle, LADSPAPluginInstance};

// Example usage creating and initializing a LADSPA plugin instance

Note: This README was generated by an AI model, it may not be fully accurate, but it strives to offer a useful overview.

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

~39MB
~626K SLoC