# robbert-vdh/nih-plug

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/robbert-vdh-nih-plug).**

2,634 stars · 254 forks · Rust · isc

## Links

- GitHub: https://github.com/robbert-vdh/nih-plug
- awesome-repositories: https://awesome-repositories.com/repository/robbert-vdh-nih-plug.md

## Topics

`clap` `framework` `nih-plug` `plugin` `plugin-framework` `rust` `vst3`

## Description

nih-plug is an audio plugin SDK and development framework providing a set of tools and traits for processing audio and MIDI data in a real-time safe environment. It functions as a cross-format plugin wrapper, allowing a single implementation to be exported into multiple industry-standard audio plugin formats, including VST, CLAP, and LV2.

The project includes a retained-mode GUI framework for creating interactive user interfaces and parameter controls for audio processors. It also provides a real-time audio library that utilizes hardware acceleration and asynchronous task management to maintain low-latency performance.

The SDK covers a broad range of capabilities, including declarative parameter management with value smoothing, host-agnostic state persistence, and dynamic audio port configuration. It further supports standalone binary generation and macOS binary signing for distribution.

## Tags

### Graphics & Multimedia

- [Audio Plugin Architectures](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-plugin-architectures.md) — Provides a comprehensive framework and set of traits for building host-agnostic audio plugins.
- [SDKs](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-plugin-architectures/sdks.md) — Provides a comprehensive SDK and framework for developing real-time safe audio and MIDI plugins.
- [Multi-Format Development Frameworks](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/effects-processing/vst-effect-hosting/multi-format-development-frameworks.md) — Provides a framework to target VST, CLAP, and LV2 formats from a single codebase.
- [Real-Time Audio Threading](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/real-time-audio-threading.md) — Implements high-priority threading and communication channels to ensure real-time audio processing remains glitch-free.
- [SIMD Optimizations](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-processing/simd-optimizations.md) — Utilizes hardware-level vector instructions (SIMD) to accelerate audio buffer processing and reduce latency.
- [Real-Time Audio Processing](https://awesome-repositories.com/f/graphics-multimedia/real-time-audio-processing.md) — Provides low-latency audio buffer and MIDI event processing with hardware acceleration for glitch-free playback.
- [Host-Agnostic Implementations](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-plugin-architectures/host-agnostic-implementations.md) — Implements audio processing logic through unified traits and structures to ensure host independence. ([source](https://nih-plug.robbertvanderhelm.nl/nih_plug/index.html))
- [Audio Port Configuration](https://awesome-repositories.com/f/graphics-multimedia/audio-port-configuration.md) — Provides configuration of flexible input and output buffer settings to support a variable number of audio ports. ([source](https://cdn.jsdelivr.net/gh/robbert-vdh/nih-plug@master/README.md))
- [Parameter Smoothing](https://awesome-repositories.com/f/graphics-multimedia/parameter-smoothing.md) — Applies linear interpolation to parameter changes to prevent audible clicks during rapid value updates.

### Part of an Awesome List

- [Real-Time Processing Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/audio-processing-libraries/real-time-processing-libraries.md) — Provides a real-time audio library with hardware acceleration and asynchronous task management.
- [Digital Signal Processing](https://awesome-repositories.com/f/awesome-lists/devtools/digital-signal-processing.md) — Implements digital signal processing for musical instrument digital interface signals within the audio chain. ([source](https://nih-plug.robbertvanderhelm.nl/))

### Hardware & IoT

- [MIDI Processing Engines](https://awesome-repositories.com/f/hardware-iot/integration-performance/hardware-interfacing-integration/hardware-interfacing/midi-and-osc-interfaces/midi-processing-engines.md) — Provides engines for routing and processing polyphonic MIDI note expressions and system messages. ([source](https://cdn.jsdelivr.net/gh/robbert-vdh/nih-plug@master/README.md))

### Operating Systems & Systems Programming

- [Audio Acceleration](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/audio-acceleration.md) — Employs hardware acceleration to optimize iteration over audio samples and blocks for lower latency. ([source](https://cdn.jsdelivr.net/gh/robbert-vdh/nih-plug@master/README.md))
- [Plug-in Parameter Management](https://awesome-repositories.com/f/operating-systems-systems-programming/input-and-audio-management/plug-in-parameter-management.md) — Provides declarative management of numeric and boolean parameters with built-in value smoothing. ([source](https://cdn.jsdelivr.net/gh/robbert-vdh/nih-plug@master/README.md))

### Programming Languages & Runtimes

- [Multi-Format Binary Generation](https://awesome-repositories.com/f/programming-languages-runtimes/multi-format-binary-generation.md) — Generates multiple industry-standard plugin binaries from a single codebase using platform-specific entry point macros.
- [Multi-Format Plugin Export](https://awesome-repositories.com/f/programming-languages-runtimes/multi-format-plugin-export.md) — Compiles a single plugin implementation into multiple industry-standard formats using declarative macros. ([source](https://cdn.jsdelivr.net/gh/robbert-vdh/nih-plug@master/README.md))

### Software Engineering & Architecture

- [Host-Agnostic Plugin Interfaces](https://awesome-repositories.com/f/software-engineering-architecture/host-agnostic-plugin-interfaces.md) — Defines a unified set of methods that audio processors must implement to remain agnostic of specific host applications.
- [Multi-Format Wrappers](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/plugin-format-adapters/audio-plugin-format-selections/multi-format-wrappers.md) — Allows a single codebase to be exported into multiple standard audio plugin formats.
- [State Persistence](https://awesome-repositories.com/f/software-engineering-architecture/workflow-persistence/state-persistence.md) — Provides a system for serializing plugin parameters and internal data to ensure session state can be saved and restored.
- [Standalone Executables](https://awesome-repositories.com/f/software-engineering-architecture/plugin-execution-engines/audio-plugin-hosting/standalone-executables.md) — Enables the creation of executable plugin versions that run independently of a digital audio workstation.

### User Interface & Experience

- [Audio Plugin GUI Implementation](https://awesome-repositories.com/f/user-interface-experience/audio-plugin-gui-implementation.md) — Enables the creation of interactive user interfaces and visual parameter controls for audio software using retained-mode graphics.
- [Audio Plugin](https://awesome-repositories.com/f/user-interface-experience/graphical-user-interfaces/gui-frameworks/audio-plugin.md) — Implements a retained-mode GUI framework for creating interactive plugin interfaces and parameter controls.
- [Retained Mode Graphics Engines](https://awesome-repositories.com/f/user-interface-experience/retained-mode-graphics-engines.md) — Implements a retained-mode graphics system for real-time visualization and control of audio parameters. ([source](https://nih-plug.robbertvanderhelm.nl/nih_plug_egui/index.html))
- [Parameter System Adapters](https://awesome-repositories.com/f/user-interface-experience/retained-mode-graphics-engines/parameter-system-adapters.md) — Connects a persistent graphics state to the plugin parameter system for real-time visual updates.

### DevOps & Infrastructure

- [Standalone Binary Generators](https://awesome-repositories.com/f/devops-infrastructure/deployment-management-strategies/automation-and-tooling/standalone-binary-generators.md) — Generates standalone executable versions of plugins with built-in audio and MIDI support. ([source](https://cdn.jsdelivr.net/gh/robbert-vdh/nih-plug@master/README.md))
- [Plugin Packaging](https://awesome-repositories.com/f/devops-infrastructure/distribution-packaging/plugin-packaging.md) — Provides tools for compiling and packaging plugins into distributable formats compatible with host applications. ([source](https://nih-plug.robbertvanderhelm.nl/nih_plug_xtask/index.html))

### Game Development

- [Parameter Mapping Macros](https://awesome-repositories.com/f/game-development/custom-component-type-registrations/macro-based-type-registrations/parameter-mapping-macros.md) — Uses declarative macros to automatically generate boilerplate code for mapping data structures to plugin parameters.

### System Administration & Monitoring

- [Macro-Based Parameter Registration](https://awesome-repositories.com/f/system-administration-monitoring/parameter-automation/macro-based-parameter-registration.md) — Uses declarative macros to automatically map data structures to plugin parameters. ([source](https://nih-plug.robbertvanderhelm.nl/nih_plug_derive/index.html))
