parent
bf62c37cf7
commit
054758b426
@ -0,0 +1,101 @@ |
|||||||
|
|
||||||
|
#include "config.h" |
||||||
|
#include "sequencer.h" |
||||||
|
#include <LCDMenuLib2.h> |
||||||
|
#include <LiquidCrystal_I2C.h> |
||||||
|
|
||||||
|
extern LCDMenuLib2 LCDML; |
||||||
|
extern LiquidCrystal_I2C lcd; |
||||||
|
extern config_t configuration; |
||||||
|
extern void handleNoteOn(byte , byte , byte ); |
||||||
|
extern void handleNoteOff(byte , byte , byte ); |
||||||
|
extern void UI_func_sequencer(uint8_t); |
||||||
|
extern const char* seq_find_shortname(uint8_t); |
||||||
|
|
||||||
|
void sequencer() |
||||||
|
{ |
||||||
|
bool seq_noteoffsent = false; |
||||||
|
|
||||||
|
if (seq_note_in > 0 && seq_recording == false && seq_active_track == 3 && seq_note_in < 71) { |
||||||
|
handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step_timer] + seq_transpose , 0); |
||||||
|
handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step_timer - 1] + seq_transpose , 0); |
||||||
|
|
||||||
|
seq_transpose = seq_note_in - 6 * 12 + 3; |
||||||
|
seq_note_in = 0; |
||||||
|
} |
||||||
|
|
||||||
|
if (seq_millis_timer > seq_timer_previous + 136) |
||||||
|
|
||||||
|
{ |
||||||
|
seq_timer_previous = seq_millis_timer; |
||||||
|
|
||||||
|
if (LCDML.FUNC_getID() == LCDML.OTHER_getIDFromFunction(UI_func_sequencer)) { |
||||||
|
|
||||||
|
//write to sequencer if in sequencer menu (step recording and live recording)
|
||||||
|
if (seq_note_in > 0 && seq_recording == true) { |
||||||
|
|
||||||
|
if (seq_active_track == 3) handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step_timer] + seq_transpose , 0); |
||||||
|
|
||||||
|
seq_data[seq_active_track][seq_step_timer] = seq_note_in; |
||||||
|
seq_note_in = 0; |
||||||
|
} |
||||||
|
lcd.setCursor(seq_step_timer, 1); |
||||||
|
lcd.print("X"); |
||||||
|
if (seq_step_timer == 0) { |
||||||
|
lcd.setCursor(15, 1); |
||||||
|
lcd.print(seq_find_shortname(15)); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
lcd.setCursor(seq_step_timer - 1, 1); |
||||||
|
lcd.print(seq_find_shortname(seq_step_timer - 1)); |
||||||
|
} |
||||||
|
} |
||||||
|
if (seq_data[0][seq_step_timer] > 0) |
||||||
|
{ |
||||||
|
handleNoteOn(DRUM_MIDI_CHANNEL, seq_data[0][seq_step_timer] , 99); |
||||||
|
} |
||||||
|
if (seq_data[1][seq_step_timer] > 0) |
||||||
|
{ |
||||||
|
handleNoteOn(DRUM_MIDI_CHANNEL, seq_data[1][seq_step_timer] , 99); |
||||||
|
} |
||||||
|
if (seq_data[2][seq_step_timer] > 0) |
||||||
|
{ |
||||||
|
handleNoteOn(DRUM_MIDI_CHANNEL, seq_data[2][seq_step_timer] , 99); |
||||||
|
} |
||||||
|
if (seq_data[3][seq_step_timer] > 0) //test instrument sequencer Instance=2
|
||||||
|
{ |
||||||
|
handleNoteOn(configuration.dexed[0].midi_channel, seq_data[3][seq_step_timer] + seq_transpose , 99); |
||||||
|
} |
||||||
|
|
||||||
|
seq_noteoffsent = false; |
||||||
|
seq_step_timer++; |
||||||
|
|
||||||
|
if (seq_step_timer > 15) { |
||||||
|
seq_step_timer = 0; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
if (seq_millis_timer > seq_timer_previous + 80 && seq_noteoffsent == false) |
||||||
|
|
||||||
|
{ |
||||||
|
if (seq_step_timer > 0) { |
||||||
|
if (seq_data[3][seq_step_timer - 1] > 0) //test instrument sequencer Instance=2
|
||||||
|
{ |
||||||
|
handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][seq_step_timer - 1] + seq_transpose , 0); |
||||||
|
} |
||||||
|
} else |
||||||
|
{ |
||||||
|
if (seq_step_timer == 0) { |
||||||
|
if (seq_data[3][15] > 0) //test instrument sequencer Instance=2
|
||||||
|
{ |
||||||
|
handleNoteOff(configuration.dexed[0].midi_channel, seq_data[3][15] + seq_transpose , 0); |
||||||
|
; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
seq_noteoffsent = true; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
|
||||||
|
uint8_t seq_active_track = 0; |
||||||
|
uint8_t seq_menu; |
||||||
|
bool seq_button_r = false; |
||||||
|
bool seq_noteoffsent = false; |
||||||
|
elapsedMillis seq_millis_timer; |
||||||
|
uint8_t seq_step_timer = 0; |
||||||
|
uint32_t seq_timer_previous = 0; |
||||||
|
bool seq_running = false; |
||||||
|
bool seq_recording = false; |
||||||
|
uint8_t seq_note_in; |
||||||
|
int seq_transpose; |
||||||
|
uint8_t seq_data[4][16] = {72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, |
||||||
|
0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, |
||||||
|
78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, |
||||||
|
45, 45, 57, 57, 45, 45, 57, 57, 45, 45, 57, 57, 45, 45, 57, 57, |
||||||
|
}; |
Loading…
Reference in new issue