summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-02-28 07:08:09 +0100
committerRobin Gareus <robin@gareus.org>2015-02-28 07:23:45 +0100
commitb362f457386f35b6d406bb0c208ede5612452f35 (patch)
treeb8b4c264a0605007a5cff4438edd14f5dd3f27c8 /libs
parent105ecfa4649fe41e2a48ce2a6bae5c38f9a45f63 (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.cc27
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