- if (!automation_control (width_param)) {
- boost::shared_ptr<AutomationControl> c (new StreamPanner::PanControllable (_session, _("width"), *_streampanners.front(), width_param));
- c->set_value (1.0); // full width
- add_control (c);
+ if (wc) {
+ /* reset parent as above */
+ boost::shared_ptr<StreamPanner::PanControllable> p = boost::dynamic_pointer_cast<StreamPanner::PanControllable> (wc);
+ assert (p);
+ p->streampanner = _streampanners.front ();
+ } else {
+ wc.reset (new StreamPanner::PanControllable (_session, _("width"), _streampanners.front(), width_param));
+ add_control (wc);
+ }
+
+ dc->set_value (0.5);
+ wc->set_value (1.0); // full width
+}
+
+string
+Panner::describe_parameter (Evoral::Parameter param)
+{
+ if (param.type() == PanAutomation) {
+ switch (param.id()) {
+ case 100:
+ return "Pan:position";
+ case 200:
+ return "Pan:width";
+ default:
+ if (_streampanners.size() == 2) {
+ switch (param.id()) {
+ case 0:
+ return "Pan L";
+ default:
+ return "Pan R";
+ }
+ } else {
+ stringstream ss;
+ ss << "Pan " << param.id() + 1;
+ return ss.str ();
+ }
+ }