From 02487b57e746e1e52ef970bf111916c6c6026cd3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 1 Oct 2009 16:35:55 +0000 Subject: LADSPA log parameters default values set appropriately and handle localized decimal indicator in BarController (from robsch) git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5704 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ladspa_plugin.cc | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'libs/ardour/ladspa_plugin.cc') diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index 6a27b8571a..8d81519050 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -182,34 +182,44 @@ LadspaPlugin::default_value (uint32_t port) ret = prh[port].LowerBound; bounds_given = true; sr_scaling = true; - earlier_hint = true; } /* FIXME: add support for logarithmic defaults */ else if (LADSPA_IS_HINT_DEFAULT_LOW(prh[port].HintDescriptor)) { - ret = prh[port].LowerBound * 0.75f + prh[port].UpperBound * 0.25f; + if (LADSPA_IS_HINT_LOGARITHMIC(prh[port].HintDescriptor)) { + ret = exp(log(prh[port].LowerBound) * 0.75f + log(prh[port].UpperBound) * 0.25f); + } + else { + ret = prh[port].LowerBound * 0.75f + prh[port].UpperBound * 0.25f; + } bounds_given = true; sr_scaling = true; - earlier_hint = true; } else if (LADSPA_IS_HINT_DEFAULT_MIDDLE(prh[port].HintDescriptor)) { - ret = prh[port].LowerBound * 0.50f + prh[port].UpperBound * 0.50f; + if (LADSPA_IS_HINT_LOGARITHMIC(prh[port].HintDescriptor)) { + ret = exp(log(prh[port].LowerBound) * 0.5f + log(prh[port].UpperBound) * 0.5f); + } + else { + ret = prh[port].LowerBound * 0.5f + prh[port].UpperBound * 0.5f; + } bounds_given = true; sr_scaling = true; - earlier_hint = true; } else if (LADSPA_IS_HINT_DEFAULT_HIGH(prh[port].HintDescriptor)) { - ret = prh[port].LowerBound * 0.25f + prh[port].UpperBound * 0.75f; + if (LADSPA_IS_HINT_LOGARITHMIC(prh[port].HintDescriptor)) { + ret = exp(log(prh[port].LowerBound) * 0.25f + log(prh[port].UpperBound) * 0.75f); + } + else { + ret = prh[port].LowerBound * 0.25f + prh[port].UpperBound * 0.75f; + } bounds_given = true; sr_scaling = true; - earlier_hint = true; } else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM(prh[port].HintDescriptor)) { ret = prh[port].UpperBound; bounds_given = true; sr_scaling = true; - earlier_hint = true; } else if (LADSPA_IS_HINT_DEFAULT_0(prh[port].HintDescriptor)) { ret = 0.0f; -- cgit v1.2.3