ComfyUI-VST
ComfyUI nodes for loading and applying VST and Audio Unit plugins to audio within ComfyUI workflows.
Nodes (5)
ComfyUI-VST
ComfyUI custom nodes for audio processing using VST3 and Audio Unit plugins via Spotify's Pedalboard library.
Features
- Load VST3 plugins with auto-detection from system paths
- Auto-detect plugin parameters (booleans, choices, numeric sliders)
- Apply effects to audio with adjustable parameters
- Manual or dynamic parameter configuration
- Compatible with ComfyUI V3 API
Note: Currently only Effect VST plugins are supported. Instrument/Synthesizer plugins are not yet supported.
Installation
- Clone this repository into your ComfyUI custom nodes folder:
cd ComfyUI/custom_nodes
git clone https://github.com/MuziekMagie/ComfyUI-VST.git
- Install dependencies:
cd ComfyUI-VST
pip install -r requirements.txt
Requirements
- Python 3.10+
- ComfyUI with V3 API support
pedalboard>=0.9.0
Nodes
1. Load VST Plugin (VSTLoader)
Loads a VST3 plugin from disk. Auto-scans system VST directories and provides a dropdown of detected plugins.
Inputs:
vst_selection(COMBO): Dropdown of detected VST plugins (scans standard directories)manual_vst_path(STRING, optional): Manual path override for plugins not in scanned directoriesplugin_name(STRING, optional): For multi-plugin bundlestimeout(FLOAT): Initialization timeout in seconds [1.0-60.0], default 10.0
Outputs:
plugin(VST_PLUGIN): The loaded plugin objectparameter_schema(VST_PARAMETER_SCHEMA): Parameter schema/definitionsis_effect(BOOLEAN): True if plugin is an audio effectis_instrument(BOOLEAN): True if plugin is a synthesizer/instrument
Scanned directories:
- Windows:
Program Files\Common Files\VST3,Program Files\VSTPlugins,Steinberg\VSTPlugins - macOS:
/Library/Audio/Plug-Ins/VST3,~/Library/Audio/Plug-Ins/VST3,/Library/Audio/Plug-Ins/VST - Linux:
~/.vst3,/usr/lib/vst3,/usr/local/lib/vst3
2. Inspect VST Plugin (VSTInspector)
Inspects a loaded plugin to display its parameters and metadata.
Inputs:
plugin(VST_PLUGIN): Loaded plugin from VSTLoader
Outputs:
summary(STRING): Human-readable parameter listparameter_schema(VST_PARAMETER_SCHEMA): Parameter schema (custom type)parameter_schema_dict(DICT): Parameter schema as Python dictionaryparameter_schema_json(JSON): Parameter schema as JSON stringparameter_names(STRING): Comma-separated list of parameter names
3. VST Manual Parameters (VSTManualParameters)
Creates a parameter dictionary using autogrowing name-value pairs.
Inputs:
param_names(AUTOGROW): List of parameter names- Each slot:
name_0,name_1, etc. (STRING)
- Each slot:
param_values(AUTOGROW): List of parameter values- Each slot:
value_0,value_1, etc. (accepts any type)
- Each slot:
Outputs:
vst_settings(VST_SETTINGS): Parameter values for Apply VST Effect
Usage:
- Add parameter name slots and set names (e.g., "mix", "room_size")
- Connect Float nodes, Int nodes, or other widgets to value slots
- Names and values are paired by position (name_0 with value_0, etc.)
Note: Any parameters not explicitly defined in this node will use the plugin's default values when processed by Apply VST Effect.
4. VST Parameters (VSTParameters) ⚠️ EXPERIMENTAL
Dynamic parameter configuration with auto-generated widgets.
Warning: This node is experimental and currently does not work inside Subgraphs. Use VST Manual Parameters instead if you need to encapsulate your workflow in a Subgraph.
How it works: This node generates parameter widgets dynamically based on the connected plugin. The workflow must be run twice to fully configure parameters:
- First run: Connect your plugin and execute the workflow. The audio is processed using the plugin's default parameter values. Meanwhile, the node detects the available parameters and generates the corresponding widgets.
- Second run: The parameter widgets are now visible and adjustable. Modify the values and run the workflow again to process the audio with your custom settings.
Note: This is required because the node needs to "see" the plugin output once to know what parameters to create.
Inputs:
parameter_schema(VST_PARAMETER_SCHEMA): Parameter schema from VSTLoader/VSTInspectordynamic_values_json(STRING, multiline): JSON string of parameter values from frontend widgets
Outputs:
vst_settings(VST_SETTINGS): Parameter values dictionary
Note: This node requires the frontend JavaScript extension to generate parameter widgets dynamically based on the connected plugin.
5. Apply VST Effect (VSTApplyEffect)
Applies a VST plugin effect to audio.
Note: This node only works with Effect plugins. Instrument/Synthesizer plugins (VSTi) are not supported - they require MIDI input which is not yet implemented.
Inputs:
audio(AUDIO): Input audio from ComfyUIplugin(VST_PLUGIN): Loaded pluginvst_settings(VST_SETTINGS, optional): Parameter settings from VST Manual Parameters or VST Parametersbuffer_size(INT): Processing buffer size [512-65536], default 8192reset(BOOLEAN): Reset plugin state before processing, default True
Outputs:
AUDIO: Processed audio
Usage Example
Basic VST Effect Chain
Workflow Steps
-
Load a plugin:
- Use
Load VST Pluginand select from the dropdown - Or enter a manual path for plugins not auto-detected
- Use
-
Inspect parameters:
- Connect to
Inspect VST Pluginto see available parameters - Check
SUMMARYoutput for parameter names, types, and ranges
- Connect to
-
Configure parameters:
- Option A: Use
VST Manual Parameterswith autogrowing name-value pairs (recommended for Subgraphs) - Option B: Use
VST Parameterswith dynamic widgets (requires JS extension, not for Subgraphs)
- Option A: Use
-
Apply effect:
- Connect audio to
Apply VST Effect - Connect plugin from
Load VST Plugin - Connect parameters from parameter node
- Connect audio to
Parameter Types
The nodes automatically detect three types of VST parameters:
1. Boolean (Toggle)
Parameters with two valid values: true/false
2. Choice (Dropdown)
Parameters with a list of valid text values (up to 16 options or text-based values)
3. Numeric (Slider)
Continuous parameters with min/max ranges. Values are automatically normalized.
Platform Support
- Linux: VST3 (.vst3 files and bundles)
- macOS: VST3 (.vst3) and Audio Units (.component)
- Windows: VST3 (.vst3 files and bundles), VST2 (.dll)
Troubleshooting
Plugin not in dropdown
- Check that the plugin is in a scanned directory
- Use
manual_vst_pathto load plugins from custom locations - Ensure the plugin file exists and is readable
Plugin fails to load
- Ensure the plugin format matches your OS (VST3 for Linux/Windows, VST3/AU for macOS)
- Increase the
timeoutvalue if the plugin takes long to initialize - Check that the plugin binary exists inside bundle directories (
.vst3folders)
Audio processing fails
- Verify that the plugin is an effect plugin (check
IS_EFFECToutput) - Try increasing
buffer_sizeif you encounter glitches - Set
reset=Trueif audio sounds wrong (clears plugin internal state)
Parameters not working
- Use
Inspect VST Pluginto verify parameter names are correct - Check that parameter names match exactly (case-sensitive)
- Some plugins may reject invalid parameter values
VST Parameters node not working in Subgraphs
- This is a known limitation
- Use
VST Manual Parametersinstead for Subgraph workflows
License
This project is licensed under the GNU General Public License v3.0 (GPL v3.0).
Credits
Built using Spotify's Pedalboard library.
VST is a registered trademark of Steinberg Media Technologies GmbH.