{"id":13763,"date":"2026-05-08T07:08:21","date_gmt":"2026-05-08T05:08:21","guid":{"rendered":"https:\/\/store.algosyntax.com\/?post_type=documentation&#038;p=13763"},"modified":"2026-05-08T07:29:05","modified_gmt":"2026-05-08T05:29:05","slug":"the-vst-instance-controller-component","status":"publish","type":"documentation","link":"https:\/\/store.algosyntax.com\/documentation\/the-vst-instance-controller-component\/","title":{"rendered":"The Vst Instance Controller Component"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"13763\" class=\"elementor elementor-13763\" data-elementor-post-type=\"documentation\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4fb2fcf e-flex e-con-boxed e-con e-parent\" data-id=\"4fb2fcf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ddc622 elementor-widget elementor-widget-heading\" data-id=\"3ddc622\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">VST Audio | VST Instance Controller Component<\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9df1747 e-flex e-con-boxed e-con e-parent\" data-id=\"9df1747\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c7d93c9 elementor-widget elementor-widget-text-editor\" data-id=\"c7d93c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"43\" data-end=\"187\">The VST controller component system lets Blueprint users control plugin-specific parameters without working directly with raw VST parameter IDs. Its a wrapper for the lower level <strong>UAxVstInstanceHandle.<\/strong><\/p><p data-start=\"43\" data-end=\"187\">\u00a0<\/p><p data-start=\"189\" data-end=\"494\">At the low level, each live VST instance is still controlled through a generic VST instance handle. That handle exposes functions such as <code data-start=\"327\" data-end=\"347\">SetParamNormalized<\/code>, which require a parameter ID and a normalized value. The controller component sits above that handle and gives designers a cleaner Blueprint API.<\/p><p data-start=\"496\" data-end=\"528\">For example, instead of calling:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ddb31d0 elementor-widget elementor-widget-code-highlight\" data-id=\"ddb31d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>SetParamNormalized(123, 0.75f);<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-758c56a e-con-full e-flex e-con e-child\" data-id=\"758c56a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-10f2557 elementor-widget elementor-widget-text-editor\" data-id=\"10f2557\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"574\" data-end=\"630\">a Blueprint (or C++) can call a plugin-specific function such as:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-87471bc elementor-widget elementor-widget-code-highlight\" data-id=\"87471bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>SetMix(0.75f);<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c290e7d elementor-widget elementor-widget-text-editor\" data-id=\"c290e7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"574\" data-end=\"630\">The parameter ID remains hardcoded inside the controller component, where it belongs, instead of being repeated throughout gameplay Blueprints.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b5764da e-flex e-con-boxed e-con e-parent\" data-id=\"b5764da\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-098a2d2 elementor-widget elementor-widget-heading\" data-id=\"098a2d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Typical Setup<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b8e65d elementor-widget elementor-widget-text-editor\" data-id=\"9b8e65d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"823\" data-end=\"956\">Create a Blueprint child class from <code data-start=\"859\" data-end=\"894\">UAxVstInstanceControllerComponent<\/code>. Name it after the plugin or effect it controls, for example:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6553faf elementor-widget elementor-widget-code-highlight\" data-id=\"6553faf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>BP_KhsReverbControllerComponent<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-af43338 e-con-full e-flex e-con e-child\" data-id=\"af43338\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7b06056 elementor-widget elementor-widget-text-editor\" data-id=\"7b06056\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1003\" data-end=\"1090\">Inside that Blueprint child, add functions that represent the plugin\u2019s real parameters:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36065d5 elementor-widget elementor-widget-code-highlight\" data-id=\"36065d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>SetMix()\r\nSetRoomSize()\r\nSetDecay()\r\nSetDamping()<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-57fe88b elementor-widget elementor-widget-text-editor\" data-id=\"57fe88b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1144\" data-end=\"1210\">Each of those functions should call the protected helper function:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21b9c86 elementor-widget elementor-widget-code-highlight\" data-id=\"21b9c86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>SetParamNormalized() Or \nGetParamNormalized()<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-51ff388 elementor-widget elementor-widget-text-editor\" data-id=\"51ff388\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1248\" data-end=\"1322\">and pass the correct hardcoded VST parameter ID for that plugin parameter.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b9dc261 e-con-full e-flex e-con e-child\" data-id=\"b9dc261\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c73dc16 elementor-widget elementor-widget-text-editor\" data-id=\"c73dc16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1324\" data-end=\"1336\">For example:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-081d962 elementor-widget elementor-widget-code-highlight\" data-id=\"081d962\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>SetMix(float InNormalizedValue)\r\n    \u2192(Calls) SetParamNormalizedById(MixParamID, InNormalizedValue)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32eb581 elementor-widget elementor-widget-text-editor\" data-id=\"32eb581\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1144\" data-end=\"1210\">This means gameplay Blueprints only see meaningful parameter names, while the controller component handles the parameter ID mapping internally.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-97ae315 e-flex e-con-boxed e-con e-parent\" data-id=\"97ae315\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7ba5f7b elementor-widget elementor-widget-heading\" data-id=\"7ba5f7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Finding And Identifying Parameter ID: The Vst Parameter Inspector<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3267f56 elementor-widget elementor-widget-text-editor\" data-id=\"3267f56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"823\" data-end=\"956\">In the editor, if you open Tools Menu you&#8217;ll find the VST Parameter Inspector. This tool helps you identify the ID of the Parameter you may wish to control from Blueprints. Its meant to help you create your blueprint.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a23143 elementor-widget__width-initial elementor-widget elementor-widget-video\" data-id=\"5a23143\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/_sD32bJOQ3Y&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c16ce1a e-flex e-con-boxed e-con e-parent\" data-id=\"c16ce1a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e3b2ac3 elementor-widget elementor-widget-heading\" data-id=\"e3b2ac3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Initializing the Controller<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-12a2121 elementor-widget elementor-widget-text-editor\" data-id=\"12a2121\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1621\" data-end=\"1834\">The controller component does not automatically search for an audio component. The owning Blueprint must explicitly initialize it with the audio component that is playing the MetaSound containing the VST instance.<\/p><p data-start=\"1836\" data-end=\"1880\">A typical <code data-start=\"1846\" data-end=\"1857\">BeginPlay<\/code> setup looks like this: Call InitializeController()<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7399b77 elementor-widget elementor-widget-code-highlight\" data-id=\"7399b77\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>BeginPlay\r\n    \u2192 KhsReverbControllerComponent.InitializeController(AudioComponent)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53348fd elementor-widget elementor-widget-text-editor\" data-id=\"53348fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1977\" data-end=\"2112\">The component uses the provided audio component together with its configured <code data-start=\"2054\" data-end=\"2070\">VstInstanceTag<\/code> to request a runtime VST instance handle.<\/p><p data-start=\"2114\" data-end=\"2200\">The <code data-start=\"2118\" data-end=\"2134\">VstInstanceTag<\/code> must match the tag assigned to the VST node inside the MetaSound<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d4529d0 e-con-full e-flex e-con e-child\" data-id=\"d4529d0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50d4aca elementor-widget elementor-widget-text-editor\" data-id=\"50d4aca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1324\" data-end=\"1336\">For example:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a4ab16 elementor-widget elementor-widget-code-highlight\" data-id=\"6a4ab16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>SetMix(float InNormalizedValue)\r\n    \u2192(Calls) SetParamNormalizedById(MixParamID, InNormalizedValue)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dc00379 elementor-widget elementor-widget-text-editor\" data-id=\"dc00379\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1144\" data-end=\"1210\">This means gameplay Blueprints only see meaningful parameter names, while the controller component handles the parameter ID mapping internally.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6de8aab e-flex e-con-boxed e-con e-parent\" data-id=\"6de8aab\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7d4735 elementor-widget elementor-widget-heading\" data-id=\"a7d4735\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Calling Parameter Functions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b5ed0ce elementor-widget elementor-widget-text-editor\" data-id=\"b5ed0ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"2235\" data-end=\"2350\">Once initialized, gameplay Blueprints should use the plugin-specific functions exposed by the controller component:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f572a91 elementor-widget elementor-widget-code-highlight\" data-id=\"f572a91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>KhsReverbControllerComponent.SetMix(0.8)\r\nKhsReverbControllerComponent.SetRoomSize(0.5)\r\nKhsReverbControllerComponent.SetDecay(0.65)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd9732b elementor-widget elementor-widget-text-editor\" data-id=\"dd9732b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"2496\" data-end=\"2548\">All values are normalized, so the expected range is: 0.0 to 1.0.<\/p><p data-start=\"2574\" data-end=\"2663\">The controller will clamp values into this range before sending them to the VST instance.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e0048e e-flex e-con-boxed e-con e-parent\" data-id=\"5e0048e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1885a57 elementor-widget elementor-widget-heading\" data-id=\"1885a57\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Handling Readiness<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2005b8 elementor-widget elementor-widget-text-editor\" data-id=\"c2005b8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"2689\" data-end=\"2873\">A controller can be initialized before the underlying live VST instance is ready. In that case, parameter changes can be queued and applied automatically once the handle becomes ready.<\/p><p data-start=\"2875\" data-end=\"2914\">This allows simple setup logic such as:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da57ba9 elementor-widget elementor-widget-code-highlight\" data-id=\"da57ba9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t<xmp>BeginPlay\r\n    \u2192 InitializeController(AudioComponent)\r\n    \u2192 SetMix(0.7)\r\n    \u2192 SetRoomSize(0.4)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2c95b5 elementor-widget elementor-widget-text-editor\" data-id=\"c2c95b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"3023\" data-end=\"3168\">Even if the VST instance is not ready immediately, the latest value for each parameter is stored and applied when the instance becomes available.<\/p><p data-start=\"3170\" data-end=\"3295\">Blueprints can also bind to the controller\u2019s <code data-start=\"3215\" data-end=\"3224\">OnReady<\/code> event when they need to run logic only after the VST instance is live.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":0,"template":"elementor_header_footer","categories":[130,129],"tags":[138],"class_list":["post-13763","documentation","type-documentation","status-publish","hentry","category-vst-audio","category-unreal-engine","tag-vstaudio","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation\/13763","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation"}],"about":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/types\/documentation"}],"version-history":[{"count":2,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation\/13763\/revisions"}],"predecessor-version":[{"id":13775,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation\/13763\/revisions\/13775"}],"wp:attachment":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media?parent=13763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/categories?post=13763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/tags?post=13763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}