From 33e54c10798f31d4ff300da28832408acaf0e1de Mon Sep 17 00:00:00 2001 From: Holger Wirtz Date: Tue, 19 Oct 2021 08:40:38 +0200 Subject: [PATCH] Moving global sequencer vars to struct. --- sequencer.h | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 131 insertions(+), 3 deletions(-) diff --git a/sequencer.h b/sequencer.h index d7cecda..a004732 100644 --- a/sequencer.h +++ b/sequencer.h @@ -1,4 +1,132 @@ +typedef struct sequencer_s { + float drums_volume; + uint8_t seq_active_track = 0; + uint8_t seq_menu; + bool seq_button_r = false; +#ifdef TEENSY4 + bool seq_noteoffsent[NUM_SEQ_TRACKS] = {false, false, false, false, false, false}; + uint8_t seq_inst_dexed[NUM_SEQ_TRACKS] = { 0, 0, 1, 1 , 1, 1 }; +#else + bool seq_noteoffsent[NUM_SEQ_TRACKS] = {false, false}; + uint8_t seq_inst_dexed[NUM_SEQ_TRACKS] = { 0, 0 }; +#endif + uint8_t seq_step = 0; + bool seq_running = false; + bool seq_recording = false; + bool smartfilter = true; + uint8_t seq_state_last_loadsave = 200; + char seq_name[FILENAME_LEN]; + char seq_name_temp[FILENAME_LEN]; + uint8_t seq_note_in; + uint8_t seq_note_in_velocity; + int seq_transpose; + + uint8_t seq_chord_dexed_inst = 0; + uint8_t seq_chord_velocity = 60; + uint8_t seq_chord_key_ammount = 4; + uint8_t seq_element_shift = 0; + int seq_oct_shift = 0; + uint8_t arp_style = 0; // up, down, up&down, random + + uint8_t seq_arps[6][23] = { + { 0, 4, 7, 12, 16, 19, 24, 28, 31, 36, 40, 43, 48, 52, 55, 60, 64, 67, 72, 76, 79, 84, 0}, //major + { 0, 3, 7, 12, 15, 19, 24, 27, 31, 36, 39, 43, 48, 51, 55, 60, 63, 67, 72, 75, 79, 84, 0}, //minor + { 0, 4, 7, 10, 12, 16, 19, 22, 24, 28, 31, 34, 36, 40, 43, 46, 48, 52, 55, 58, 60, 64, 0}, //seventh + { 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 0}, //augmented + { 0, 3, 6, 12, 15, 18, 24, 27, 30, 36, 39, 42, 48, 51, 54, 60, 63, 66, 72, 75, 78, 84, 0}, //dim + { 0, 4, 7, 11, 12, 16, 19, 23, 24, 28, 31, 35, 36, 40, 43, 47, 48, 52, 55, 59, 60, 64, 0} //maj7 + }; + + char seq_chord_names[7][4] = { + {'M', 'a', 'j', ' '}, //major + {'M', 'i', 'n', ' '}, + {'s', 'e', 'v', ' '}, + {'a', 'u', 'g', ' '}, + {'d', 'i', 'm', ' '}, + { 'M', 'a', 'j', '7'}, + { 'N', 'o', 'C', 'd'} + }; + + char arp_style_names[4][3] = { + { 'u', 'p', ' '}, + {'d', 'w', 'n'}, + {'u', '&', 'd'}, + {'R', 'N', 'D'} + }; + int seq_tempo_ms = 180000; + int seq_bpm = 102; + uint8_t seq_temp_select_menu; + uint8_t seq_temp_active_menu = 99; + uint8_t seq_chain_active_chainstep; + uint8_t seq_chain_lenght = 3; // 0 = 16 steps, 1 = 32 Steps, 2 = 46 Steps, 3 = 64 Steps + uint8_t seq_chain_active_step = 0; + uint8_t seq_prev_note[NUM_SEQ_TRACKS]; // note_offs for every (instr.) track + uint8_t seq_prev_vel[NUM_SEQ_TRACKS]; + uint8_t arp_step; + uint8_t arp_note; + uint8_t arp_chord = 6; + bool arp_play_basenote = true; + uint8_t arp_note_prev; + uint8_t arp_octave; + uint8_t arp_prev_oct; + uint8_t arp_speed = 0; + uint8_t arp_counter = 0; + uint8_t arp_lenght = 8; + uint8_t seq_data_buffer[16] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }; + uint8_t seq_data[NUM_SEQ_PATTERN][16] = { + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, + { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } + }; + uint8_t seq_vel[NUM_SEQ_PATTERN][16] = { + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + }; + uint8_t seq_content_type[NUM_SEQ_PATTERN] = { 0, 0, 0, 0 , 0, 0, 0 , 0 , 0 , 0 }; // 0 = track is Drumtrack, 1= Instrumenttrack, 2= Chord or Arpeggio +#ifdef TEENSY4 + uint8_t seq_patternchain[4][NUM_SEQ_TRACKS] = { + { 0 , 2 , 6 , 9 , 99, 99 }, + { 1 , 2 , 5 , 8 , 99, 99 }, + { 0 , 2 , 6 , 9 , 99, 99 }, + { 1 , 2 , 5 , 7 , 99, 99 } + }; + uint8_t seq_track_type[NUM_SEQ_TRACKS] = { 0, 0, 1, 1, 1, 1 }; // 0 = track is Drumtrack, 1 = Instrumenttrack, 2 = Chord, 3 = Arp +#else + uint8_t seq_patternchain[4][NUM_SEQ_TRACKS] = { + { 0 , 2 }, + { 1 , 2 }, + { 0 , 2 }, + { 1 , 2 }, + }; + uint8_t seq_track_type[NUM_SEQ_TRACKS] = { 0, 0 }; // 0 = track is Drumtrack, 1 = Instrumenttrack, 2 = Chord, 3 = Arp +#endif +} sequencer_t; + +sequencer_t seq; + + + + + + + + float drums_volume; uint8_t seq_active_track = 0; uint8_t seq_menu; @@ -28,7 +156,7 @@ uint8_t seq_element_shift = 0; int seq_oct_shift = 0; uint8_t arp_style = 0; // up, down, up&down, random -uint8_t seq_arps[7][23] = { +uint8_t seq_arps[6][23] = { 0, 4, 7, 12, 16, 19, 24, 28, 31, 36, 40, 43, 48, 52, 55, 60, 64, 67, 72, 76, 79, 84, 0, //major 0, 3, 7, 12, 15, 19, 24, 27, 31, 36, 39, 43, 48, 51, 55, 60, 63, 67, 72, 75, 79, 84, 0, //minor 0, 4, 7, 10, 12, 16, 19, 22, 24, 28, 31, 34, 36, 40, 43, 46, 48, 52, 55, 58, 60, 64, 0, //seventh @@ -148,9 +276,9 @@ uint8_t seq_patternchain[4][NUM_SEQ_TRACKS] = { 0 , 2 , 6 , 9 , 99, 99, uint8_t seq_track_type[NUM_SEQ_TRACKS] = { 0, 0, 1, 1, 1, 1 }; // 0 = track is Drumtrack, 1 = Instrumenttrack, 2 = Chord, 3 = Arp #else -uint8_t seq_patternchain[4][NUM_SEQ_TRACKS] = { 0 , 2 , +uint8_t seq_patternchain[4][NUM_SEQ_TRACKS] = { 0 , 2 , 1 , 2 , - 0 , 2 , + 0 , 2 , 1 , 2 , }; uint8_t seq_track_type[NUM_SEQ_TRACKS] = { 0, 0 }; // 0 = track is Drumtrack, 1 = Instrumenttrack, 2 = Chord, 3 = Arp