Back to case studies

2024-Present | Tylium

A Robust VST3 Host for Rust

Summary

cutoff-vst is a VST3 host library for the Cutoff ecosystem, a professional-grade platform for advanced audio and MIDI processing. It provides the critical capability of loading and interacting with third-party audio plugins, a cornerstone for any modern digital audio workstation or music production environment. cutoff-vst is a meticulously engineered crate that handles the complexities of the VST3 API, offering a safe and ergonomic Rust interface for plugin discovery, management, and real-time audio processing.

The Challenge: Bridging Rust with the C++ VST3 World

Integrating VST3 plugins into a Rust application presents significant technical challenges:

  • API Complexity: The VST3 SDK is a large, C++ based framework with a complex, interface-based API (close to Microsoft's COM). Bridging this world with Rust requires careful management of memory, object lifetimes, and calling conventions.
  • Safety: Interfacing with C++ code is inherently unsafe. A VST3 host must provide a safe abstraction layer to prevent crashes, memory leaks, and other undefined behavior that can arise from incorrect API usage.
  • Real-time Performance: Audio processing happens on a real-time thread where low latency and predictability are critical. The host must be able to process audio and MIDI buffers efficiently without blocking, allocating memory, or causing other performance bottlenecks.
  • GUI Integration: VST3 plugins come with their own graphical user interfaces, which need to be embedded within the host application's windows. This requires platform-specific code and careful handling of UI events and redrawing.
  • Comprehensive Coverage: The VST3 standard is extensive, with dozens of interfaces for handling everything from basic audio processing and parameter control to advanced features like MIDI mapping, note expression, and preset management. A useful host needs to implement a significant portion of this API.

The Solution: A Safe, Modular, and Thorough VST3 Implementation

cutoff-vst is designed from the ground up to address these challenges, providing a powerful and reliable solution for VST3 hosting in Rust. It wraps the unsafe VST3 interfaces in a safe and idiomatic Rust API, allowing developers to interact with plugins without directly handling raw pointers or COM interfaces.

The crate's architecture is highly modular, with clear separation of concerns:

  • Plugin Scanning and Caching: cutoff-vst includes a robust plugin scanner that discovers installed VST3 plugins on the system. It then caches the metadata, allowing for near-instantaneous loading of all known plugins on subsequent application starts.
  • Core Hosting Logic: The central components, like PluginInstance, manage the lifecycle of a plugin—from loading the library to initializing the audio processor and edit controller.
  • Safe Abstractions: The crate provides high-level Rust structs that model VST3 concepts like buses, events, and parameters. This allows for type-safe and ergonomic interaction with the plugin's functionality.
  • Detailed API Coverage: As documented in its README.md, cutoff-vst features an exceptionally thorough implementation of the VST3 SDK. It provides a detailed checklist of over 150 functions across dozens of interfaces, showing a clear commitment to comprehensive support, from core components like IComponent and IAudioProcessor to advanced features like IUnitInfo (for presets) and INoteExpressionController.
  • Platform-Specific UI Handling: It contains dedicated modules for handling platform-specific tasks, such as embedding a plugin's view into a host window on macOS.

Key Features

  • Plugin Discovery: A fast and efficient scanner for finding VST3 plugins on the user's system.
  • State Management: Full support for saving and loading plugin state, allowing for presets and project persistence.
  • Real-time Processing: A carefully designed audio processor that can handle real-time audio and MIDI I/O, interacting with the plugin's processing engine.
  • Parameter Automation: The ability to get and set all of a plugin's parameters, enabling automation from the host.
  • UI Integration: Functionality to create and display a plugin's graphical user interface within a host application.
  • MIDI and Note Expression: Support for advanced MIDI features, including MIDI mapping and per-note expression, allowing for detailed and expressive musical control.

Conclusion

cutoff-vst is a component of the Cutoff ecosystem that enables hosting of third-party VST3 audio plugins. It provides a comprehensive implementation of the VST3 standard, bridging the gap between safe Rust code and the complex C++ VST3 API. This allows developers to build Rust-based audio applications that can leverage the vast ecosystem of existing VST3 plugins.