diff --git a/src/wrapper/clap/wrapper.rs b/src/wrapper/clap/wrapper.rs index 33b86839..25fd0bda 100644 --- a/src/wrapper/clap/wrapper.rs +++ b/src/wrapper/clap/wrapper.rs @@ -68,6 +68,7 @@ use crate::buffer::Buffer; use crate::context::Transport; use crate::event_loop::{EventLoop, MainThreadExecutor, TASK_QUEUE_CAPACITY}; use crate::param::internals::ParamPtr; +use crate::param::ParamFlags; use crate::plugin::{ BufferConfig, BusConfig, ClapPlugin, Editor, NoteEvent, ParentWindowHandle, ProcessStatus, }; @@ -1740,13 +1741,16 @@ impl Wrapper

{ let param_ptr = &wrapper.param_by_hash[param_hash]; let default_value = param_ptr.default_normalized_value(); let step_count = param_ptr.step_count(); + let automatable = !param_ptr.flags().contains(ParamFlags::NON_AUTOMATABLE); param_info.id = *param_hash; - param_info.flags = if step_count.is_some() { - CLAP_PARAM_IS_STEPPED | CLAP_PARAM_IS_AUTOMATABLE - } else { - CLAP_PARAM_IS_AUTOMATABLE - }; + param_info.flags = 0; + if automatable { + param_info.flags |= CLAP_PARAM_IS_AUTOMATABLE + } + if step_count.is_some() { + param_info.flags |= CLAP_PARAM_IS_STEPPED + } param_info.cookie = ptr::null_mut(); strlcpy(&mut param_info.name, param_ptr.name()); strlcpy(&mut param_info.module, param_group); diff --git a/src/wrapper/vst3/wrapper.rs b/src/wrapper/vst3/wrapper.rs index d1612d8d..8f0f5a1d 100644 --- a/src/wrapper/vst3/wrapper.rs +++ b/src/wrapper/vst3/wrapper.rs @@ -18,6 +18,7 @@ use super::inner::WrapperInner; use super::util::{VstPtr, BYPASS_PARAM_HASH, BYPASS_PARAM_ID}; use super::view::WrapperView; use crate::context::Transport; +use crate::param::ParamFlags; use crate::plugin::{BufferConfig, BusConfig, NoteEvent, ProcessStatus, Vst3Plugin}; use crate::wrapper::state; use crate::wrapper::util::{process_wrapper, u16strlcpy}; @@ -342,6 +343,7 @@ impl IEditController for Wrapper

{ .expect("Inconsistent parameter data"); let param_ptr = &self.inner.param_by_hash[param_hash]; let default_value = param_ptr.default_normalized_value(); + let automatable = !param_ptr.flags().contains(ParamFlags::NON_AUTOMATABLE); info.id = *param_hash; u16strlcpy(&mut info.title, param_ptr.name()); @@ -350,7 +352,11 @@ impl IEditController for Wrapper

{ info.step_count = param_ptr.step_count().unwrap_or(0) as i32; info.default_normalized_value = default_value as f64; info.unit_id = *param_unit; - info.flags = vst3_sys::vst::ParameterFlags::kCanAutomate as i32; + info.flags = if automatable { + vst3_sys::vst::ParameterFlags::kCanAutomate as i32 + } else { + vst3_sys::vst::ParameterFlags::kNoFlags as i32 + }; } kResultOk