Nodes/ComfyUI-VST-Adapter/VST Synth Generator Host
ComfyUI Node

VST Synth Generator Host

Make real VST3 synths play notes inside ComfyUI

By yanivkarta·Created 3 months ago·Updated 3 months ago· 0
VST Synth Generator Host
  • audio_reference
  • AUDIO
vst_pathC:/Program Files/Common Files/VST3/Generator.vst3
midi_note60
velocity100
duration_seconds4.0
sample_rate44100
channels2
bypassFalse
vst_parameters_json{ "cutoff": 0.8 }

Most of ComfyUI's audio story is "generate sound from a prompt." ComfyUIVSTSynthAdapter goes the other way: it turns a VST3 instrument plugin - a synth, a sampler, a drum machine - into a node that renders audio by sending it a MIDI note. Instead of hoping the model hallucinates the exact bass tone or pad you need, you tell a real synthesizer to play Middle C for four seconds and get back the actual rendered waveform. For anyone who does sound design, that's the difference between "AI-sounding" and "produced." It's the sibling of ComfyUIVSTEffectAdapter in the same pack, aimed at creating sound rather than processing it.

The "experimental" tag in the README is doing real work here: the pack is a single commit, and there's effectively no community signal for it yet. You're early. The upside of that is you're not fighting a crowd for a genuinely novel capability.

How it works

The node loads the instrument .vst3 via pedalboard's VST3Plugin, then builds a minimal MIDI sequence - a note_on at time zero with your velocity, and a note_off a whisker before the clip ends - and feeds it to the plugin along with a silent input buffer to render into. The plugin synthesizes, and the node wraps the result in the standard AUDIO dict. Note that the note sustains the whole clip: with a 10-second duration you get a 10-second sustained tone, release kicking in only in the last ~50ms.

The inputs that matter

  • vst_path - full path to a VST3 instrument (.vst3). A synth or sampler, not an effect.
  • midi_note - the note to play, 0–127. Default 60 is Middle C.
  • velocity - how hard it's struck, 0–127; brighter and louder the higher you go.
  • duration_seconds - render length, 0.1–300s.
  • audio_reference - the sleeper input. Wire an existing AUDIO track in here and the node silently ignores your duration/sample rate/channel settings and matches the reference instead, so your synth line lines up perfectly with the rest of the mix. This is what makes the node usable in real workflows.
  • vst_parameters_json - plugin-specific settings, e.g. {"cutoff": 0.8}. The defaults are placeholders; your plugin's actual parameter names go here.

Output is a single AUDIO - save it, preview it, or mix it with your generated track.

Install

Same pack as the effect host, same steps. ComfyUI Manager, search "ComfyUI-VST-Adapter", or:

cd ComfyUI/custom_nodes
git clone https://github.com/yanivkarta/ComfyUI-VST-Adapter

Restart, then install the two dependencies yourself - the repo has no requirements.txt, so Manager won't do it for you:

pip install pedalboard mido

Windows embedded runtime: ComfyUI\python_embeded\python.exe -m pip install pedalboard mido.

Common issues

  • One note at a time. It's a single note_on/note_off pair - no chords, no melodic sequences. A chord means layering multiple nodes (or a plugin that arpeggiates on its own). This is the biggest gap and worth knowing before you build a workflow around it.
  • Silence, not passthrough, on bypass. Set bypass to "True" or point at a missing file and you get a buffer of zeros - there's no input audio to pass through, since the node synthesizes from nothing. If your output is silent, check the path first.
  • VST3 only. Pedalboard can't load VST2 (.vst) instruments. Get the VST3 build.
  • Some instruments render nothing. If the plugin needs host features beyond a basic note event, it may return silence with no error. Watch the console for a [VST Synth] line, and if you get zeros cleanly, try a different instrument.

It's niche, it's rough around the edges, and it's the only thing I know of that puts real plugin instruments inside a ComfyUI graph. If you've got a favorite synth gathering dust and a workflow that needs actual tones, this is the node that earns its keep.

CategoryAudio Processing/VST

Inputs (9)

NameTypeDefaultDescription
vst_pathSTRINGC:/Program Files/Common Files/VST3/Generator.vst3
midi_noteINT600–127
velocityINT1000–127
duration_secondsFLOAT4.00.1–300
sample_rateCOMBO441004 options: 22050, 32000, 44100, 48000
channelsCOMBO22 options: 2, 1
bypassCOMBOFalse2 options: False, True
audio_referenceoptAUDIO
vst_parameters_jsonoptSTRING{ "cutoff": 0.8 }

Outputs (1)

NameTypeDescription
AUDIOAUDIO