summaryrefslogtreecommitdiff
path: root/libs/surfaces/faderport8/actions.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-14 13:57:14 +0200
committerRobin Gareus <robin@gareus.org>2017-04-14 19:56:42 +0200
commit43d9feabd31baaf47d5e0a1e3f1ff52be803346f (patch)
treef083946d25e8f2caa20e5ee0835a6358a09c9c61 /libs/surfaces/faderport8/actions.cc
parentd98f05d335e90563239f9ffac5185ac269be378d (diff)
cont'd FP8 refinement & details
* Access pan-width via shift, press encoder to reset * Add "touch-start" to encoder events * Show plugin-param value-bar * Sends & well-known ctrls: follow strip-selection * map "select" to strip-selection in Sends-mode * Fader group override (via shift) * Prev/Next button tweaks. * consistent enum naming ...
Diffstat (limited to 'libs/surfaces/faderport8/actions.cc')
-rw-r--r--libs/surfaces/faderport8/actions.cc50
1 files changed, 43 insertions, 7 deletions
diff --git a/libs/surfaces/faderport8/actions.cc b/libs/surfaces/faderport8/actions.cc
index 949d19a958..536257ca38 100644
--- a/libs/surfaces/faderport8/actions.cc
+++ b/libs/surfaces/faderport8/actions.cc
@@ -273,8 +273,10 @@ void
FaderPort8::button_prev_next (bool next)
{
switch (_ctrls.nav_mode()) {
- case NavMaster:
case NavChannel:
+ select_prev_next (next);
+ break;
+ case NavMaster:
case NavScroll:
bank (!next, false);
break;
@@ -283,13 +285,17 @@ FaderPort8::button_prev_next (bool next)
break;
case NavZoom:
if (next) {
- StepTracksDown ();
+ VerticalZoomInSelected ();
} else {
- StepTracksUp ();
+ VerticalZoomOutSelected ();
}
break;
case NavSection:
- // TODO nudge
+ if (next) {
+ AccessAction ("Region", "nudge-forward");
+ } else {
+ AccessAction ("Region", "nudge-backward");
+ }
break;
case NavMarker:
if (next) {
@@ -326,11 +332,15 @@ FaderPort8::button_encoder ()
ac = session->master_out()->gain_control ();
}
if (ac) {
+ if (!ac->touching ()) {
+ ac->start_touch (ac->session().transport_frame());
+ }
ac->set_value (ac->normal(), PBD::Controllable::NoGroup);
}
}
break;
case NavSection:
+ // TODO nudge
break;
case NavMarker:
{
@@ -402,12 +412,19 @@ FaderPort8::encoder_navigate (bool neg, int steps)
if (ac) {
double v = ac->internal_to_interface (ac->get_value());
v = std::max (0.0, std::min (1.0, v + steps * (neg ? -.01 : .01)));
+ if (!ac->touching ()) {
+ ac->start_touch (ac->session().transport_frame());
+ }
ac->set_value (ac->interface_to_internal(v), PBD::Controllable::NoGroup);
}
}
break;
case NavSection:
- // nudge event
+ if (neg) {
+ AccessAction ("Common", "nudge-playhead-backward");
+ } else {
+ AccessAction ("Common", "nudge-playhead-forward");
+ }
break;
}
}
@@ -419,7 +436,23 @@ FaderPort8::button_parameter ()
switch (_ctrls.fader_mode()) {
case ModeTrack:
case ModePan:
- // pan-width see FaderPort8::encoder_parameter()
+ {
+ boost::shared_ptr<Stripable> s = first_selected_stripable();
+ if (s) {
+ boost::shared_ptr<AutomationControl> ac;
+ if (shift_mod ()) {
+ ac = s->pan_width_control ();
+ } else {
+ ac = s->pan_azimuth_control ();
+ }
+ if (ac) {
+ if (!ac->touching ()) {
+ ac->start_touch (ac->session().transport_frame());
+ }
+ ac->set_value (ac->normal(), PBD::Controllable::UseGroup);
+ }
+ }
+ }
break;
case ModePlugins:
break;
@@ -439,7 +472,7 @@ FaderPort8::encoder_parameter (bool neg, int steps)
boost::shared_ptr<Stripable> s = first_selected_stripable();
if (s) {
boost::shared_ptr<AutomationControl> ac;
- if (_ctrls.button (FP8Controls::BtnParam).is_pressed ()) {
+ if (shift_mod ()) {
ac = s->pan_width_control ();
} else {
ac = s->pan_azimuth_control ();
@@ -447,6 +480,9 @@ FaderPort8::encoder_parameter (bool neg, int steps)
if (ac) {
double v = ac->internal_to_interface (ac->get_value());
v = std::max (0.0, std::min (1.0, v + steps * (neg ? -.01 : .01)));
+ if (!ac->touching ()) {
+ ac->start_touch (ac->session().transport_frame());
+ }
ac->set_value (ac->interface_to_internal(v), PBD::Controllable::UseGroup);
}
}