@ -28,29 +28,29 @@
typedef struct sequencer_s
typedef struct sequencer_s
{
{
float drums_volume ;
float drums_volume ;
uint8_t seq_ active_track = 0 ;
uint8_t active_track = 0 ;
uint8_t seq_ menu;
uint8_t menu ;
bool seq_ noteoffsent[ NUM_SEQ_TRACKS ] = { false , false , false , false , false , false } ;
bool noteoffsent [ NUM_SEQ_TRACKS ] = { false , false , false , false , false , false } ;
uint8_t seq_ inst_dexed[ NUM_SEQ_TRACKS ] = { 0 , 0 , 1 , 1 , 1 , 1 } ;
uint8_t inst_dexed [ NUM_SEQ_TRACKS ] = { 0 , 0 , 1 , 1 , 1 , 1 } ;
uint8_t seq_s tep = 0 ;
uint8_t step = 0 ;
bool seq_ running = false ;
bool running = false ;
bool seq_ recording = false ;
bool recording = false ;
bool smartfilter = true ;
bool smartfilter = true ;
uint8_t seq_s tate_last_loadsave = 200 ;
uint8_t state_last_loadsave = 200 ;
char seq_ name[ FILENAME_LEN ] ;
char name [ FILENAME_LEN ] ;
char seq_ name_temp[ FILENAME_LEN ] ;
char name_temp [ FILENAME_LEN ] ;
uint8_t seq_ note_in;
uint8_t note_in ;
uint8_t seq_ note_in_velocity;
uint8_t note_in_velocity ;
int seq_ transpose;
int transpose ;
uint8_t seq_ chord_dexed_inst = 0 ;
uint8_t chord_dexed_inst = 0 ;
uint8_t seq_ chord_velocity = 60 ;
uint8_t chord_velocity = 60 ;
uint8_t seq_ chord_key_ammount = 4 ;
uint8_t chord_key_ammount = 4 ;
uint8_t seq_ element_shift = 0 ;
uint8_t element_shift = 0 ;
int seq_ oct_shift = 0 ;
int oct_shift = 0 ;
uint8_t arp_style = 0 ; // up, down, up&down, random
uint8_t arp_style = 0 ; // up, down, up&down, random
const uint8_t seq_ arps[ 6 ] [ 23 ] = {
const uint8_t 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 , 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 , 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 , 7 , 10 , 12 , 16 , 19 , 22 , 24 , 28 , 31 , 34 , 36 , 40 , 43 , 46 , 48 , 52 , 55 , 58 , 60 , 64 , 0 } , //seventh
@ -59,7 +59,7 @@ typedef struct sequencer_s
{ 0 , 4 , 7 , 11 , 12 , 16 , 19 , 23 , 24 , 28 , 31 , 35 , 36 , 40 , 43 , 47 , 48 , 52 , 55 , 59 , 60 , 64 , 0 } //maj7
{ 0 , 4 , 7 , 11 , 12 , 16 , 19 , 23 , 24 , 28 , 31 , 35 , 36 , 40 , 43 , 47 , 48 , 52 , 55 , 59 , 60 , 64 , 0 } //maj7
} ;
} ;
const char seq_ chord_names[ 7 ] [ 4 ] = {
const char chord_names [ 7 ] [ 4 ] = {
{ ' M ' , ' a ' , ' j ' , ' ' } , //major
{ ' M ' , ' a ' , ' j ' , ' ' } , //major
{ ' M ' , ' i ' , ' n ' , ' ' } ,
{ ' M ' , ' i ' , ' n ' , ' ' } ,
{ ' s ' , ' e ' , ' v ' , ' ' } ,
{ ' s ' , ' e ' , ' v ' , ' ' } ,
@ -75,15 +75,15 @@ typedef struct sequencer_s
{ ' u ' , ' & ' , ' d ' } ,
{ ' u ' , ' & ' , ' d ' } ,
{ ' R ' , ' N ' , ' D ' }
{ ' R ' , ' N ' , ' D ' }
} ;
} ;
int seq_ tempo_ms = 180000 ;
int tempo_ms = 180000 ;
int seq_ bpm = 102 ;
int bpm = 102 ;
uint8_t seq_ temp_select_menu;
uint8_t temp_select_menu ;
uint8_t seq_ temp_active_menu = 99 ;
uint8_t temp_active_menu = 99 ;
uint8_t seq_ chain_active_chainstep;
uint8_t chain_active_chainstep ;
uint8_t seq_ chain_lenght = 3 ; // 0 = 16 steps, 1 = 32 Steps, 2 = 46 Steps, 3 = 64 Steps
uint8_t chain_lenght = 3 ; // 0 = 16 steps, 1 = 32 Steps, 2 = 46 Steps, 3 = 64 Steps
uint8_t seq_ chain_active_step = 0 ;
uint8_t chain_active_step = 0 ;
uint8_t seq_ prev_note[ NUM_SEQ_TRACKS ] ; // note_offs for every (instr.) track
uint8_t prev_note [ NUM_SEQ_TRACKS ] ; // note_offs for every (instr.) track
uint8_t seq_ prev_vel[ NUM_SEQ_TRACKS ] ;
uint8_t prev_vel [ NUM_SEQ_TRACKS ] ;
uint8_t arp_step ;
uint8_t arp_step ;
uint8_t arp_note ;
uint8_t arp_note ;
uint8_t arp_chord = 6 ;
uint8_t arp_chord = 6 ;
@ -94,8 +94,8 @@ typedef struct sequencer_s
uint8_t arp_speed = 0 ;
uint8_t arp_speed = 0 ;
uint8_t arp_counter = 0 ;
uint8_t arp_counter = 0 ;
uint8_t arp_lenght = 8 ;
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 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 ] = {
uint8_t 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 } ,
@ -107,7 +107,7 @@ typedef struct sequencer_s
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 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 ] = {
uint8_t 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 } ,
@ -119,14 +119,14 @@ typedef struct sequencer_s
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 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
uint8_t 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
uint8_t seq_ patternchain[ 4 ] [ NUM_SEQ_TRACKS ] = {
uint8_t patternchain [ 4 ] [ NUM_SEQ_TRACKS ] = {
{ 0 , 2 , 6 , 9 , 99 , 99 } ,
{ 0 , 2 , 6 , 9 , 99 , 99 } ,
{ 1 , 2 , 5 , 8 , 99 , 99 } ,
{ 1 , 2 , 5 , 8 , 99 , 99 } ,
{ 0 , 2 , 6 , 9 , 99 , 99 } ,
{ 0 , 2 , 6 , 9 , 99 , 99 } ,
{ 1 , 2 , 5 , 7 , 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
uint8_t track_type [ NUM_SEQ_TRACKS ] = { 0 , 0 , 1 , 1 , 1 , 1 } ; // 0 = track is Drumtrack, 1 = Instrumenttrack, 2 = Chord, 3 = Arp
} sequencer_t ;
} sequencer_t ;
# endif
# endif