@ -308,6 +308,7 @@ void UI_func_seq_lenght(uint8_t param);
void UI_func_seq_tempo ( uint8_t param ) ;
void UI_func_seq_pat_chain ( uint8_t param ) ;
void UI_func_arpeggio ( uint8_t param ) ;
void UI_func_seq_mute_matrix ( uint8_t param ) ;
void UI_func_seq_track_setup ( uint8_t param ) ;
void UI_func_dexed_assign ( uint8_t param ) ;
void UI_func_seq_display_style ( uint8_t param ) ;
@ -4899,13 +4900,13 @@ void arp_refresh_display_play_status()
}
void seq_print_current_note ( )
{
lcd . print ( noteNames [ seq_data [ seq_active_track ] [ seq_menu - 3 ] % 12 ] [ 0 ] ) ;
if ( noteNames [ seq_data [ seq_active_track ] [ seq_menu - 3 ] % 12 ] [ 1 ] ! = ' \0 ' )
{
lcd . print ( noteNames [ seq_data [ seq_active_track ] [ seq_menu - 3 ] % 12 ] [ 1 ] ) ;
}
lcd . print ( ( seq_data [ seq_active_track ] [ seq_menu - 3 ] / 12 ) - 1 ) ;
lcd . print ( " " ) ;
lcd . print ( noteNames [ seq_data [ seq_active_track ] [ seq_menu - 3 ] % 12 ] [ 0 ] ) ;
if ( noteNames [ seq_data [ seq_active_track ] [ seq_menu - 3 ] % 12 ] [ 1 ] ! = ' \0 ' )
{
lcd . print ( noteNames [ seq_data [ seq_active_track ] [ seq_menu - 3 ] % 12 ] [ 1 ] ) ;
}
lcd . print ( ( seq_data [ seq_active_track ] [ seq_menu - 3 ] / 12 ) - 1 ) ;
lcd . print ( " " ) ;
}
void UI_func_seq_pattern_editor ( uint8_t param )
{
@ -5402,9 +5403,9 @@ void UI_func_seq_pattern_editor(uint8_t param)
lcd . print ( temp_int ) ;
} else if ( seq_menu = = 0 ) {
# ifdef TESTDISPLAY20x4
lcd . setCursor ( 14 , 0 ) ;
lcd . setCursor ( 13 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 16 , 0 ) ;
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " " ) ;
# else
lcd . setCursor ( 9 , 0 ) ;
@ -5489,7 +5490,7 @@ void UI_func_seq_pattern_editor(uint8_t param)
lcd . setCursor ( 7 , 0 ) ;
lcd . print ( " " ) ;
# ifdef TESTDISPLAY20x4
lcd . setCursor ( 17 , 0 ) ;
lcd . setCursor ( 16 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 19 , 0 ) ;
lcd . print ( " " ) ;
@ -5500,10 +5501,10 @@ void UI_func_seq_pattern_editor(uint8_t param)
lcd . print ( " " ) ;
# endif
# ifdef TESTDISPLAY20x4
lcd . setCursor ( 14 , 0 ) ;
lcd . setCursor ( 13 , 0 ) ;
lcd . print ( " [ " ) ;
seq_refresh_display_play_status ( ) ;
lcd . setCursor ( 16 , 0 ) ;
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " ] " ) ;
# else
lcd . setCursor ( 9 , 0 ) ;
@ -5515,9 +5516,9 @@ void UI_func_seq_pattern_editor(uint8_t param)
}
if ( seq_menu = = 2 ) {
# ifdef TESTDISPLAY20x4
lcd . setCursor ( 14 , 0 ) ;
lcd . setCursor ( 13 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 16 , 0 ) ;
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 16 , 0 ) ;
lcd . print ( " [ " ) ;
@ -5554,7 +5555,7 @@ void UI_func_seq_pattern_editor(uint8_t param)
}
if ( seq_menu = = 3 ) {
# ifdef TESTDISPLAY20x4
lcd . setCursor ( 17 , 0 ) ;
lcd . setCursor ( 16 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 19 , 0 ) ;
lcd . print ( " " ) ;
@ -5592,17 +5593,27 @@ void UI_func_seq_pattern_editor(uint8_t param)
{
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " [EDIT " ) ;
seq_print_current_note ( ) ;
seq_print_current_note ( ) ;
lcd . setCursor ( 8 , 0 ) ;
lcd . print ( " ?] " ) ;
}
else
{
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " " ) ;
lcd . show ( 0 , 1 , 6 , basename ( drum_config [ activesample ] . name ) ) ;
lcd . print ( " " ) ;
}
//print current sample name on active step if not empty
if ( seq_data [ seq_active_track ] [ seq_menu - 3 ] > 0 )
{
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " " ) ;
lcd . show ( 0 , 1 , 6 , seq_find_drum_name_from_note ( seq_data [ seq_active_track ] [ seq_menu - 3 ] ) ) ;
lcd . print ( " " ) ;
}
else
{ //if step empty, print selected, active sample
if ( seq_data [ seq_active_track ] [ seq_menu - 3 ] = = 0 )
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " " ) ;
lcd . show ( 0 , 1 , 6 , basename ( drum_config [ activesample ] . name ) ) ;
lcd . print ( " " ) ;
}
}
else if ( seq_active_function = = 40 & & activesample ! = NUM_DRUMSET_CONFIG - 1 )
{ //is in pitch edit function 40
@ -5952,6 +5963,250 @@ void UI_func_seq_pat_chain(uint8_t param)
}
}
# ifdef TESTDISPLAY20x4
void UI_func_seq_mute_matrix ( uint8_t param ) // for test display 20x4
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********
{
// setup function
seq_temp_active_menu = 99 ;
seq_temp_select_menu = 1 ;
seq_menu = 0 ;
temp_int = 0 ; //y offset
lcd . setCursor ( 0 , 0 ) ;
}
if ( LCDML . FUNC_loop ( ) ) // ****** LOOP *********
{
uint8_t xscroll ;
if ( seq_temp_active_menu = = 99 ) {
if ( ( LCDML . BT_checkDown ( ) & & encoderDir [ ENC_R ] . Down ( ) ) | | ( LCDML . BT_checkUp ( ) & & encoderDir [ ENC_R ] . Up ( ) ) )
{
if ( LCDML . BT_checkDown ( ) )
{
seq_temp_select_menu = constrain ( seq_temp_select_menu + 1 , 0 , NUM_SEQ_TRACKS + 1 ) ;
if ( seq_temp_select_menu = = NUM_SEQ_TRACKS + 1 & & temp_int ! = 3 ) //next chain step
{
lcd . setCursor ( 14 , temp_int ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 18 , temp_int ) ;
lcd . print ( " " ) ;
seq_temp_select_menu = 1 ;
if ( temp_int < 3 ) temp_int + + ;
}
if ( seq_temp_select_menu = = NUM_SEQ_TRACKS + 1 & & temp_int = = 3 )
seq_temp_select_menu = NUM_SEQ_TRACKS ;
}
else if ( LCDML . BT_checkUp ( ) )
{
seq_temp_select_menu = constrain ( seq_temp_select_menu - 1 , 0 , NUM_SEQ_TRACKS + 1 ) ;
if ( seq_temp_select_menu = = 0 & & temp_int > 0 ) //prev chain step
{
lcd . setCursor ( 2 , temp_int ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 6 , temp_int ) ;
lcd . print ( " " ) ;
seq_temp_select_menu = NUM_SEQ_TRACKS - 1 ;
if ( temp_int > = 0 ) temp_int = temp_int - 1 ;
lcd . setCursor ( 14 , temp_int ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( 18 , temp_int ) ;
lcd . print ( " ] " ) ;
}
else if ( seq_temp_select_menu < 1 & & temp_int = = 0 )
seq_temp_select_menu = 1 ;
}
}
}
if ( LCDML . BT_checkEnter ( ) ) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
{
if ( seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] < NUM_SEQ_PATTERN )
seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] + ( NUM_SEQ_PATTERN + 10 ) ;
else if ( seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] > NUM_SEQ_PATTERN & & seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] ! = 99 )
seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] - ( NUM_SEQ_PATTERN + 10 ) ;
else if ( seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = = 99 )
seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = NUM_SEQ_PATTERN - 1 ;
}
if ( seq_temp_select_menu - 1 < 4 ) xscroll = 0 ;
else if ( seq_temp_select_menu - 1 = = 4 ) xscroll = 1 ;
else xscroll = 2 ;
for ( uint8_t y = 0 ; y < 4 ; y + + )
{
for ( uint8_t x = 0 ; x < NUM_SEQ_TRACKS - 2 ; x + + )
{
lcd . setCursor ( x * 4 + 3 , y ) ;
if ( seq_patternchain [ y ] [ x + xscroll ] < NUM_SEQ_PATTERN )
{
if ( seq_track_type [ x + xscroll ] = = 0 ) lcd . print ( " D " ) ;
else if ( seq_track_type [ x + xscroll ] = = 1 ) lcd . print ( " I " ) ;
else if ( seq_track_type [ x + xscroll ] = = 2 ) lcd . print ( " C " ) ;
else lcd . print ( " A " ) ;
if ( seq_patternchain [ y ] [ x + xscroll ] < 10 )
lcd . print ( " 0 " ) ;
lcd . print ( seq_patternchain [ y ] [ x + xscroll ] ) ;
}
else
lcd . print ( " OFF " ) ;
}
}
if ( xscroll = = 0 )
{
//print cursor
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 2 , temp_int ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 6 , temp_int ) ;
lcd . print ( " ] " ) ;
if ( ( seq_temp_select_menu - 1 ) > 0 ) {
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 2 - 4 , temp_int ) ;
lcd . print ( " " ) ;
}
if ( ( seq_temp_select_menu - 1 ) < 4 ) {
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 6 + 4 , temp_int ) ;
lcd . print ( " " ) ;
}
}
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " T " ) ;
lcd . print ( seq_temp_select_menu ) ;
lcd . setCursor ( 0 , 1 ) ;
lcd . print ( " S " ) ;
lcd . print ( temp_int + 1 ) ; // Chain Step
}
if ( LCDML . FUNC_close ( ) ) // ****** STABLE END *********
{
encoderDir [ ENC_R ] . reset ( ) ;
}
}
# else
void UI_func_seq_mute_matrix ( uint8_t param ) // for standard display 16x2
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********
{
// setup function
seq_temp_active_menu = 99 ;
seq_temp_select_menu = 1 ;
seq_menu = 0 ;
temp_int = 0 ; //y offset
lcd . setCursor ( 0 , 0 ) ;
}
if ( LCDML . FUNC_loop ( ) ) // ****** LOOP *********
{
uint8_t xscroll ;
if ( seq_temp_active_menu = = 99 ) {
if ( ( LCDML . BT_checkDown ( ) & & encoderDir [ ENC_R ] . Down ( ) ) | | ( LCDML . BT_checkUp ( ) & & encoderDir [ ENC_R ] . Up ( ) ) )
{
if ( LCDML . BT_checkDown ( ) )
{
seq_temp_select_menu = constrain ( seq_temp_select_menu + 1 , 0 , NUM_SEQ_TRACKS + 1 ) ;
if ( seq_temp_select_menu = = NUM_SEQ_TRACKS + 1 & & temp_int ! = 3 ) //next chain step
{
lcd . setCursor ( 10 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 14 , 1 ) ;
lcd . print ( " " ) ;
seq_temp_select_menu = 1 ;
if ( temp_int < 3 ) temp_int + + ;
}
if ( seq_temp_select_menu = = NUM_SEQ_TRACKS + 1 & & temp_int = = 3 )
seq_temp_select_menu = NUM_SEQ_TRACKS ;
}
else if ( LCDML . BT_checkUp ( ) )
{
seq_temp_select_menu = constrain ( seq_temp_select_menu - 1 , 0 , NUM_SEQ_TRACKS + 1 ) ;
if ( seq_temp_select_menu = = 0 & & temp_int > 0 ) //prev chain step
{
lcd . setCursor ( 2 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 6 , 1 ) ;
lcd . print ( " " ) ;
seq_temp_select_menu = NUM_SEQ_TRACKS - 1 ;
if ( temp_int > = 0 ) temp_int = temp_int - 1 ;
lcd . setCursor ( 10 , 1 ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( 14 , 1 ) ;
lcd . print ( " ] " ) ;
}
else if ( seq_temp_select_menu < 1 & & temp_int = = 0 )
seq_temp_select_menu = 1 ;
}
}
}
if ( LCDML . BT_checkEnter ( ) ) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
{
if ( seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] < NUM_SEQ_PATTERN )
seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] + ( NUM_SEQ_PATTERN + 10 ) ;
else if ( seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] > NUM_SEQ_PATTERN & & seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] ! = 99 )
seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] - ( NUM_SEQ_PATTERN + 10 ) ;
else if ( seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = = 99 )
seq_patternchain [ temp_int ] [ seq_temp_select_menu - 1 ] = NUM_SEQ_PATTERN - 1 ;
}
if ( seq_temp_select_menu - 1 < 3 ) xscroll = 0 ;
else xscroll = seq_temp_select_menu - 3 ;
if ( xscroll = = 0 )
{
//print cursor
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 2 , 1 ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 6 , 1 ) ;
lcd . print ( " ] " ) ;
if ( ( seq_temp_select_menu - 1 ) > 0 )
{
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 2 - 4 , 1 ) ;
lcd . print ( " " ) ;
}
if ( ( seq_temp_select_menu - 1 ) < 4 )
{
lcd . setCursor ( ( seq_temp_select_menu - 1 ) * 4 + 6 + 4 , 1 ) ;
lcd . print ( " " ) ;
}
lcd . setCursor ( 3 , 0 ) ;
lcd . print ( " T1 " ) ;
lcd . setCursor ( 7 , 0 ) ;
lcd . print ( " T2 " ) ;
lcd . setCursor ( 11 , 0 ) ;
lcd . print ( " T3 " ) ;
}
else
{
lcd . setCursor ( 3 , 0 ) ;
lcd . print ( " T " ) ;
lcd . print ( seq_temp_select_menu - 2 ) ;
lcd . setCursor ( 7 , 0 ) ;
lcd . print ( " T " ) ;
lcd . print ( seq_temp_select_menu - 2 + 1 ) ;
lcd . setCursor ( 11 , 0 ) ;
lcd . print ( " T " ) ;
lcd . print ( seq_temp_select_menu - 2 + 2 ) ;
}
for ( uint8_t x = 0 ; x < NUM_SEQ_TRACKS - 3 ; x + + )
{
lcd . setCursor ( x * 4 + 3 , 1 ) ;
if ( seq_patternchain [ temp_int ] [ x + xscroll ] < NUM_SEQ_PATTERN )
{
if ( seq_track_type [ x + xscroll ] = = 0 ) lcd . print ( " D " ) ;
else if ( seq_track_type [ x + xscroll ] = = 1 ) lcd . print ( " I " ) ;
else if ( seq_track_type [ x + xscroll ] = = 2 ) lcd . print ( " C " ) ;
else lcd . print ( " A " ) ;
if ( seq_patternchain [ temp_int ] [ x + xscroll ] < 10 )
lcd . print ( " 0 " ) ;
lcd . print ( seq_patternchain [ temp_int ] [ x + xscroll ] ) ;
}
else
lcd . print ( " OFF " ) ;
}
lcd . setCursor ( 0 , 1 ) ;
lcd . print ( " S " ) ;
lcd . print ( temp_int + 1 ) ; // Chain Step
}
if ( LCDML . FUNC_close ( ) ) // ****** STABLE END *********
{
encoderDir [ ENC_R ] . reset ( ) ;
}
}
# endif
void UI_func_seq_track_setup ( uint8_t param )
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********