MAKE_WHITE_BUTTON (Session, 51);
MAKE_WHITE_BUTTON (Layout, 31);
MAKE_WHITE_BUTTON (OctaveUp, 55);
- MAKE_WHITE_BUTTON (PageRight, 63);
+ MAKE_WHITE_BUTTON_PRESS (PageRight, 63, &Push2::button_page_right);
MAKE_WHITE_BUTTON (OctaveDown, 54);
- MAKE_WHITE_BUTTON (PageLeft, 62);
+ MAKE_WHITE_BUTTON_PRESS (PageLeft, 62, &Push2::button_page_left);
MAKE_WHITE_BUTTON_PRESS_RELEASE_LONG (Shift, 49, &Push2::button_shift_press, &Push2::button_shift_release, &Push2::button_shift_long_press);
MAKE_WHITE_BUTTON_PRESS_RELEASE_LONG (Select, 48, &Push2::button_select_press, &Push2::button_select_release, &Push2::button_select_long_press);
}
}
void
-Push2::button_right ()
+Push2::button_page_right ()
{
ScrollTimeline (0.75);
}
void
-Push2::button_left ()
+Push2::button_page_left ()
{
ScrollTimeline (-0.75);
}
+void
+Push2::button_right ()
+{
+ switch_bank (max (0, bank_start + 8));
+}
+
+void
+Push2::button_left ()
+{
+ switch_bank (max (0, bank_start - 8));
+}
+
void
Push2::button_repeat ()
{
void
Push2::button_browse ()
{
- if (modifier_state & ModShift) {
- access_action ("Editor/addExistingAudioFiles");
- } else {
- switch_bank (max (0, bank_start - 8));
- }
+ access_action ("Editor/addExistingAudioFiles");
}
void
Push2::button_clip ()
{
- switch_bank (max (0, bank_start + 8));
}
void
} else {
boost::shared_ptr<SoloControl> sc = stripable[n]->solo_control ();
if (sc) {
- sc->set_value (!sc->get_value(), PBD::Controllable::UseGroup);
+ sc->set_value (!sc->self_soloed(), PBD::Controllable::UseGroup);
}
}
}
if (modifier_state & ModSelect) {
stripable[n]->presentation_info().set_selected (!stripable[n]->presentation_info().selected());
} else {
- cerr << "select not set\n";
boost::shared_ptr<MuteControl> mc = stripable[n]->mute_control ();
if (mc) {
- mc->set_value (!mc->get_value(), PBD::Controllable::UseGroup);
+ mc->set_value (!mc->muted_by_self(), PBD::Controllable::UseGroup);
}
}
}
ButtonID buttons[] = { Mute, Solo, Master, Up, Right, Left, Down, Note, Session, Mix, AddTrack, Delete, Undo,
Metronome, Shift, Select, Play, RecordEnable, Automate, Repeat, Note, Session, DoubleLoop,
- Quantize, Duplicate, Browse,
+ Quantize, Duplicate, Browse, PageRight, PageLeft,
};
for (size_t n = 0; n < sizeof (buttons) / sizeof (buttons[0]); ++n) {
ButtonID off_buttons[] = { TapTempo, Setup, User, Stop, Convert, New, FixedLength,
Fwd32ndT, Fwd32nd, Fwd16thT, Fwd16th, Fwd8thT, Fwd8th, Fwd4trT, Fwd4tr,
- Accent, Scale, Layout, Note, Session, OctaveUp, PageRight, OctaveDown, PageLeft, };
+ Accent, Scale, Layout, Note, Session, OctaveUp, OctaveDown, };
for (size_t n = 0; n < sizeof (off_buttons) / sizeof (off_buttons[0]); ++n) {
Button* b = id_button_map[off_buttons[n]];
return;
}
- boost::shared_ptr<AutomationControl> ac = stripable[n]->solo_control ();
+ boost::shared_ptr<SoloControl> ac = stripable[n]->solo_control ();
if (!ac) {
return;
}
Button* b = id_button_map[bid];
- if (ac->get_value()) {
- b->set_color (LED::Red);
+
+ if (ac->soloed()) {
+ b->set_color (LED::Green);
} else {
b->set_color (LED::Black);
}
- b->set_state (LED::OneShot24th);
+
+ if (ac->soloed_by_others_upstream() || ac->soloed_by_others_downstream()) {
+ b->set_state (LED::Blinking4th);
+ } else {
+ b->set_state (LED::OneShot24th);
+ }
+
write (b->state_msg());
}
{
ButtonID bid;
+ if (!stripable[n]) {
+ return;
+ }
+
+ cerr << "Mute changed on " << n << ' ' << stripable[n]->name() << endl;
+
switch (n) {
case 0:
bid = Lower1;
return;
}
- boost::shared_ptr<AutomationControl> ac = stripable[n]->mute_control ();
- if (!ac) {
+ boost::shared_ptr<MuteControl> mc = stripable[n]->mute_control ();
+
+ if (!mc) {
return;
}
Button* b = id_button_map[bid];
- if (ac->get_value ()) {
- b->set_color (LED::Blue);
+ if (Config->get_show_solo_mutes() && !Config->get_solo_control_is_listen_control ()) {
+
+ if (mc->muted_by_self ()) {
+ /* full mute */
+ b->set_color (LED::Blue);
+ b->set_state (LED::OneShot24th);
+ cerr << "FULL MUTE1\n";
+ } else if (mc->muted_by_others_soloing () || mc->muted_by_masters ()) {
+ /* this will reflect both solo mutes AND master mutes */
+ b->set_color (LED::Blue);
+ b->set_state (LED::Blinking4th);
+ cerr << "OTHER MUTE1\n";
+ } else {
+ /* no mute at all */
+ b->set_color (LED::Black);
+ b->set_state (LED::OneShot24th);
+ cerr << "NO MUTE1\n";
+ }
+
} else {
- b->set_color (LED::Black);
+
+ if (mc->muted_by_self()) {
+ /* full mute */
+ b->set_color (LED::Blue);
+ b->set_state (LED::OneShot24th);
+ cerr << "FULL MUTE2\n";
+ } else if (mc->muted_by_masters ()) {
+ /* this shows only master mutes, not mute-by-others-soloing */
+ b->set_color (LED::Blue);
+ b->set_state (LED::Blinking4th);
+ cerr << "OTHER MUTE1\n";
+ } else {
+ /* no mute at all */
+ b->set_color (LED::Black);
+ b->set_state (LED::OneShot24th);
+ cerr << "NO MUTE2\n";
+ }
}
- b->set_state (LED::OneShot24th);
+
write (b->state_msg());
}