|
|
|
@ -51,6 +51,9 @@ |
|
|
|
|
#endif |
|
|
|
|
#define _LCDML_DISP_cfg_scrollbar 1 // enable a scrollbar
|
|
|
|
|
|
|
|
|
|
extern PeriodicTimer timer1; |
|
|
|
|
extern void sequencer(void); |
|
|
|
|
|
|
|
|
|
extern config_t configuration; |
|
|
|
|
extern void set_volume(uint8_t v, uint8_t m); |
|
|
|
|
extern bool load_sysex(uint8_t b, uint8_t v); |
|
|
|
@ -65,6 +68,7 @@ extern float pseudo_log_curve(float value); |
|
|
|
|
extern uint8_t selected_instance_id; |
|
|
|
|
extern char receive_bank_filename[FILENAME_LEN]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if NUM_DRUMS > 0 |
|
|
|
|
#include "drums.h" |
|
|
|
|
extern drum_config_t drum_config[NUM_DRUMSET_CONFIG]; |
|
|
|
@ -82,13 +86,20 @@ extern bool seq_recording; |
|
|
|
|
uint8_t seq_active_function = 99; |
|
|
|
|
uint8_t activesample; |
|
|
|
|
extern uint8_t seq_active_track; |
|
|
|
|
extern elapsedMillis seq_millis_timer; |
|
|
|
|
extern uint8_t seq_menu; |
|
|
|
|
extern uint8_t seq_temp_select_menu; |
|
|
|
|
extern uint8_t seq_temp_active_menu; |
|
|
|
|
extern uint8_t seq_chain_active_chainstep; //for editor
|
|
|
|
|
extern uint8_t seq_chain_active_step; |
|
|
|
|
extern int seq_transpose; |
|
|
|
|
extern uint8_t arp_step; |
|
|
|
|
extern uint8_t arp_note; |
|
|
|
|
extern uint8_t arp_chord; |
|
|
|
|
extern uint8_t arp_octave; |
|
|
|
|
extern uint8_t arp_oct_usersetting; |
|
|
|
|
extern uint8_t arp_style; |
|
|
|
|
extern uint8_t arp_speed; |
|
|
|
|
extern char arp_style_names[4][3]; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef DISPLAY_LCD_SPI |
|
|
|
@ -273,6 +284,7 @@ void UI_func_seq_live_transpose_oct(uint8_t param); |
|
|
|
|
void UI_func_seq_lenght(uint8_t param); |
|
|
|
|
void UI_func_seq_tempo(uint8_t param); |
|
|
|
|
void UI_func_seq_pat_chain(uint8_t param); |
|
|
|
|
void UI_func_arpeggio(uint8_t param); |
|
|
|
|
void UI_func_seq_track_setup(uint8_t param); |
|
|
|
|
void UI_func_seq_display_style(uint8_t param); |
|
|
|
|
void UI_func_seq_pattern_load(uint8_t param); |
|
|
|
@ -3915,14 +3927,9 @@ void UI_func_seq_display_style(uint8_t param) |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print("Seq. Disp. Style"); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
lcd.print("Seq."); |
|
|
|
|
lcd.print("Pat."); |
|
|
|
|
lcd.setCursor(8, 1); |
|
|
|
|
lcd.print("="); |
|
|
|
|
lcd.setCursor(11, 1); |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) |
|
|
|
|
lcd.print("Drum"); |
|
|
|
|
else |
|
|
|
|
lcd.print("Inst"); |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
@ -3943,21 +3950,17 @@ void UI_func_seq_display_style(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
{ |
|
|
|
|
seq_content_type[seq_active_track] = constrain(seq_content_type[seq_active_track] + ENCODER[ENC_R].speed(), 0, 1); |
|
|
|
|
seq_content_type[seq_active_track] = constrain(seq_content_type[seq_active_track] + ENCODER[ENC_R].speed(), 0, 2); |
|
|
|
|
} |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
{ |
|
|
|
|
seq_content_type[seq_active_track] = constrain(seq_content_type[seq_active_track] - ENCODER[ENC_R].speed(), 0, 1); |
|
|
|
|
seq_content_type[seq_active_track] = constrain(seq_content_type[seq_active_track] - ENCODER[ENC_R].speed(), 0, 2); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (LCDML.BT_checkEnter()) |
|
|
|
|
{ |
|
|
|
|
if (menu_select_toggle) { |
|
|
|
|
menu_select_toggle = false; |
|
|
|
|
} else |
|
|
|
|
{ menu_select_toggle = true; |
|
|
|
|
} |
|
|
|
|
menu_select_toggle = !menu_select_toggle; |
|
|
|
|
} |
|
|
|
|
if (menu_select_toggle == false) { |
|
|
|
|
lcd.setCursor(10, 1); |
|
|
|
@ -3968,10 +3971,6 @@ void UI_func_seq_display_style(uint8_t param) |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.print(seq_active_track); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
lcd.setCursor(11, 1); |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) lcd.print("Drum"); |
|
|
|
|
else |
|
|
|
|
lcd.print("Inst"); |
|
|
|
|
} else { |
|
|
|
|
lcd.setCursor(4, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
@ -3979,12 +3978,16 @@ void UI_func_seq_display_style(uint8_t param) |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor(10, 1); |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.setCursor(15, 1); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
} |
|
|
|
|
lcd.setCursor(11, 1); |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) |
|
|
|
|
lcd.print("Drum"); |
|
|
|
|
else |
|
|
|
|
else if (seq_content_type[seq_active_track] == 1) |
|
|
|
|
lcd.print("Inst"); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
lcd.print("Chrd"); |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
@ -4068,7 +4071,7 @@ void UI_func_seq_lenght(uint8_t param) |
|
|
|
|
|
|
|
|
|
void UI_func_seq_tempo(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
char tmp[5]; |
|
|
|
|
char tmp[7]; |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
@ -4084,19 +4087,21 @@ void UI_func_seq_tempo(uint8_t param) |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) || (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_bpm = constrain(seq_bpm + ENCODER[ENC_R].speed(), 60, 180); |
|
|
|
|
seq_bpm = constrain(seq_bpm + ENCODER[ENC_R].speed(), 50, 190); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_bpm = constrain(seq_bpm - ENCODER[ENC_R].speed(), 60, 180); |
|
|
|
|
seq_bpm = constrain(seq_bpm - ENCODER[ENC_R].speed(), 50, 190); |
|
|
|
|
} |
|
|
|
|
seq_tempo_ms = 60000 / seq_bpm / 4; |
|
|
|
|
// seq_tempo_ms = 60000 / seq_bpm / 4;
|
|
|
|
|
seq_tempo_ms = 60000000 / seq_bpm / 4; |
|
|
|
|
|
|
|
|
|
sprintf(tmp, "[%3d]", seq_bpm); |
|
|
|
|
lcd.setCursor(0, 1); |
|
|
|
|
sprintf(tmp, "[%3d]", seq_bpm); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(9, 1); |
|
|
|
|
sprintf(tmp, "[%3d]", seq_tempo_ms); |
|
|
|
|
lcd.setCursor(11, 1); |
|
|
|
|
sprintf(tmp, "%3d", seq_tempo_ms / 1000); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
//timer1.stop();
|
|
|
|
|
timer1.begin(sequencer, seq_tempo_ms / 2); |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
@ -4152,7 +4157,7 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] - 1, 0, 127); |
|
|
|
|
} |
|
|
|
|
} else if (seq_active_function == 1 && seq_content_type[seq_active_track] > 1 ) { |
|
|
|
|
} else if (seq_active_function == 1 && seq_content_type[seq_active_track] > 1 ) { //is in Chord or Arp Mode
|
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
@ -4283,6 +4288,21 @@ void seq_refresh_display_play_status() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void arp_refresh_display_play_status() |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(12, 0); |
|
|
|
|
if (seq_running == false ) |
|
|
|
|
{ |
|
|
|
|
lcd.print("PLY"); |
|
|
|
|
} else if (seq_running == true ) |
|
|
|
|
{ |
|
|
|
|
seq_note_in = 0; |
|
|
|
|
lcd.print("STP"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UI_func_sequencer(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
@ -4507,6 +4527,7 @@ void UI_func_sequencer(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
seq_running = true; |
|
|
|
|
lcd.print("REC"); |
|
|
|
|
timer1.start(); |
|
|
|
|
} else if (seq_running == true && seq_recording == false) |
|
|
|
|
{ |
|
|
|
|
seq_running = true; |
|
|
|
@ -4521,6 +4542,7 @@ void UI_func_sequencer(uint8_t param) |
|
|
|
|
seq_step = 0; |
|
|
|
|
seq_chain_active_step = 0; |
|
|
|
|
lcd.print("PLY"); |
|
|
|
|
timer1.stop(); |
|
|
|
|
MicroDexed[0]->panic(); |
|
|
|
|
} |
|
|
|
|
} else if ( seq_menu == 2) |
|
|
|
@ -4759,9 +4781,187 @@ void UI_func_sequencer(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_seq_pat_chain(uint8_t param) |
|
|
|
|
void UI_func_arpeggio(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
seq_temp_active_menu = 0; |
|
|
|
|
lcd.setCursor( 0, 0); |
|
|
|
|
lcd.print("Oct"); |
|
|
|
|
lcd.setCursor( 0, 1); |
|
|
|
|
lcd.print("Style"); |
|
|
|
|
lcd.setCursor( 7, 0); |
|
|
|
|
lcd.print("Maj"); |
|
|
|
|
lcd.setCursor( 11, 1); |
|
|
|
|
lcd.print("1/16"); |
|
|
|
|
lcd.setCursor( 7, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
arp_refresh_display_play_status(); |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) || (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort())) |
|
|
|
|
{ |
|
|
|
|
if (seq_temp_active_menu == 0) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_temp_select_menu = constrain(seq_temp_select_menu + ENCODER[ENC_R].speed(), 0, 3); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_temp_select_menu = constrain(seq_temp_select_menu - ENCODER[ENC_R].speed(), 0, 3); |
|
|
|
|
} else if (seq_temp_active_menu == 1) // Octave setting
|
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
arp_oct_usersetting = constrain(arp_oct_usersetting + ENCODER[ENC_R].speed(), 0, 3); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
arp_oct_usersetting = constrain(arp_oct_usersetting - ENCODER[ENC_R].speed(), 0, 3); |
|
|
|
|
} |
|
|
|
|
else if (seq_temp_active_menu == 2) // Style setting
|
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
arp_style = constrain(arp_style + ENCODER[ENC_R].speed(), 0, 3); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
arp_style = constrain(arp_style - ENCODER[ENC_R].speed(), 0, 3); |
|
|
|
|
} |
|
|
|
|
else if (seq_temp_active_menu == 3) // Arp Speed setting
|
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
arp_speed = constrain(arp_speed + ENCODER[ENC_R].speed(), 0, 1); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
arp_speed = constrain(arp_speed - ENCODER[ENC_R].speed(), 0, 1); |
|
|
|
|
} |
|
|
|
|
if (LCDML.BT_checkEnter()) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
|
|
|
{ |
|
|
|
|
if ( seq_temp_select_menu == 0 && seq_temp_active_menu == 0 ) |
|
|
|
|
{ |
|
|
|
|
seq_temp_active_menu = 1; |
|
|
|
|
} |
|
|
|
|
else if ( seq_temp_select_menu == 0 && seq_temp_active_menu == 1 ) |
|
|
|
|
{ |
|
|
|
|
seq_temp_active_menu = 0; |
|
|
|
|
} |
|
|
|
|
if ( seq_temp_select_menu == 1 && seq_temp_active_menu == 0 ) |
|
|
|
|
{ |
|
|
|
|
seq_temp_active_menu = 2; |
|
|
|
|
} |
|
|
|
|
else if ( seq_temp_select_menu == 1 && seq_temp_active_menu == 2 ) |
|
|
|
|
{ |
|
|
|
|
seq_temp_active_menu = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//else if ( seq_temp_select_menu == 2 && seq_temp_active_menu == 0 )
|
|
|
|
|
else if ( seq_temp_select_menu == 2 ) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
if (seq_running) { |
|
|
|
|
seq_running = !seq_running; |
|
|
|
|
timer1.stop(); |
|
|
|
|
MicroDexed[0]->panic(); |
|
|
|
|
arp_refresh_display_play_status(); |
|
|
|
|
seq_step = 0; |
|
|
|
|
arp_octave = 0; |
|
|
|
|
arp_step = 0; |
|
|
|
|
seq_chain_active_step = 0; |
|
|
|
|
} else |
|
|
|
|
{ |
|
|
|
|
seq_running = !seq_running; |
|
|
|
|
arp_refresh_display_play_status(); |
|
|
|
|
timer1.start(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if ( seq_temp_select_menu == 3 && seq_temp_active_menu == 0 ) |
|
|
|
|
{ |
|
|
|
|
seq_temp_active_menu = 3; |
|
|
|
|
} |
|
|
|
|
else if ( seq_temp_select_menu == 3 && seq_temp_active_menu == 3 ) |
|
|
|
|
{ |
|
|
|
|
seq_temp_active_menu = 0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
lcd.setCursor( 4, 0); |
|
|
|
|
lcd.print(arp_oct_usersetting); |
|
|
|
|
lcd.setCursor( 6, 1); |
|
|
|
|
lcd.print( arp_style_names[arp_style][0] ); |
|
|
|
|
lcd.print( arp_style_names[arp_style][1] ); |
|
|
|
|
lcd.print( arp_style_names[arp_style][2] ); |
|
|
|
|
lcd.setCursor( 11, 1); |
|
|
|
|
if (arp_speed == 0)lcd.print("1/16"); else if (arp_speed == 1)lcd.print("1/8 "); |
|
|
|
|
|
|
|
|
|
if (seq_temp_select_menu == 0) { |
|
|
|
|
lcd.setCursor( 3, 0); |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.setCursor( 5, 0); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
lcd.setCursor( 11, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 15, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 5, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 9, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 10, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 15, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (seq_temp_select_menu == 1) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor( 3, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 5, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 11, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 15, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 5, 1); |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.setCursor( 9, 1); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
} |
|
|
|
|
else if (seq_temp_select_menu == 2) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor( 5, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 9, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 10, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 15, 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 11, 0); |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.setCursor( 15, 0); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
} |
|
|
|
|
else if (seq_temp_select_menu == 3) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor( 11, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 15, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 3, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 5, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor( 10, 1); |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.setCursor( 15, 1); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_seq_pat_chain(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
// setup function
|
|
|
|
@ -4793,7 +4993,6 @@ void UI_func_seq_pat_chain(uint8_t param) |
|
|
|
|
lcd.setCursor(8 , 1); |
|
|
|
|
lcd.print( seq_patternchain[seq_chain_active_chainstep][3]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
|
if (seq_temp_active_menu == 99) { |
|
|
|
@ -4951,7 +5150,6 @@ void UI_func_seq_pat_chain(uint8_t param) |
|
|
|
|
|
|
|
|
|
void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
// setup function
|
|
|
|
@ -4965,13 +5163,13 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
lcd.setCursor(9 , 1); |
|
|
|
|
lcd.print("T4"); |
|
|
|
|
lcd.setCursor(3 , 0); |
|
|
|
|
if (seq_track_type[0] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[0] == 0 ) lcd.print("Drm"); else if (seq_track_type[0] == 1 ) lcd.print("Ins"); else if (seq_track_type[0] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
lcd.setCursor(3 , 1); |
|
|
|
|
if (seq_track_type[1] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[1] == 0 ) lcd.print("Drm"); else if (seq_track_type[1] == 1 ) lcd.print("Ins"); else if (seq_track_type[1] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
lcd.setCursor(12 , 0); |
|
|
|
|
if (seq_track_type[2] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[2] == 0 ) lcd.print("Drm"); else if (seq_track_type[2] == 1 ) lcd.print("Ins"); else if (seq_track_type[2] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
lcd.setCursor(12 , 1); |
|
|
|
|
if (seq_track_type[3] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[3] == 0 ) lcd.print("Drm"); else if (seq_track_type[3] == 1 ) lcd.print("Ins"); else if (seq_track_type[3] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
@ -4987,9 +5185,9 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_track_type[seq_temp_active_menu] = constrain(seq_track_type[seq_temp_active_menu] + 1, 0, 1); |
|
|
|
|
seq_track_type[seq_temp_active_menu] = constrain(seq_track_type[seq_temp_active_menu] + 1, 0, 3); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_track_type[seq_temp_active_menu] = constrain(seq_track_type[seq_temp_active_menu] - 1, 0, 1); |
|
|
|
|
seq_track_type[seq_temp_active_menu] = constrain(seq_track_type[seq_temp_active_menu] - 1, 0, 3); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (LCDML.BT_checkEnter()) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
|
|
@ -5012,7 +5210,7 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
lcd.setCursor(6 , 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor(3 , 0); |
|
|
|
|
if (seq_track_type[0] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[0] == 0 ) lcd.print("Drm"); else if (seq_track_type[0] == 1 ) lcd.print("Ins"); else if (seq_track_type[0] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
} else if (seq_temp_select_menu == 1) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(2 , 0); |
|
|
|
@ -5028,7 +5226,7 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
lcd.setCursor(15 , 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor(3 , 1); |
|
|
|
|
if (seq_track_type[1] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[1] == 0 ) lcd.print("Drm"); else if (seq_track_type[1] == 1 ) lcd.print("Ins"); else if (seq_track_type[1] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
} else if (seq_temp_select_menu == 2) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(2 , 1); |
|
|
|
@ -5044,7 +5242,7 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
lcd.setCursor(15 , 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.setCursor(12 , 0); |
|
|
|
|
if (seq_track_type[2] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[2] == 0 ) lcd.print("Drm"); else if (seq_track_type[2] == 1 ) lcd.print("Ins"); else if (seq_track_type[2] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
} else if (seq_temp_select_menu == 3) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(11 , 0); |
|
|
|
@ -5056,7 +5254,7 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
lcd.setCursor(15 , 1); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
lcd.setCursor(12 , 1); |
|
|
|
|
if (seq_track_type[3] == 0 ) lcd.print("Drm"); else lcd.print("Ins"); |
|
|
|
|
if (seq_track_type[3] == 0 ) lcd.print("Drm"); else if (seq_track_type[3] == 1 ) lcd.print("Ins"); else if (seq_track_type[3] == 2 )lcd.print("Chd"); else lcd.print("Arp"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
@ -5065,7 +5263,6 @@ void UI_func_seq_track_setup(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UI_func_seq_pattern_load(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
static uint8_t mode; |
|
|
|
|