public void ClearVstPlugin(int index)
        {
            if (index >= VstPlugins.Count() || VstPlugins[index] == null)
            {
                return;
            }

            RemoveVstPlugin(VstPlugins[index]);
            VstPlugins[index] = null;
        }
        public void ApplyVstSettings(VstSettings vstSettings)
        {
            foreach (var plugin in VstPlugins)
            {
                ClearVstPlugin(VstPlugins.IndexOf(plugin));
            }

            foreach (var settings in vstSettings.Plugins)
            {
                var index  = vstSettings.Plugins.IndexOf(settings);
                var plugin = LoadVstPlugin(settings.Key, index);
                PluginHelper.SetVstPluginParameters(plugin, settings.Value);
            }
        }
        public VstPlugin LoadVstPlugin(string location, int index)
        {
            if (VstPlugins.Count() > index &&
                VstPlugins[index] != null &&
                VstPlugins[index].Location == location)
            {
                return(VstPlugins[index]);
            }

            ClearVstPlugin(index);

            for (var i = VstPlugins.Count(); i < index + 1; i++)
            {
                VstPlugins.Add(null);
            }

            VstPlugins[index] = LoadAndApplyVstPlugin(location, index + 1);

            SetPluginBpm(VstPlugins[index]);
            return(VstPlugins[index]);
        }