Rework the processing of shift status, part 2. Removed the ? prefix, rules are now anyshift by default. The prefix 0^ now denotes a rule only active in unshifted state.

master
Albert Graef 2018-09-14 06:51:40 +02:00
parent 4ceef9cbd9
commit b7701e496b
3 changed files with 91 additions and 91 deletions

View File

@ -44,7 +44,7 @@ JACK_PORTS 2
# The APCmini's dedicated shift key is used to provide alternative functions
# to some of the buttons and the faders.
?D8 SHIFT RELEASE SHIFT
D8 SHIFT RELEASE SHIFT
# transport (assigned to the topmost 5 "scene launch" buttons on the right)
A#6 A7 # Stop
@ -140,7 +140,7 @@ CC53[] PB[129]-6
CC54[] PB[129]-7
CC55[] PB[129]-8
# master fader
?CC56[] PB[129]-9
CC56[] PB[129]-9
# faders become encoders when shifted (CC16..CC23, incremental mode)
^CC48= CC16~
@ -187,7 +187,7 @@ G#7 D7
# 1 yellow and 1 red LED seems to work reasonably well, but you might want to
# adjust the colors and the mapping of the meter values to your liking.
?CP[16] C2{0,1} G#2{0:3,1} E3{0:6,1} C4{0:9,5} G#4{0:12,3}
CP[16] C2{0,1} G#2{0:3,1} E3{0:6,1} C4{0:9,5} G#4{0:12,3}
# NOTE: We only report the values as we receive them here, there's no
# automatic decay of the meters like with real Mackie hardware. Thus we
@ -195,7 +195,7 @@ G#7 D7
# does *not* do that automatically.) NB: We use CC0 as a macro here,
# hopefully this won't occur as real feedback?
?CC0[1] $CP{0} $CP{16} $CP{32} $CP{48} $CP{64} $CP{80} $CP{96} $CP{112}
CC0[1] $CP{0} $CP{16} $CP{32} $CP{48} $CP{64} $CP{80} $CP{96} $CP{112}
# This decodes the least significant digit in the time display (CC69) to count
# off time on the 4 bottommost scene launch buttons. Note that the digits are
@ -203,7 +203,7 @@ G#7 D7
# lists below to skip over all the non-digit characters at the beginning of
# the ASCII table.
?CC69[] F7{0:49,1,0} E7{0:50,1,0} Eb7{0:51,1,0} D7{0:52,1,0}
CC69[] F7{0:49,1,0} E7{0:50,1,0} Eb7{0:51,1,0} D7{0:52,1,0}
# no feedback for faders (faders aren't motorized)
@ -211,42 +211,42 @@ G#7 D7
# mode, so that the (shifted) bank/channel left/right keys work as expected.
# rec: color = red (vel. 3)
?C0 C0[3]
?C#0 C#0[3]
?D0 D0[3]
?D#0 D#0[3]
?E0 E0[3]
?F0 F0[3]
?F#0 F#0[3]
?G0 G0[3]
C0 C0[3]
C#0 C#0[3]
D0 D0[3]
D#0 D#0[3]
E0 E0[3]
F0 F0[3]
F#0 F#0[3]
G0 G0[3]
# solo: color = green (vel. 1)
?G#0 G#0[1]
?A0 A0[1]
?A#0 A#0[1]
?B0 B0[1]
?C1 C1[1]
?C#1 C#1[1]
?D1 D1[1]
?D#1 D#1[1]
G#0 G#0[1]
A0 A0[1]
A#0 A#0[1]
B0 B0[1]
C1 C1[1]
C#1 C#1[1]
D1 D1[1]
D#1 D#1[1]
# mute: color = yellow (vel. 5)
?E1 E1[5]
?F1 F1[5]
?F#1 F#1[5]
?G1 G1[5]
?G#1 G#1[5]
?A1 A1[5]
?A#1 A#1[5]
?B1 B1[5]
E1 E1[5]
F1 F1[5]
F#1 F#1[5]
G1 G1[5]
G#1 G#1[5]
A1 A1[5]
A#1 A#1[5]
B1 B1[5]
# select (will light up in red)
# NOTE: Ardour apparently doesn't update these when changing banks.
?C2 E5
?C#2 F5
?D2 F#5
?D#2 G5
?E2 G#5
?F2 A5
?F#2 A#5
?G2 B5
C2 E5
C#2 F5
D2 F#5
D#2 G5
E2 G#5
F2 A5
F#2 A#5
G2 B5

View File

@ -24,7 +24,7 @@ SYSTEM_PASSTHROUGH # pass through MCP feedback
# We use the Mk3's dedicated SHIFT button as our primary shift key, to provide
# alternative functions to some of the buttons and the faders.
?F2 SHIFT ^F2 RELEASE SHIFT ^F2
F2 SHIFT ^F2 RELEASE SHIFT ^F2
# transport (assigned to the transport section on the bottom left)
F#5 A7 # Stop
@ -82,9 +82,9 @@ C2 E8 # Zoom
# buttons as additional shift keys. These are "Caps Lock"-style keys which
# stay on until pressed again.
?F#4 SHIFT2 ^F#4
?G4 SHIFT3 ^G4
?G#4 SHIFT4 ^G#4
F#4 SHIFT2 ^F#4
G4 SHIFT3 ^G4
G#4 SHIFT4 ^G#4
# top row, unshifted: track select
G6 C2
@ -173,7 +173,7 @@ C3 PC6-10
C#3 PC7-10
# big encoder assigned to MCP jog wheel
?CC0~ CC60~
CC0~ CC60~
# encoders mapped to MCP channel faders
# (MC uses pitch bends here, use 129 as step size to get full range)
@ -229,8 +229,8 @@ C#7 D#5
F4 C#6
# channel left/right keys
?C4 E6
?C#4 A5
C4 E6
C#4 A5
# row above grid (track/pan/send/instr)
E3 G#3
@ -250,14 +250,14 @@ E8 C#2[4] D2[4] D#2[4] E2[4]
# select
# NOTE: Ardour apparently doesn't update these when changing banks.
?C2 G6
?C#2 G#6
?D2 A6
?D#2 A#6
?E2 B6
?F2 C7
?F#2 C#7
?G2 D7
C2 G6
C#2 G#6
D2 A6
D#2 A#6
E2 B6
F2 C7
F#2 C#7
G2 D7
# no feedback for encoders, only touchstrip
PB[128]{0}-9 CC9'
@ -267,35 +267,35 @@ PB[128]{0}-9 CC9'
# rec/solo/mute
?C0[] C0
?C#0[] C#0
?D0[] D0
?D#0[] D#0
?E0[] E0
?F0[] F0
?F#0[] F#0
?G0[] G0
C0[] C0
C#0[] C#0
D0[] D0
D#0[] D#0
E0[] E0
F0[] F0
F#0[] F#0
G0[] G0
?G#0[] G#0
?A0[] A0
?A#0[] A#0
?B0[] B0
?C1[] C1
?C#1[] C#1
?D1[] D1
?D#1[] D#1
G#0[] G#0
A0[] A0
A#0[] A#0
B0[] B0
C1[] C1
C#1[] C#1
D1[] D1
D#1[] D#1
?E1[] E1
?F1[] F1
?F#1[] F#1
?G1[] G1
?G#1[] G#1
?A1[] A1
?A#1[] A#1
?B1[] B1
E1[] E1
F1[] F1
F#1[] F#1
G1[] G1
G#1[] G#1
A1[] A1
A#1[] A#1
B1[] B1
# meter values
?CP[] CP
CP[] CP
# NOTE: We only report the values as we receive them here, there's no
# automatic decay of the meters like with real Mackie hardware. Thus we
@ -303,16 +303,16 @@ PB[128]{0}-9 CC9'
# does *not* do that automatically.) NB: We use CC0 as a macro here,
# hopefully this won't occur as real feedback?
?CC0[1] CP{0} CP{16} CP{32} CP{48} CP{64} CP{80} CP{96} CP{112}
CC0[1] CP{0} CP{16} CP{32} CP{48} CP{64} CP{80} CP{96} CP{112}
# timecode
?CC64[] CC64
?CC65[] CC65
?CC66[] CC66
?CC67[] CC67
?CC68[] CC68
?CC69[] CC69
?CC70[] CC70
?CC71[] CC71
?CC72[] CC72
?CC73[] CC73
CC64[] CC64
CC65[] CC65
CC66[] CC66
CC67[] CC67
CC68[] CC68
CC69[] CC69
CC70[] CC70
CC71[] CC71
CC72[] CC72
CC73[] CC73

View File

@ -1377,14 +1377,14 @@ start_translation(translation *tr, char *which_key)
int k = 0, offs = 0;
if (isdigit(which_key[0]) && which_key[1] == '^') {
offs = 2; k = which_key[0]-'0';
if (k<1 || k>N_SHIFTS) {
if (k<0 || k>N_SHIFTS) {
fprintf(stderr, "invalid shift key: [%s]%s\n", current_translation, which_key);
return 1;
}
} else if (*which_key == '^') {
offs = k = 1;
} else if ((anyshift = *which_key == '?')) {
offs = 1; k = 0;
} else {
anyshift = 1;
}
if (parse_midi(which_key+offs, buf, 1, 0, &status, &data, &step, &n_steps, &steps, &incr, &dir, &mod, &swap)) {
int chan = status & 0x0f;