@@ -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
0 commit comments