summaryrefslogtreecommitdiffstats
path: root/src/gui/Port.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-14 22:49:22 +0000
committerDavid Robillard <d@drobilla.net>2011-09-14 22:49:22 +0000
commit728f510e8c542db2907dcd439a9ab99d07282220 (patch)
tree6aa01740b1def7a1fa0a32e22fef929bdc231a62 /src/gui/Port.cpp
parente18380569bdbe1926be7540f3e2f9ebdf49a8e70 (diff)
downloadingen-728f510e8c542db2907dcd439a9ab99d07282220.tar.gz
ingen-728f510e8c542db2907dcd439a9ab99d07282220.tar.bz2
ingen-728f510e8c542db2907dcd439a9ab99d07282220.zip
Support lv2:sampleRate controls (mostly) correctly.
Fix initial control port values (was always 0.0). Fix numeric values in control window. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3460 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui/Port.cpp')
-rw-r--r--src/gui/Port.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp
index 25edf685..9b2a1c8f 100644
--- a/src/gui/Port.cpp
+++ b/src/gui/Port.cpp
@@ -111,7 +111,7 @@ Port::update_metadata()
if (parent) {
float min = 0.0f;
float max = 1.0f;
- parent->port_value_range(pm, min, max);
+ parent->port_value_range(pm, min, max, App::instance().sample_rate());
set_control_min(min);
set_control_max(max);
}
@@ -193,12 +193,20 @@ Port::property_changed(const URI& key, const Atom& value)
{
const LV2URIMap& uris = App::instance().uris();
if (value.type() == Atom::FLOAT) {
- if (key == uris.ingen_value && !_pressed)
- set_control(value.get_float(), false);
- else if (key == uris.lv2_minimum)
- set_control_min(value.get_float());
- else if (key == uris.lv2_maximum)
- set_control_max(value.get_float());
+ float val = value.get_float();
+ if (key == uris.ingen_value && !_pressed) {
+ set_control(val, false);
+ } else if (key == uris.lv2_minimum) {
+ if (model()->port_property(uris.lv2_sampleRate)) {
+ val *= App::instance().sample_rate();
+ }
+ set_control_min(val);
+ } else if (key == uris.lv2_maximum) {
+ if (model()->port_property(uris.lv2_sampleRate)) {
+ val *= App::instance().sample_rate();
+ }
+ set_control_max(val);
+ }
} else if (key == uris.lv2_portProperty) {
if (value == uris.lv2_toggled)
set_toggled(true);