diff options
author | Robin Gareus <robin@gareus.org> | 2015-02-28 07:08:09 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-02-28 07:23:45 +0100 |
commit | b362f457386f35b6d406bb0c208ede5612452f35 (patch) | |
tree | b8b4c264a0605007a5cff4438edd14f5dd3f27c8 /libs | |
parent | 105ecfa4649fe41e2a48ce2a6bae5c38f9a45f63 (diff) |
fix AU generic GUI and automation lanes
Don’t include non-automatable params.
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/audio_unit.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index fb5ee64380..e17005eaa2 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -1666,21 +1666,36 @@ AUPlugin::parameter_is_audio (uint32_t) const } bool -AUPlugin::parameter_is_control (uint32_t) const +AUPlugin::parameter_is_control (uint32_t param) const { - return true; + assert(param < descriptors.size()); + if (descriptors[param].automatable) { + /* corrently ardour expects all controls to be automatable + * IOW ardour GUI elements mandate an Evoral::Parameter + * for all input+control ports. + */ + return true; + } + return false; } bool -AUPlugin::parameter_is_input (uint32_t) const +AUPlugin::parameter_is_input (uint32_t param) const { - return true; + /* AU params that are both readable and writeable, + * are listed in kAudioUnitScope_Global + */ + return (descriptors[param].scope == kAudioUnitScope_Input || descriptors[param].scope == kAudioUnitScope_Global); } bool -AUPlugin::parameter_is_output (uint32_t) const +AUPlugin::parameter_is_output (uint32_t param) const { - return false; + assert(param < descriptors.size()); + // TODO check if ardour properly handles ports + // that report is_input + is_output == true + // -> add || descriptors[param].scope == kAudioUnitScope_Global + return (descriptors[param].scope == kAudioUnitScope_Output); } void |