summaryrefslogtreecommitdiff
path: root/libs/panners/2in2out
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-01-27 18:48:33 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-01-27 18:48:33 +0000
commitd116af22db3c0e0cf6aeff6194a689d8bfad7c8c (patch)
treec3d9888d5020d8e6bf02532ea06adc388d9033f5 /libs/panners/2in2out
parent85e8be3fa4f4910907d731a4591bf5e7d5135ca6 (diff)
virtualize the way that AutomationController gets strings to display values, so that we can callback through the owner of an AutomationControl, not just rely on the value from the AutomationControl; make pan automation tracks use this to display more audio-centric values
git-svn-id: svn://localhost/ardour2/branches/3.0@8590 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/panners/2in2out')
-rw-r--r--libs/panners/2in2out/panner_2in2out.cc27
-rw-r--r--libs/panners/2in2out/panner_2in2out.h1
2 files changed, 28 insertions, 0 deletions
diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc
index 2c2856361c..30d971d118 100644
--- a/libs/panners/2in2out/panner_2in2out.cc
+++ b/libs/panners/2in2out/panner_2in2out.cc
@@ -473,3 +473,30 @@ Panner2in2out::describe_parameter (Evoral::Parameter p)
return _pannable->describe_parameter (p);
}
}
+
+string
+Panner2in2out::value_as_string (boost::shared_ptr<AutomationControl> ac) const
+{
+ /* DO NOT USE LocaleGuard HERE */
+ double val = ac->get_value();
+
+ switch (ac->parameter().type()) {
+ case PanAzimuthAutomation:
+ /* We show the position of the center of the image relative to the left & right.
+ This is expressed as a pair of percentage values that ranges from (100,0)
+ (hard left) through (50,50) (hard center) to (0,100) (hard right).
+
+ This is pretty wierd, but its the way audio engineers expect it. Just remember that
+ the center of the USA isn't Kansas, its (50LA, 50NY) and it will all make sense.
+ */
+
+ return string_compose (_("L:%1 R:%2"), (int) rint (100.0 * (1.0 - val)),
+ (int) rint (100.0 * val));
+
+ case PanWidthAutomation:
+ return string_compose (_("Width: %1%%"), (int) floor (100.0 * val));
+
+ default:
+ return _pannable->value_as_string (ac);
+ }
+}
diff --git a/libs/panners/2in2out/panner_2in2out.h b/libs/panners/2in2out/panner_2in2out.h
index 0bb38fa27f..2014bb032e 100644
--- a/libs/panners/2in2out/panner_2in2out.h
+++ b/libs/panners/2in2out/panner_2in2out.h
@@ -60,6 +60,7 @@ class Panner2in2out : public Panner
static Panner* factory (boost::shared_ptr<Pannable>, Speakers&);
std::string describe_parameter (Evoral::Parameter);
+ std::string value_as_string (boost::shared_ptr<AutomationControl>) const;
XMLNode& state (bool full_state);
XMLNode& get_state (void);