How to get factory presets to show up in VST3 hosts?

How do I get factory presets to show up in VST3 hosts (like Cubase and Studio One)? I can get my AAX presets to show up by including my XML files in sub-folder (at least on the Mac), and my AudioUnit ones show up once I implement getNumPrograms(), etc… But in Studio One and Cubase, they don’t appear. I can see that the ProgramChangeParameter is being created when instantiating my VST3 plug-in, and getNumPrograms() returns the correct value (16), but I never get a call to getProgramName(), so no list is ever shown to the user.

How do I implement these for VST3?

Looks like I can get them to show up if I put a folder with my plug-in’s name in the folder ~/Library/Audio/Presets, and copy .vstpreset files that I generated there. Is that the only way to do this? Is it the best way to do this? Will our installers be able to install them to that location?

It looks like it’s the same mechanism as AU here.

But it’s done on the MM thread early in the instantiation, and won’t refresh when you send updateHostDisplay() messages (annoyingly).

So, as long as you return a number the first time getNumPrograms is called, and return proper names, it gets populated.

This is all in Reaper / VST3 though, maybe it’s different for other DAWS?

You need to test if they show up in the cubase vst3 preset browser. That’s what VST3 users want. They want to categorize and search for them in the DAW :slight_smile:
I don’t think they pop up when you only have in-memory presets. Reaper maybe shows them, but reaper also doesn’t have a full-featured VST3 preset manager.

https://developer.steinberg.help/pages/viewpage.action?pageId=9798275#VST3Locations/Format-PresetLocations

We still have our own format-independent preset manager inside our plugins. Users can download the VST3 presets as an additional download.

IMHO this whole vst3 preset thing does not work very well with presets that point to other resources like samples.

1 Like

I notice (at least in Reaper) that sending updateHostDisplay() doesn’t refresh the program list either, which is a bit annoying. Even with ChangeDetails filled out to specify program change. Oh well :frowning:

I gave up with in-memory presets a long time ago :slight_smile:

In my last attempts, I tried to show file presets in this in-memory list. It was a total mess :slight_smile:

I also had the experience that it is complicated to save those presets. You need to save all of them. The host may select the same preset with the index when he restores the session.