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; } - } }