View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002772 | ardour | bugs | public | 2009-07-08 16:52 | 2020-04-19 20:14 |
| Reporter | robsch | Assigned To | paul | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 2.8.1 | ||||
| Summary | 0002772: Initial values for some LADSPA plugins wrong, strange behaviour when modifying it manually | ||||
| Description | default values of certain ladspa plugins are not calculated correctly. i tried Steve Harris' triple band parametric: in jack rack "Band 1 frequency" is set to 40Hz, but ardour defaults to 0.123. The value can be changed to something meaningful, but double-clicking the fader changes the value again: step 1: change Band 1 Frequency to 200Hz by clicking and dragging the fader. step 2: double-click on the fader. The input field says 5.291 now.. step 3: set the value in the input field to 6.291, press Enter. step 4: the fader says 539 Hz now. probably this is related to http://tracker.ardour.org/view.php?id=2437 | ||||
| Additional Information | ardour 2.8.1 (built from revision 5338) uname -a: Linux jupiter 2.6.27-gentoo-r8 0000016 SMP PREEMPT Fri Jun 12 15:25:50 CEST 2009 x86_64 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux | ||||
| Tags | No tags attached. | ||||
|
|
I noticed from the sources that logarithmic default values were not correctly implemented yet (there was a FIXME), so I wrote a patch to do it the same way as jack-rack does. Furtheron, nickm's patch for a related bug caused some trouble for non-english locales (double-clicking the fader of a logarithmic parameter did not show a value in the gtk.Entry due to different characters for "." and "," for some languages in floating point numbers); this should be fixed by the patch, too. |
|
2009-08-11 07:07
|
log3.patch (3,372 bytes)
Index: libs/gtkmm2ext/barcontroller.cc
===================================================================
--- libs/gtkmm2ext/barcontroller.cc (Revision 5508)
+++ libs/gtkmm2ext/barcontroller.cc (Arbeitskopie)
@@ -109,6 +109,7 @@
// extract a double from the string and take its log
Entry *entry = dynamic_cast<Entry *>(&spinner);
stringstream stream(entry->get_text());
+ stream.imbue(std::locale(""));
double value;
stream >> value;
@@ -134,12 +135,33 @@
}
// generate the exponential and turn it into a string
+ // convert to correct locale.
+
stringstream stream;
+ string str;
+ size_t found;
+
+ // Gtk.Entry does not like the thousands separator, so we have to
+ // remove it after conversion from float to string.
+
+ stream.imbue(std::locale(""));
stream.precision(spinner.get_digits());
+
stream << fixed << exp(spinner.get_adjustment()->get_value());
+ str=stream.str();
+
+ // find thousands separators, remove them
+ found = str.find(use_facet<numpunct<char> >(std::locale("")).thousands_sep());
+ while(found != str.npos) {
+ str.erase(found,1);
+
+ //find next
+ found = str.find(use_facet<numpunct<char> >(std::locale("")).thousands_sep());
+ }
+
Entry *entry = dynamic_cast<Entry *>(&spinner);
- entry->set_text(stream.str());
+ entry->set_text(str);
return true;
}
Index: libs/ardour/ladspa_plugin.cc
===================================================================
--- libs/ardour/ladspa_plugin.cc (Revision 5509)
+++ libs/ardour/ladspa_plugin.cc (Arbeitskopie)
@@ -182,34 +182,44 @@
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;
|
|
|
Assigned to Paul to take a look at the patch. Seablade |
|
|
committed for both 2.0-ongoing and 3.0 (which required an earlier patch from nickm that had not been applied) |
|
|
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 |
|---|---|---|---|
| 2009-07-08 16:52 | robsch | New Issue | |
| 2009-07-08 17:00 | seablade | Relationship added | related to 0002608 |
| 2009-07-08 17:01 | seablade | Relationship added | related to 0002493 |
| 2009-08-11 07:07 | robsch | Note Added: 0006499 | |
| 2009-08-11 07:07 | robsch | File Added: log3.patch | |
| 2009-08-11 07:09 | seablade | Status | new => assigned |
| 2009-08-11 07:09 | seablade | Assigned To | => paul |
| 2009-08-11 07:09 | seablade | Note Added: 0006500 | |
| 2009-10-01 16:43 | paul | cost | => 0.00 |
| 2009-10-01 16:43 | paul | Note Added: 0006669 | |
| 2009-10-01 16:43 | paul | Status | assigned => resolved |
| 2009-10-01 16:43 | paul | Resolution | open => fixed |
| 2010-04-24 10:28 | cth103 | Category | bugs => bugs2 |
| 2010-04-24 10:31 | cth103 | Category | bugs2 => bugs |
| 2020-04-19 20:14 | system | Note Added: 0021949 | |
| 2020-04-19 20:14 | system | Status | resolved => closed |