Skip to content

Commit 655d22f

Browse files
committed
Added launchpad program/bank select, fixed held notes on octave+/-
1 parent db4613f commit 655d22f

File tree

2 files changed

+46
-3
lines changed

2 files changed

+46
-3
lines changed

src/core.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,31 @@ def rotate_mode(self, notes: str, mode: int):
6060
mode -= 1
6161
return notes
6262

63+
def prev_bank(self):
64+
return self.next_bank(-1)
65+
66+
def next_bank(self, ofs=1):
67+
if not self.midi_out:
68+
return False
69+
self.bank = max(0, min(127, self.bank + ofs))
70+
msb = (self.bank >> 7) & 0x7f
71+
lsb = self.bank & 0x7f
72+
self.midi_out.send_cc(0, 0, msb)
73+
self.midi_out.send_cc(0, 32, lsb)
74+
print('Bank Select: ', self.bank)
75+
return True
76+
77+
def prev_program(self):
78+
return self.next_program(-1)
79+
80+
def next_program(self, ofs=1):
81+
if not self.midi_out:
82+
return False
83+
self.program = max(0, min(127, self.program + ofs))
84+
self.midi_write(self.midi_out, [0xc0, self.program], 0)
85+
print('Program Change:', self.program)
86+
return True
87+
6388
def prev_mode(self, ofs=1):
6489
self.next_mode(-ofs)
6590

@@ -1110,6 +1135,9 @@ def cb_launchpad_in(self, lp, event, timestamp=0):
11101135
self.note_off([128, note, event[2]], timestamp, width=8, transpose=lp.transpose, octave=lp.get_octave(), force_channel=self.options.launchpad_channel)
11111136
else:
11121137
self.macro(x, 8 - y - 1, False)
1138+
else:
1139+
# Launchpad X buttons
1140+
lp.button(x, 8 - y - 1)
11131141
else: # note on
11141142
x = event[0]
11151143
y = 8 - event[1]
@@ -1120,9 +1148,6 @@ def cb_launchpad_in(self, lp, event, timestamp=0):
11201148
self.note_on([144, note, event[2]], timestamp, width=8, transpose=lp.transpose, octave=lp.get_octave(), force_channel=self.options.launchpad_channel)
11211149
else:
11221150
self.macro(x, 8 - y - 1, True)
1123-
else:
1124-
# Launchpad X buttons
1125-
lp.button(x, 8 - y - 1)
11261151

11271152
# uses raw events (Launchpad X)
11281153
# def cb_launchpad_in(self, event, timestamp=0):
@@ -1470,6 +1495,9 @@ def __init__(self):
14701495
self.scale_notes = self.scale_db[self.scale_index]['notes']
14711496
self.scale_root = 0
14721497
self.tonic = 0
1498+
1499+
self.program = 0
1500+
self.bank = 0
14731501

14741502
self.articulation = Articulation(self)
14751503

src/launchpad.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ def button(self, x, y):
1717
if x == 0:
1818
self.octave += 1
1919
self.core.clear_marks(use_lights=False)
20+
self.core.send_all_notes_off()
2021
elif x == 1:
2122
self.octave -= 1
2223
self.core.clear_marks(use_lights=False)
24+
self.core.send_all_notes_off()
2325
elif x == 2:
2426
self.core.move_board(-1)
2527
# self.pos.x -= 1
@@ -38,6 +40,15 @@ def button(self, x, y):
3840
self.core.next_mode()
3941
elif y == 3:
4042
self.core.prev_mode()
43+
elif y == 4:
44+
self.core.next_bank()
45+
elif y == 5:
46+
self.core.prev_bank()
47+
elif y == 6:
48+
self.core.next_program()
49+
elif y == 7:
50+
self.core.prev_program()
51+
4152

4253
def set_lights(self):
4354
if self.mode == "lpx":
@@ -52,6 +63,10 @@ def set_lights(self):
5263
self.out.LedCtrlXY(8, 2, 63, 63, 0)
5364
self.out.LedCtrlXY(8, 3, 0, 63, 63)
5465
self.out.LedCtrlXY(8, 4, 0, 63, 63)
66+
self.out.LedCtrlXY(8, 5, 63, 24, 63)
67+
self.out.LedCtrlXY(8, 6, 63, 24, 63)
68+
self.out.LedCtrlXY(8, 7, 24, 63, 63)
69+
self.out.LedCtrlXY(8, 8, 24, 63, 63)
5570

5671

5772

0 commit comments

Comments
 (0)