projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Switch to PBD control-math and prefer Controllable API
[ardour.git]
/
libs
/
ardour
/
gain_control.cc
diff --git
a/libs/ardour/gain_control.cc
b/libs/ardour/gain_control.cc
index ee356b017c3169c235b70e497325dc0b442b5bbf..35f666bdf10c23222ed24e905b9d6e1491e8dee7 100644
(file)
--- a/
libs/ardour/gain_control.cc
+++ b/
libs/ardour/gain_control.cc
@@
-50,7
+50,7
@@
double
GainControl::internal_to_interface (double v) const
{
if (_desc.type == GainAutomation) {
GainControl::internal_to_interface (double v) const
{
if (_desc.type == GainAutomation) {
- return gain_to_slider_position
(v
);
+ return gain_to_slider_position
_with_max (v, _desc.upper
);
} else {
return (accurate_coefficient_to_dB (v) - lower_db) / range_db;
}
} else {
return (accurate_coefficient_to_dB (v) - lower_db) / range_db;
}
@@
-60,7
+60,7
@@
double
GainControl::interface_to_internal (double v) const
{
if (_desc.type == GainAutomation) {
GainControl::interface_to_internal (double v) const
{
if (_desc.type == GainAutomation) {
- return slider_position_to_gain
(v
);
+ return slider_position_to_gain
_with_max (v, _desc.upper
);
} else {
return dB_to_coefficient (lower_db + v * range_db);
}
} else {
return dB_to_coefficient (lower_db + v * range_db);
}
@@
-102,6
+102,15
@@
GainControl::inc_gain (gain_t factor)
}
}
}
}
+void
+GainControl::post_add_master (boost::shared_ptr<AutomationControl> m)
+{
+ if (m->get_value() == 0) {
+ /* master is at -inf, which forces this ctrl to -inf on assignment */
+ Changed (false, Controllable::NoGroup); /* EMIT SIGNAL */
+ }
+}
+
bool
GainControl::get_masters_curve_locked (framepos_t start, framepos_t end, float* vec, framecnt_t veclen) const
{
bool
GainControl::get_masters_curve_locked (framepos_t start, framepos_t end, float* vec, framecnt_t veclen) const
{