diff --git a/UI.hpp b/UI.hpp index a8730a8..8c81137 100644 --- a/UI.hpp +++ b/UI.hpp @@ -4144,7 +4144,7 @@ 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) { + 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 (LCDML.BT_checkDown()) @@ -4152,6 +4152,14 @@ 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 ) { + 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); + } } if (LCDML.BT_checkEnter()) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> { @@ -4171,6 +4179,8 @@ void UI_func_seq_vel_editor(uint8_t param) } //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) { lcd.setCursor(4, 0); lcd.print("--- --- "); @@ -4212,12 +4222,24 @@ void UI_func_seq_vel_editor(uint8_t param) lcd.show(0, 8, 5, seq_find_drum_name_from_note( seq_data[seq_active_track][seq_menu - 1]) ); } else { - 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_content_type[seq_active_track] < 2) + { + 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(" "); + } + else { + if (seq_vel[seq_active_track][seq_menu - 1] == 200) lcd.print("Maj" ); + else if (seq_vel[seq_active_track][seq_menu - 1] == 201) lcd.print("Min" ); + else if (seq_vel[seq_active_track][seq_menu - 1] == 202) lcd.print("Sev" ); + 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("Mj7" ); + } - lcd.print( (seq_data[seq_active_track][seq_menu - 1] / 12) - 1); - lcd.print(" "); } } else diff --git a/UI_FX.h b/UI_FX.h index a7e98b5..534f0de 100644 --- a/UI_FX.h +++ b/UI_FX.h @@ -119,7 +119,7 @@ LCDML_add(85, LCDML_0_4, 3, "Drum Pan", UI_func_drum_pan); LCDML_add(86, LCDML_0_4, 4, "Drum Rev.Send", UI_func_drum_reverb_send); LCDML_add(87, LCDML_0, 5, "Sequencer", NULL); LCDML_add(88, LCDML_0_5, 1, "Sequencer", UI_func_sequencer); -LCDML_add(89, LCDML_0_5, 2, "Velocity Edit", UI_func_seq_vel_editor); +LCDML_add(89, LCDML_0_5, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor); LCDML_add(90, LCDML_0_5, 3, "Pattern Chain", UI_func_seq_pat_chain); LCDML_add(91, LCDML_0_5, 4, "Seq. Length", UI_func_seq_lenght); LCDML_add(92, LCDML_0_5, 5, "Tempo", UI_func_seq_tempo); diff --git a/UI_FX_T4.h b/UI_FX_T4.h index 42dcddf..0afa692 100644 --- a/UI_FX_T4.h +++ b/UI_FX_T4.h @@ -122,7 +122,7 @@ LCDML_add(88, LCDML_0_4, 3, "Drum Pan", UI_func_drum_pan); LCDML_add(89, LCDML_0_4, 4, "Drum Rev.Send", UI_func_drum_reverb_send); LCDML_add(90, LCDML_0, 5, "Sequencer", NULL); LCDML_add(91, LCDML_0_5, 1, "Sequencer", UI_func_sequencer); -LCDML_add(92, LCDML_0_5, 2, "Velocity Edit", UI_func_seq_vel_editor); +LCDML_add(92, LCDML_0_5, 2, "Vel./Chrd Edit", UI_func_seq_vel_editor); LCDML_add(93, LCDML_0_5, 3, "Pattern Chain", UI_func_seq_pat_chain); LCDML_add(94, LCDML_0_5, 4, "Seq. Length", UI_func_seq_lenght); LCDML_add(95, LCDML_0_5, 5, "Tempo", UI_func_seq_tempo); diff --git a/drums.h b/drums.h index 8dc3c82..89f22aa 100644 --- a/drums.h +++ b/drums.h @@ -176,7 +176,7 @@ drum_config_t drum_config[NUM_DRUMSET_CONFIG] = "phkick1", AudioSamplePhkick1, "B", - -1.0, + 0.0, 0.9, 0.0, 0.0 diff --git a/sequencer.cpp b/sequencer.cpp index d46526e..b2a4d4d 100644 --- a/sequencer.cpp +++ b/sequencer.cpp @@ -12,26 +12,18 @@ extern void handleNoteOff(byte , byte , byte ); extern void UI_func_sequencer(uint8_t); extern const char* seq_find_shortname(uint8_t); - - - void sequencer(void) { - - - if (seq_note_in > 0 && seq_note_in < 62 && seq_recording == false ) { - // handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step] + seq_transpose , 0); - // handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step - 1] + seq_transpose , 0); - - //if (seq_note_in>65)seq_note_in=seq_note_in-12; - - // seq_transpose = seq_note_in % 12 ; - //seq_transpose=seq_transpose-12; - // seq_note_in = 0; - } + //if (seq_note_in > 0 && seq_note_in < 62 && seq_recording == false ) { + //handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step] + seq_transpose , 0); + //handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step - 1] + seq_transpose , 0); + //if (seq_note_in>65)seq_note_in=seq_note_in-12; + //seq_transpose = seq_note_in % 12 ; + //seq_transpose=seq_transpose-12; + //seq_note_in = 0; + //} if (seq_millis_timer > seq_timer_previous + seq_tempo_ms) - { seq_timer_previous = seq_millis_timer; @@ -71,8 +63,18 @@ void sequencer(void) else { if (seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] > 0 && seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step] > 0) // instrument track { - handleNoteOn(configuration.dexed[0].midi_channel, seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose , seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step]); + handleNoteOn(configuration.dexed[seq_inst_dexed[d]].midi_channel, seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose , seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step]); seq_prev_note[d] = seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose; + seq_prev_vel[d] = seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step]; + if (seq_track_type[d] == 2) { + if (seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step] > 199) + { + handleNoteOn(configuration.dexed[seq_chord_ch].midi_channel, seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose + seq_chords[seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step] - 200][0], seq_chord_velocity); + handleNoteOn(configuration.dexed[seq_chord_ch].midi_channel, seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose + seq_chords[seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step] - 200][1], seq_chord_velocity); + handleNoteOn(configuration.dexed[seq_chord_ch].midi_channel, seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose + seq_chords[seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step] - 200][2], seq_chord_velocity); + handleNoteOn(configuration.dexed[seq_chord_ch].midi_channel, seq_data[ seq_patternchain[seq_chain_active_step][d] ][seq_step] + seq_transpose + seq_chords[seq_vel[ seq_patternchain[seq_chain_active_step][d] ][seq_step] - 200][3], seq_chord_velocity); + } + } } } seq_noteoffsent[d] = false; @@ -91,19 +93,27 @@ void sequencer(void) } } } - if (seq_millis_timer > seq_timer_previous + 80 ) { for (uint8_t d = 0; d < 4; d++) { if ( seq_noteoffsent[d] == false) { - if ( seq_prev_note[d] > 0) //test instrument sequencer Instance=0 + if ( seq_prev_note[d] > 0 && seq_track_type[d] > 0) //test instrument sequencer Instance=0 { - handleNoteOff(configuration.dexed[0].midi_channel, seq_prev_note[d] , 0); + handleNoteOff(configuration.dexed[seq_inst_dexed[d]].midi_channel, seq_prev_note[d] , 0); + if (seq_track_type[d] == 2) { + if ( seq_prev_vel[d] > 199) { + + handleNoteOff(configuration.dexed[seq_chord_ch].midi_channel, seq_prev_note[d] + seq_chords[seq_prev_vel[d] - 200][0], 0); + handleNoteOff(configuration.dexed[seq_chord_ch].midi_channel, seq_prev_note[d] + seq_chords[seq_prev_vel[d] - 200][1] , 0); + handleNoteOff(configuration.dexed[seq_chord_ch].midi_channel, seq_prev_note[d] + seq_chords[seq_prev_vel[d] - 200][2] , 0); + handleNoteOff(configuration.dexed[seq_chord_ch].midi_channel, seq_prev_note[d] + seq_chords[seq_prev_vel[d] - 200][3] , 0); + } + + } } } seq_noteoffsent[d] = true; } - } }