Why is supporting both IProgramListData and IUnitData prohibited?

SDK for VST 3 audio plug-in and host development.
Post Reply
hotwatermorning
Posts: 6
Joined: Wed Oct 31, 2018 1:13 am
Location: Japan
Contact:

Why is supporting both IProgramListData and IUnitData prohibited?

Post by hotwatermorning » Sun Sep 01, 2019 9:01 am

Hi,

I found this sentence in the document of IProgramListData.
A component can either support program list data via this interface or unit preset data (IUnitData), but not both!
If I understand correctly, IProgramListData and IUnitData are respectively used for saving/loading a specific program state and a specific unit state by a host application instead of saving/loading the whole IComponent state of the plugin by IComponent::get/setState().

I wonder why supporting both IProgramListData and IUnitData by a plugin is prohibited.
Because I suppose that ordinary plugins can support both classes and work correctly.

Would anyone like to tell me why supporting both IProgramListData and IUnitData is prohibited?

Thanks.

ygrabit
Posts: 132
Joined: Fri Jun 17, 2016 7:52 am
Location: Hamburg

Re: Why is supporting both IProgramListData and IUnitData prohibited?

Post by ygrabit » Fri Sep 13, 2019 1:34 pm

Yes you´re right it should be possible for a plugin to implement these 2 interfaces.
  • IProgramListData is a slot inside a ProgramList
  • IUnitData is for the whole state of a Unit (which could include global setting to a given unit and all state of each slot of the ProgramList)
we will update the documentation.
YVan Grabit

hotwatermorning
Posts: 6
Joined: Wed Oct 31, 2018 1:13 am
Location: Japan
Contact:

Re: Why is supporting both IProgramListData and IUnitData prohibited?

Post by hotwatermorning » Tue Sep 17, 2019 2:48 am

Thanks YVan.

I see.
However, I suppose that Steinberg::Vst::PresetFile class also may need to be updated if a plugin can implement these 2 interfaces.

It seems that PresetFile class doesn't have APIs to distinguish whether the stored data of ChunkType::kProgramData is from IUnitData or IProgramListData.
So if I read a .vstpreset file with PresetFile class that the file contains unit data or program list data of a plugin which implements these 2 interfaces, I can't determine which interfaces, IUnitData or IProgramListData, should restore the preset data.

Sincerely,
hotwatermorning

ygrabit
Posts: 132
Joined: Fri Jun 17, 2016 7:52 am
Location: Hamburg

Re: Why is supporting both IProgramListData and IUnitData prohibited?

Post by ygrabit » Tue Sep 24, 2019 6:02 am

Yes. This is something we have to extend...
Thanks for pointing this.
YVan Grabit

Post Reply