diff options
author | Carl Hetherington <carl@carlh.net> | 2011-07-12 20:30:02 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-07-12 20:30:02 +0000 |
commit | 7be510a26a54fdb3ba5f94650a86182accdd29ed (patch) | |
tree | 807ae1568907847d1d99a549b07c6a04cff9fee7 | |
parent | 11b0ac77f5c3b1e5bd2a96218d05edbe12a740db (diff) |
Set up default and upper/lower limit correctly on LV2 ports
whose values are expressed as a fraction of the sampling
rate. Should fix #3767.
git-svn-id: svn://localhost/ardour2/branches/3.0@9848 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | libs/ardour/lv2_plugin.cc | 8 | ||||
-rw-r--r-- | libs/ardour/lv2_plugin_lilv.cc | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 38e3eb4286..5060756800 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -225,6 +225,9 @@ LV2Plugin::init(void* c_plugin, framecnt_t rate) SLV2Value def; slv2_port_get_range(plugin, port, &def, NULL, NULL); _defaults[i] = def ? slv2_value_as_float(def) : 0.0f; + if (slv2_port_has_property(_impl->plugin, port, _world.srate)) { + _defaults[i] *= _session.frame_rate (); + } slv2_value_free(def); slv2_instance_connect_port(_impl->instance, i, &_control_data[i]); @@ -821,6 +824,11 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c desc.label = slv2_value_as_string(slv2_port_get_name(_impl->plugin, port)); desc.lower = min ? slv2_value_as_float(min) : 0.0f; desc.upper = max ? slv2_value_as_float(max) : 1.0f; + if (desc.sr_dependent) { + desc.lower *= _session.frame_rate (); + desc.upper *= _session.frame_rate (); + } + desc.min_unbound = false; // TODO: LV2 extension required desc.max_unbound = false; // TODO: LV2 extension required diff --git a/libs/ardour/lv2_plugin_lilv.cc b/libs/ardour/lv2_plugin_lilv.cc index 36b0a8e139..a1f42e6407 100644 --- a/libs/ardour/lv2_plugin_lilv.cc +++ b/libs/ardour/lv2_plugin_lilv.cc @@ -225,6 +225,9 @@ LV2Plugin::init(void* c_plugin, framecnt_t rate) LilvNode* def; lilv_port_get_range(plugin, port, &def, NULL, NULL); _defaults[i] = def ? lilv_node_as_float(def) : 0.0f; + if (lilv_port_has_property (plugin, port, _world.srate)) { + _defaults[i] *= _session.frame_rate (); + } lilv_node_free(def); lilv_instance_connect_port(_impl->instance, i, &_control_data[i]); @@ -798,6 +801,11 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c desc.label = lilv_node_as_string(lilv_port_get_name(_impl->plugin, port)); desc.lower = min ? lilv_node_as_float(min) : 0.0f; desc.upper = max ? lilv_node_as_float(max) : 1.0f; + if (desc.sr_dependent) { + desc.lower *= _session.frame_rate (); + desc.upper *= _session.frame_rate (); + } + desc.min_unbound = false; // TODO: LV2 extension required desc.max_unbound = false; // TODO: LV2 extension required |