View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006828 | ardour | bugs | public | 2016-03-19 13:29 | 2020-04-19 20:17 |
| Reporter | ventosus | Assigned To | paul | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Platform | any | OS | any | OS Version | any |
| Product Version | 4.7 | ||||
| Summary | 0006828: Fix minimum/maximum discovery for integer params | ||||
| Description | As 'load_parameter_descriptor' is both used for lv2:ControlPorts and lv2:Parameters, it needs to also be able to discover integer minimum and maximum, as lv2:Parameters can be of type atom:Int/Long. | ||||
| Steps To Reproduce | Define an integer parameter in a plugin's *.ttl and Ardour won't be able to discover its minimum/maximum correctly and will fall back to range [0, 1]. esp:through_zone_mask a lv2:Parameter ; rdfs:label "Zone Mask" ; rdfs:range atom:Int ; lv2:minimum 0 ; lv2:maximum 256 . [...] patch:writable esp:through_zone_mask ; [...] | ||||
| Additional Information | Patch attached. | ||||
| Tags | No tags attached. | ||||
|
|
0001-Fix-minimum-maximum-discovery-for-integer-params.patch (1,786 bytes)
From 19ee34d582bbfd1ee4895b586eb76be1c2f8b9e5 Mon Sep 17 00:00:00 2001
From: Hanspeter Portner <dev@open-music-kontrollers.ch>
Date: Sat, 19 Mar 2016 14:21:03 +0100
Subject: [PATCH] Fix minimum/maximum discovery for integer params
As 'load_parameter_descriptor' is both used for lv2:ControlPorts and
lv2:Parameters, it needs to also be able to discover integer minimum
and maximum, as lv2:Parameters can be of type atom:Int/Long.
---
libs/ardour/lv2_plugin.cc | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index d707d3e..f86d98a 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -1626,14 +1626,26 @@ load_parameter_descriptor(LV2World& world,
if (label) {
desc.label = lilv_node_as_string(label);
}
- if (def && lilv_node_is_float(def)) {
- desc.normal = lilv_node_as_float(def);
+ if (def) {
+ if (lilv_node_is_float(def)) {
+ desc.normal = lilv_node_as_float(def);
+ } else if (lilv_node_is_int(def)) {
+ desc.normal = lilv_node_as_int(def);
+ }
}
- if (minimum && lilv_node_is_float(minimum)) {
- desc.lower = lilv_node_as_float(minimum);
+ if (minimum) {
+ if (lilv_node_is_float(minimum)) {
+ desc.lower = lilv_node_as_float(minimum);
+ } else if (lilv_node_is_int(minimum)) {
+ desc.lower = lilv_node_as_int(minimum);
+ }
}
- if (maximum && lilv_node_is_float(maximum)) {
- desc.upper = lilv_node_as_float(maximum);
+ if (maximum) {
+ if (lilv_node_is_float(maximum)) {
+ desc.upper = lilv_node_as_float(maximum);
+ } else if (lilv_node_is_int(maximum)) {
+ desc.upper = lilv_node_as_int(maximum);
+ }
}
load_parameter_descriptor_units(lworld, desc, units);
desc.datatype = datatype;
--
2.7.3
|
|
|
update: still an issue in 5.5 |
|
|
a quick check on lilv's version history indicates that lilv_node_is_float() is only available since 1e7b27c7b322476c437a8524cff4a88245c5efbf Fri Apr 29 19:30:30 2011 Ardour's minium requirement is 0.2.0, so this patch needs some #ifdef or we need to bump the min version, which is sensible. drobilla? |
|
|
sorry, my bad. ardour needs lilv 0.14.0 (or later), it's sratom-0 that's at 0.2.0. merge away |
|
|
manually applied with patch(1) since git-apply fails. thanks! |
|
|
see notes. |
|
|
Issue has been closed automatically, by Trigger Close Plugin. Feel free to re-open with additional information if you think the issue is not resolved. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2016-03-19 13:29 | ventosus | New Issue | |
| 2016-03-19 13:29 | ventosus | File Added: 0001-Fix-minimum-maximum-discovery-for-integer-params.patch | |
| 2016-12-09 13:22 | ventosus | Note Added: 0019135 | |
| 2016-12-19 22:51 | x42 | Note Added: 0019181 | |
| 2016-12-19 23:07 | x42 | Note Added: 0019189 | |
| 2016-12-19 23:11 | paul | Note Added: 0019190 | |
| 2016-12-19 23:11 | paul | Note Added: 0019191 | |
| 2016-12-19 23:11 | paul | Status | new => resolved |
| 2016-12-19 23:11 | paul | Resolution | open => fixed |
| 2016-12-19 23:11 | paul | Assigned To | => paul |
| 2020-04-19 20:17 | system | Note Added: 0023604 | |
| 2020-04-19 20:17 | system | Status | resolved => closed |