DAW plugin hosting specifics summary doc


#1

Hi, it makes me mad to do DAW plug-in hosting specifics studies each time I am reported an issue with a DAW, so I started a DAW specifics table that I make publicly readable and commentable (contributions are welcome), I’ll integrate contributions on the flow. I hope this will save time to plugin devs and ease troubleshooting.


Spreadsheet of which threads hosts call certain methods on
#2

Great initiative! I’ll do my best to add my findings to it.

It’s quite tricky to get it all together since JUCE tries to make a cross-format-host-platform one fits all solutions. and many hosts implement standards different or lack them so there are many areas to be added :wink:

I’ll start with adding:
https://docs.juce.com/master/structAudioPlayHead_1_1CurrentPositionInfo.html

For example recording state only reported by VST and isn’t supported by all hosts.
Sample-position is another example of tricky behavior.


#3

Can you please rather add this as a comment in the linked doc? Maybe as a new column


#4

What a good idea. It would be brilliant if this was linked from somewhere for all time … so we don’t forget about it!


#5

Well, googling it already comes to this forum post. Otherwise, you can just bookmark it in your browser :wink:


#6

Bookmarks are this place that links go to die :slight_smile:


#7

Studio One does latency compensation since version 1


#8

These kinds or irregularities between hosts are exactly the kind of thing I’d like to write tests for in pluginval:

It would be great for example if Host A loads plugins on a background thread to write a “HostA” test that does this. Then you can automate testing of your plugins and find out exactly if this behaviour causes problems and exactly what part of the test fails.


Anouncing "pluginval" an open-source cross-platform plugin validation tool
#9

Can this be a shared effort ? There are so many holes in this document.


#10

i’d add a column about non-automatable parameter support if anyone would be interested


#11

Please PM me your e-mail address, so that I can give you write access to the doc (everybody can already comment cells and we can integrate the suggestions)


#12

There is another area where the hosts seem to differ. When I update the parameter list, Logic with AU for instance picks it up correctly. Studio One with VST3 does not. It would be good to share insight in this area.


#13

When I update the parameter list, Logic with AU for instance picks it up correctly. Studio One with VST3 does not.

That’s not a difference between hosts, dynamic parameters are generally unsupported by the plugin APIs as much as hosts. I think Logic is the exception there.


#14

I am not talking about dynamic parameters in the sense that numbers and IDs change freely. I manage static table of preallocated parameters with fixed IDs, that just change their name. The name change is something that all plugin APIs support. It works with AU and VST2 in Studio One for instance, but with VST3 it does not. That lets me think, it is related to the Juce VST3 wrapper.


#15

Did you try other hosts with VST3? Would be good to know, if your problem only happens with that combination or any VST3 host…


#16

I tried Cubase 9 and got the same result. The changes are not picked up.


#17

It turned out to be a problem in the VST3 Wrapper. It just does not react to parameter name changes. It does not even consider they might occur.