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.