|
|
|
@ -314,6 +314,7 @@ void UI_func_set_sequence_name(uint8_t param); |
|
|
|
|
void UI_func_volume(uint8_t param); |
|
|
|
|
void UI_func_smart_filter(uint8_t param); |
|
|
|
|
void UI_func_drum_midi_channel(uint8_t param); |
|
|
|
|
void UI_func_drum_monitor(uint8_t param); |
|
|
|
|
void UI_func_load_performance(uint8_t param); |
|
|
|
|
void UI_func_save_performance(uint8_t param); |
|
|
|
|
void UI_func_load_voiceconfig(uint8_t param); |
|
|
|
@ -4521,7 +4522,8 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
|
if (seq_active_function == 99) { |
|
|
|
|
if (seq_active_function == 99) |
|
|
|
|
{ |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
@ -4530,7 +4532,8 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
seq_menu = constrain(seq_menu - 1, 0, 16); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if (seq_active_function == 0) { |
|
|
|
|
else if (seq_active_function == 0) |
|
|
|
|
{ |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
@ -4539,21 +4542,41 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
seq_active_track = constrain(seq_active_track - 1, 0, 9); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if (seq_active_function == 1 && seq_content_type[seq_active_track] < 2 ) { //if is Drum or normal Instrument Track
|
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
if ( seq_data[seq_active_track][seq_menu - 1] > 0 ) |
|
|
|
|
{ |
|
|
|
|
if (seq_vel[seq_active_track][seq_menu - 1] < 210) //it is a normal sample
|
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] + 1, 0, 127); |
|
|
|
|
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); |
|
|
|
|
if (seq_active_function == 1 && seq_content_type[seq_active_track] < 2 ) |
|
|
|
|
{ //if is Drum or normal Instrument Track
|
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] + 1, 0, 127); |
|
|
|
|
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 ) |
|
|
|
|
{ //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()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] + 1, 200, 205); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] - 1, 200, 205); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} 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())) |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] + 1, 200, 205); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] - 1, 200, 205); |
|
|
|
|
//is in pitched Sample Mode
|
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] + 1, 210, 214); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 1] = constrain(seq_vel[seq_active_track][seq_menu - 1] - 1, 210, 214); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (LCDML.BT_checkEnter()) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
|
|
@ -4573,19 +4596,43 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
seq_active_function = 99; |
|
|
|
|
} |
|
|
|
|
//button check end <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
|
|
|
|
|
|
|
|
if ( seq_content_type[seq_active_track] > 1 && seq_vel[seq_active_track][seq_menu - 1] < 200) seq_vel[seq_active_track][seq_menu - 1] = 200; |
|
|
|
|
|
|
|
|
|
if (seq_menu > 0 && seq_content_type[seq_active_track] < 2) { |
|
|
|
|
if (seq_active_function == 0) { |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print("Vel:"); |
|
|
|
|
sprintf(tmp, "%03d", seq_vel[seq_active_track][seq_menu - 1]); |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) |
|
|
|
|
lcd.print("Drum Track "); |
|
|
|
|
else if (seq_content_type[seq_active_track] == 1) |
|
|
|
|
lcd.print("Instr. Track "); |
|
|
|
|
else |
|
|
|
|
lcd.print("Chord Track "); |
|
|
|
|
} |
|
|
|
|
if (seq_menu > 0 && seq_content_type[seq_active_track] == 0) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
if (seq_vel[seq_active_track][seq_menu - 1] < 210 && seq_vel[seq_active_track][seq_menu - 1] > 0) //it is a normal sample
|
|
|
|
|
{ |
|
|
|
|
lcd.print("Vel:"); |
|
|
|
|
sprintf(tmp, "%03d", seq_vel[seq_active_track][seq_menu - 1]); |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ // else it is a live-pitched sample
|
|
|
|
|
if (seq_vel[seq_active_track][seq_menu - 1] > 0) { |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print("Smp:["); |
|
|
|
|
lcd.setCursor(12, 0); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
lcd.show(0, 5, 7, basename(drum_config[seq_vel[seq_active_track][seq_menu - 1] - 210].name)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (seq_menu == 0) { |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
lcd.print("--- --- "); |
|
|
|
|
if (seq_active_function != 0) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
} |
|
|
|
|
lcd.setCursor(13, 0); |
|
|
|
|
lcd.print("["); |
|
|
|
|
lcd.print(seq_active_track); |
|
|
|
@ -4601,10 +4648,14 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
lcd.write(219); // cursor symbol
|
|
|
|
|
lcd.setCursor(1, 1); |
|
|
|
|
lcd.print(seq_find_shortname(1)[0] ); |
|
|
|
|
sprintf(tmp, "%03d", seq_vel[seq_active_track][seq_menu - 1]); |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} else if (seq_menu > 1) { |
|
|
|
|
if (seq_vel[seq_active_track][seq_menu - 1] < 210 && seq_content_type[seq_active_track] < 2) //it is a normal sample
|
|
|
|
|
{ |
|
|
|
|
sprintf(tmp, "%03d", seq_vel[seq_active_track][seq_menu - 1]); |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
} else if (seq_menu > 1) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(seq_menu - 1, 1); |
|
|
|
|
lcd.write(219); // cursor symbol
|
|
|
|
|
lcd.setCursor(seq_menu - 2, 1); |
|
|
|
@ -4616,32 +4667,70 @@ void UI_func_seq_vel_editor(uint8_t param) |
|
|
|
|
} |
|
|
|
|
if (seq_menu > 0) { |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
if (seq_data[seq_active_track][seq_menu - 1] > 0) { |
|
|
|
|
|
|
|
|
|
if (seq_data[seq_active_track][seq_menu - 1] > 0) |
|
|
|
|
{ |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) //is Drumtrack
|
|
|
|
|
{ |
|
|
|
|
lcd.show(0, 8, 5, seq_find_drum_name_from_note( seq_data[seq_active_track][seq_menu - 1]) ); |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
if (seq_vel[seq_active_track][seq_menu - 1] < 210) //it is a normal sample
|
|
|
|
|
{ |
|
|
|
|
lcd.print("Vel:"); |
|
|
|
|
sprintf(tmp, "%03d", seq_vel[seq_active_track][seq_menu - 1]); |
|
|
|
|
lcd.setCursor(7, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
lcd.show(0, 8, 5, seq_find_drum_name_from_note( seq_data[seq_active_track][seq_menu - 1]) ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ // else it is a live-pitched sample
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print("Smp:["); |
|
|
|
|
lcd.setCursor(12, 0); |
|
|
|
|
lcd.print("]"); |
|
|
|
|
lcd.setCursor(1, 0); |
|
|
|
|
lcd.show(0, 5, 7, basename(drum_config[seq_vel[seq_active_track][seq_menu - 1] - 210].name)); |
|
|
|
|
} |
|
|
|
|
} else |
|
|
|
|
{ lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(noteNames[seq_data[seq_active_track][seq_menu - 1] % 12 ][0] ); |
|
|
|
|
if (noteNames[seq_data[seq_active_track][seq_menu - 1] % 12 ][1] != '\0' ) { |
|
|
|
|
lcd.print(noteNames[seq_data[seq_active_track][seq_menu - 1] % 12 ][1] ); |
|
|
|
|
{ |
|
|
|
|
if ( seq_data[seq_active_track][seq_menu - 1] != 130 ) //note not latched
|
|
|
|
|
{ |
|
|
|
|
if (seq_content_type[seq_active_track] < 2) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print("Vel:"); |
|
|
|
|
sprintf(tmp, "%03d", seq_vel[seq_active_track][seq_menu - 1]); |
|
|
|
|
lcd.setCursor(4, 0); |
|
|
|
|
lcd.print(tmp); |
|
|
|
|
} |
|
|
|
|
lcd.setCursor(8, 0); |
|
|
|
|
lcd.print(noteNames[seq_data[seq_active_track][seq_menu - 1] % 12 ][0] ); |
|
|
|
|
if (noteNames[seq_data[seq_active_track][seq_menu - 1] % 12 ][1] != '\0' ) { |
|
|
|
|
lcd.print(noteNames[seq_data[seq_active_track][seq_menu - 1] % 12 ][1] ); |
|
|
|
|
} |
|
|
|
|
lcd.print( (seq_data[seq_active_track][seq_menu - 1] / 12) - 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
} |
|
|
|
|
lcd.print( (seq_data[seq_active_track][seq_menu - 1] / 12) - 1); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
if (seq_content_type[seq_active_track] > 1) { |
|
|
|
|
lcd.setCursor(3, 0); |
|
|
|
|
else |
|
|
|
|
{ //note is latched
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print("latched note "); |
|
|
|
|
} |
|
|
|
|
if (seq_content_type[seq_active_track] > 1) |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
if (seq_vel[seq_active_track][seq_menu - 1] == 200) lcd.print("Major" ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 201) lcd.print("Minor" ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 202) lcd.print("Seven" ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 203) lcd.print("Aug " ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 204) lcd.print("Dim " ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 203) lcd.print("Aug . " ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 204) lcd.print("Dim . " ); |
|
|
|
|
else if (seq_vel[seq_active_track][seq_menu - 1] == 205) lcd.print("Maj7 " ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
lcd.print(" "); |
|
|
|
|
{ |
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
@ -4714,6 +4803,25 @@ void arp_refresh_display_play_status() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_drum_monitor(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
|
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
|
lcd.print(F("Drum Status ")); |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_loop()) // ****** LOOP *********
|
|
|
|
|
{ |
|
|
|
|
; |
|
|
|
|
} |
|
|
|
|
if (LCDML.FUNC_close()) // ****** STABLE END *********
|
|
|
|
|
{ |
|
|
|
|
encoderDir[ENC_R].reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void UI_func_seq_pattern_editor(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.FUNC_setup()) // ****** SETUP *********
|
|
|
|
@ -4821,9 +4929,9 @@ void UI_func_seq_pattern_editor(uint8_t param) |
|
|
|
|
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up())) |
|
|
|
|
{ |
|
|
|
|
if (LCDML.BT_checkDown()) |
|
|
|
|
temp_int = constrain(temp_int + 1, 0, 115 ); //was 114
|
|
|
|
|
temp_int = constrain(temp_int + 1, 0, 115 ); |
|
|
|
|
else if (LCDML.BT_checkUp()) |
|
|
|
|
temp_int = constrain(temp_int - 1, 0, 115 );//was 114
|
|
|
|
|
temp_int = constrain(temp_int - 1, 0, 115 ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else if (seq_active_function == 2) |
|
|
|
@ -4969,10 +5077,12 @@ void UI_func_seq_pattern_editor(uint8_t param) |
|
|
|
|
{ |
|
|
|
|
if (seq_active_function != 2) seq_active_function = 2; else seq_active_function = 99; |
|
|
|
|
|
|
|
|
|
if (seq_content_type[seq_active_track] == 0) { |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) |
|
|
|
|
{ |
|
|
|
|
if (activesample < NUM_DRUMSET_CONFIG - 1) |
|
|
|
|
lcd.show(0, 1, 6, basename(drum_config[activesample].name)); |
|
|
|
|
} else { |
|
|
|
|
} else |
|
|
|
|
{ |
|
|
|
|
if (temp_int < 109) { |
|
|
|
|
lcd.setCursor(3, 0); |
|
|
|
|
lcd.print(" "); |
|
|
|
@ -4983,14 +5093,25 @@ void UI_func_seq_pattern_editor(uint8_t param) |
|
|
|
|
} |
|
|
|
|
} else if (seq_menu > 2 && seq_menu < 30) |
|
|
|
|
{ |
|
|
|
|
if (seq_active_function == 99) { |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) { //Drumtrack
|
|
|
|
|
seq_data[seq_active_track][seq_menu - 3] = drum_config[activesample].midinote; |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 3] = 120; |
|
|
|
|
if (seq_active_function == 99) |
|
|
|
|
{ |
|
|
|
|
if (seq_content_type[seq_active_track] == 0) |
|
|
|
|
{ //Drumtrack
|
|
|
|
|
//check if note is already there, if not -> insert it, else remove it from grid.
|
|
|
|
|
if (seq_data[seq_active_track][seq_menu - 3] == drum_config[activesample].midinote) |
|
|
|
|
{ |
|
|
|
|
seq_data[seq_active_track][seq_menu - 3] = 0; |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 3] = 0; |
|
|
|
|
} else |
|
|
|
|
{ |
|
|
|
|
seq_data[seq_active_track][seq_menu - 3] = drum_config[activesample].midinote; |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 3] = 120; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ //Inst. Track
|
|
|
|
|
if (temp_int == 109) { //clear note
|
|
|
|
|
if (temp_int == 109 || seq_data[seq_active_track][seq_menu - 3] == temp_int ) |
|
|
|
|
{ //clear note
|
|
|
|
|
seq_data[seq_active_track][seq_menu - 3] = 0; |
|
|
|
|
seq_vel[seq_active_track][seq_menu - 3] = 0; |
|
|
|
|
} else if (temp_int == 110) { //latch note
|
|
|
|
|