VST3 SDK and VSTGUI implementation patterns. Use when working on plugin UI, parameter handling, VSTGUI components, editor lifecycle, thread safety, controller code, reusable view templates, sub-controllers, or cross-platform compatibility. Covers parameter types, IDependent pattern, visibility controllers, control selection, template instantiation, tag remapping, and common pitfalls.
التثبيت
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
VST3 SDK and VSTGUI implementation patterns. Use when working on plugin UI, parameter handling, VSTGUI components, editor lifecycle, thread safety, controller code, reusable view templates, sub-controllers, or cross-platform compatibility. Covers parameter types, IDependent pattern, visibility controllers, control selection, template instantiation, tag remapping, and common pitfalls.
allowed-tools
Read, Grep, Glob, Bash
VST3 SDK and VSTGUI Implementation Guide
This skill captures hard-won insights about VST3 SDK and VSTGUI that are not obvious from official documentation. These findings prevent repeating debugging sessions that waste hours.
setParamNormalized() can be called from ANY thread (automation, state loading, etc.). VSTGUI controls MUST only be manipulated on the UI thread.
NEVER do this:
// BROKEN - setParamNormalized can be called from any thread!tresult Controller::setParamNormalized(ParamID id, ParamValue value){
if (id == kTimeModeId) {
delayTimeControl_->setVisible(value < 0.5f); // CRASH!
}
}
ALWAYS use the IDependent pattern with deferred updates. See THREAD-SAFETY.md.
Feedback Loop Prevention (Built-in)
VST3Editor already prevents feedback loops in valueChanged():
voidVST3Editor::valueChanged(CControl* pControl){
if (!pControl->isEditing()) // Only propagates USER editsreturn;
// ... send normalized value to host
}
isEditing() == true: User is actively manipulating the control
isEditing() == false: Host is updating programmatically
You don't need custom feedback prevention code. VSTGUI handles this automatically.