summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-07-10 11:29:57 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-09-27 14:59:30 -0500
commitc4602603b4a229ab7d017f0733a9b771179b4319 (patch)
tree51dd3d1ba7d178910e74c1a8b352165f55167473 /libs
parent6b080bf6ec5ae448a8f9f04a2bedbe81e74fff61 (diff)
push2: make octave buttons actually work, with shift-press to reset to zero
Diffstat (limited to 'libs')
-rw-r--r--libs/surfaces/push2/buttons.cc12
-rw-r--r--libs/surfaces/push2/push2.cc2
2 files changed, 11 insertions, 3 deletions
diff --git a/libs/surfaces/push2/buttons.cc b/libs/surfaces/push2/buttons.cc
index fe9e3322f4..316353f764 100644
--- a/libs/surfaces/push2/buttons.cc
+++ b/libs/surfaces/push2/buttons.cc
@@ -503,20 +503,28 @@ Push2::start_press_timeout (Button& button, ButtonID id)
void
Push2::button_octave_down ()
{
+ if (_modifier_state & ModShift) {
+ octave_shift = 0;
+ return;
+ }
+
int os = (max (-4, octave_shift - 1));
if (os != octave_shift) {
octave_shift = os;
- build_pad_table ();
}
}
void
Push2::button_octave_up ()
{
+ if (_modifier_state & ModShift) {
+ octave_shift = 0;
+ return;
+ }
+
int os = (min (4, octave_shift + 1));
if (os != octave_shift) {
octave_shift = os;
- build_pad_table ();
}
}
diff --git a/libs/surfaces/push2/push2.cc b/libs/surfaces/push2/push2.cc
index 2cd2091f02..a293c58c64 100644
--- a/libs/surfaces/push2/push2.cc
+++ b/libs/surfaces/push2/push2.cc
@@ -1256,7 +1256,7 @@ Push2::pad_filter (MidiBuffer& in, MidiBuffer& out) const
Pad const * pad = nni->second;
/* shift for output to the shadow port */
if (pad->filtered >= 0) {
- (*ev).set_note (pad->filtered);
+ (*ev).set_note (pad->filtered + (octave_shift*12));
out.push_back (*ev);
/* shift back so that the pads light correctly */
(*ev).set_note (n);