VST 3 single component (process and controller) question

From documentation is not recomended use single component (processor and controller). Why? The only reason I see is, GUI can block audio? If it is that case, creating own solution to prevent GUI block audio process on my own is ok to use single component?

I don’t believe single component can block audio. process function is always called from real time thread. GUI is called from Main Thread. My suspect is that single component processor and controller cannot be divided into two independent machines (feature of VST3 but rather not commonly used)

Yes this is how I understand it, but my question is about single component and not Simple Mode, from documentation there are 3 possibilities, kDistribute, kSimpleMode and single component. Simple mode means, they are separated (controller and processor), but it is not alowed use it in another machine. Single component I am writing about is one class with processor and controller as one “object” and controller and processor are not separated and thay can call functions directly between each others, therefore I am writing about “block audio” because it is single component, and when processor call function to GUI, it can block audio, but this is not main question, question is Why it is not recomended.

Single Component is not recommanded, better to have 2 independent components:
Having 2 separated parts (Controller/Processor) allows hosts to better handling plugins :

  • separating the processing part in an another computer for optimize performance
  • separating the processing part in an another process (executable) for security reason (sandboxing).

Having 2 separated parts (Controller/Processor) forces the developer to better :

  • organize/program/follow pattern coding (Model(View/Controller),
  • avoid him to have locking/Race condition/multithreading issue between Editing and processing.

just some examples…