@ -89,6 +89,14 @@ extern uint8_t seq_temp_active_menu;
extern uint8_t seq_chain_active_chainstep ; //for editor
extern uint8_t seq_chain_active_step ;
extern int seq_transpose ;
extern uint8_t arp_step ;
extern uint8_t arp_note ;
extern uint8_t arp_chord ;
extern uint8_t arp_octave ;
extern uint8_t arp_oct_usersetting ;
extern uint8_t arp_style ;
extern uint8_t arp_speed ;
extern char arp_style_names [ 4 ] [ 3 ] ;
# endif
# ifdef DISPLAY_LCD_SPI
@ -273,6 +281,7 @@ void UI_func_seq_live_transpose_oct(uint8_t param);
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_track_setup ( uint8_t param ) ;
void UI_func_seq_display_style ( uint8_t param ) ;
void UI_func_seq_pattern_load ( uint8_t param ) ;
@ -3915,14 +3924,9 @@ void UI_func_seq_display_style(uint8_t param)
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " Seq. Disp. Style " ) ;
lcd . setCursor ( 0 , 1 ) ;
lcd . print ( " Seq ." ) ;
lcd . print ( " Pat ." ) ;
lcd . setCursor ( 8 , 1 ) ;
lcd . print ( " = " ) ;
lcd . setCursor ( 11 , 1 ) ;
if ( seq_content_type [ seq_active_track ] = = 0 )
lcd . print ( " Drum " ) ;
else
lcd . print ( " Inst " ) ;
}
if ( LCDML . FUNC_loop ( ) ) // ****** LOOP *********
{
@ -3943,21 +3947,17 @@ void UI_func_seq_display_style(uint8_t param)
{
if ( LCDML . BT_checkDown ( ) )
{
seq_content_type [ seq_active_track ] = constrain ( seq_content_type [ seq_active_track ] + ENCODER [ ENC_R ] . speed ( ) , 0 , 1 ) ;
seq_content_type [ seq_active_track ] = constrain ( seq_content_type [ seq_active_track ] + ENCODER [ ENC_R ] . speed ( ) , 0 , 2 ) ;
}
else if ( LCDML . BT_checkUp ( ) )
{
seq_content_type [ seq_active_track ] = constrain ( seq_content_type [ seq_active_track ] - ENCODER [ ENC_R ] . speed ( ) , 0 , 1 ) ;
seq_content_type [ seq_active_track ] = constrain ( seq_content_type [ seq_active_track ] - ENCODER [ ENC_R ] . speed ( ) , 0 , 2 ) ;
}
}
}
if ( LCDML . BT_checkEnter ( ) )
{
if ( menu_select_toggle ) {
menu_select_toggle = false ;
} else
{ menu_select_toggle = true ;
}
menu_select_toggle = ! menu_select_toggle ;
}
if ( menu_select_toggle = = false ) {
lcd . setCursor ( 10 , 1 ) ;
@ -3968,10 +3968,6 @@ void UI_func_seq_display_style(uint8_t param)
lcd . print ( " [ " ) ;
lcd . print ( seq_active_track ) ;
lcd . print ( " ] " ) ;
lcd . setCursor ( 11 , 1 ) ;
if ( seq_content_type [ seq_active_track ] = = 0 ) lcd . print ( " Drum " ) ;
else
lcd . print ( " Inst " ) ;
} else {
lcd . setCursor ( 4 , 1 ) ;
lcd . print ( " " ) ;
@ -3979,12 +3975,16 @@ void UI_func_seq_display_style(uint8_t param)
lcd . print ( " " ) ;
lcd . setCursor ( 10 , 1 ) ;
lcd . print ( " [ " ) ;
if ( seq_content_type [ seq_active_track ] = = 0 )
lcd . print ( " Drum " ) ;
else
lcd . print ( " Inst " ) ;
lcd . setCursor ( 15 , 1 ) ;
lcd . print ( " ] " ) ;
}
lcd . setCursor ( 11 , 1 ) ;
if ( seq_content_type [ seq_active_track ] = = 0 )
lcd . print ( " Drum " ) ;
else if ( seq_content_type [ seq_active_track ] = = 1 )
lcd . print ( " Inst " ) ;
else
lcd . print ( " Chrd " ) ;
}
if ( LCDML . FUNC_close ( ) ) // ****** STABLE END *********
{
@ -4152,7 +4152,7 @@ void UI_func_seq_vel_editor(uint8_t param)
else if ( LCDML . BT_checkUp ( ) )
seq_vel [ seq_active_track ] [ seq_menu - 1 ] = constrain ( seq_vel [ seq_active_track ] [ seq_menu - 1 ] - 1 , 0 , 127 ) ;
}
} else if ( seq_active_function = = 1 & & seq_content_type [ seq_active_track ] > 1 ) {
} else if ( seq_active_function = = 1 & & seq_content_type [ seq_active_track ] > 1 ) { //is in Chord or Arp Mode
if ( ( LCDML . BT_checkDown ( ) & & encoderDir [ ENC_R ] . Down ( ) ) | | ( LCDML . BT_checkUp ( ) & & encoderDir [ ENC_R ] . Up ( ) ) )
{
if ( LCDML . BT_checkDown ( ) )
@ -4179,8 +4179,8 @@ void UI_func_seq_vel_editor(uint8_t param)
}
//button check end <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if ( seq_content_type [ seq_active_track ] > 1 & & seq_vel [ seq_active_track ] [ seq_menu - 1 ] < 200 ) seq_vel [ seq_active_track ] [ seq_menu - 1 ] = 200 ;
if ( seq_content_type [ seq_active_track ] > 1 & & seq_vel [ seq_active_track ] [ seq_menu - 1 ] < 200 ) seq_vel [ seq_active_track ] [ seq_menu - 1 ] = 200 ;
if ( seq_menu = = 0 ) {
lcd . setCursor ( 4 , 0 ) ;
lcd . print ( " --- --- " ) ;
@ -4232,7 +4232,7 @@ void UI_func_seq_vel_editor(uint8_t param)
lcd . print ( " " ) ;
}
else {
if ( seq_vel [ seq_active_track ] [ seq_menu - 1 ] = = 200 ) lcd . print ( " Maj " ) ;
if ( seq_vel [ seq_active_track ] [ seq_menu - 1 ] = = 200 ) lcd . print ( " Maj " ) ;
else if ( seq_vel [ seq_active_track ] [ seq_menu - 1 ] = = 201 ) lcd . print ( " Min " ) ;
else if ( seq_vel [ seq_active_track ] [ seq_menu - 1 ] = = 202 ) lcd . print ( " Sev " ) ;
else if ( seq_vel [ seq_active_track ] [ seq_menu - 1 ] = = 203 ) lcd . print ( " Aug " ) ;
@ -4283,6 +4283,21 @@ void seq_refresh_display_play_status()
}
}
void arp_refresh_display_play_status ( )
{
lcd . setCursor ( 12 , 0 ) ;
if ( seq_running = = false )
{
lcd . print ( " PLY " ) ;
} else if ( seq_running = = true )
{
seq_note_in = 0 ;
lcd . print ( " STP " ) ;
}
}
void UI_func_sequencer ( uint8_t param )
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********
@ -4759,9 +4774,173 @@ void UI_func_sequencer(uint8_t param)
}
}
void UI_func_seq_pat_chain ( uint8_t param )
void UI_func_arpeggio ( uint8_t param )
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********
{
encoderDir [ ENC_R ] . reset ( ) ;
seq_temp_active_menu = 0 ;
lcd . setCursor ( 0 , 0 ) ;
lcd . print ( " Oct " ) ;
lcd . setCursor ( 0 , 1 ) ;
lcd . print ( " Style " ) ;
lcd . setCursor ( 7 , 0 ) ;
lcd . print ( " Maj " ) ;
lcd . setCursor ( 11 , 1 ) ;
lcd . print ( " 1/16 " ) ;
arp_refresh_display_play_status ( ) ;
}
if ( LCDML . FUNC_loop ( ) ) // ****** LOOP *********
{
if ( ( LCDML . BT_checkDown ( ) & & encoderDir [ ENC_R ] . Down ( ) ) | | ( LCDML . BT_checkUp ( ) & & encoderDir [ ENC_R ] . Up ( ) ) | | ( LCDML . BT_checkEnter ( ) & & encoderDir [ ENC_R ] . ButtonShort ( ) ) )
{
if ( seq_temp_active_menu = = 0 )
{
if ( LCDML . BT_checkDown ( ) )
seq_temp_select_menu = constrain ( seq_temp_select_menu + ENCODER [ ENC_R ] . speed ( ) , 0 , 3 ) ;
else if ( LCDML . BT_checkUp ( ) )
seq_temp_select_menu = constrain ( seq_temp_select_menu - ENCODER [ ENC_R ] . speed ( ) , 0 , 3 ) ;
} else if ( seq_temp_active_menu = = 1 ) // Octave setting
{
if ( LCDML . BT_checkDown ( ) )
arp_oct_usersetting = constrain ( arp_oct_usersetting + ENCODER [ ENC_R ] . speed ( ) , 0 , 3 ) ;
else if ( LCDML . BT_checkUp ( ) )
arp_oct_usersetting = constrain ( arp_oct_usersetting - ENCODER [ ENC_R ] . speed ( ) , 0 , 3 ) ;
}
else if ( seq_temp_active_menu = = 2 ) // Style setting
{
if ( LCDML . BT_checkDown ( ) )
arp_style = constrain ( arp_style + ENCODER [ ENC_R ] . speed ( ) , 0 , 3 ) ;
else if ( LCDML . BT_checkUp ( ) )
arp_style = constrain ( arp_style - ENCODER [ ENC_R ] . speed ( ) , 0 , 3 ) ;
}
else if ( seq_temp_active_menu = = 3 ) // Arp Speed setting
{
if ( LCDML . BT_checkDown ( ) )
arp_speed = constrain ( arp_speed + ENCODER [ ENC_R ] . speed ( ) , 0 , 1 ) ;
else if ( LCDML . BT_checkUp ( ) )
arp_speed = constrain ( arp_speed - ENCODER [ ENC_R ] . speed ( ) , 0 , 1 ) ;
}
if ( LCDML . BT_checkEnter ( ) ) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
{
if ( seq_temp_select_menu = = 0 & & seq_temp_active_menu = = 0 )
{
seq_temp_active_menu = 1 ;
}
else if ( seq_temp_select_menu = = 0 & & seq_temp_active_menu = = 1 )
{
seq_temp_active_menu = 0 ;
}
if ( seq_temp_select_menu = = 1 & & seq_temp_active_menu = = 0 )
{
seq_temp_active_menu = 2 ;
}
else if ( seq_temp_select_menu = = 1 & & seq_temp_active_menu = = 2 )
{
seq_temp_active_menu = 0 ;
}
else if ( seq_temp_select_menu = = 2 & & seq_temp_active_menu = = 0 )
{
seq_running = ! seq_running ;
arp_refresh_display_play_status ( ) ;
MicroDexed [ 0 ] - > panic ( ) ;
seq_step = 0 ;
arp_octave = 0 ;
arp_step = 0 ;
seq_chain_active_step = 0 ;
}
else if ( seq_temp_select_menu = = 3 & & seq_temp_active_menu = = 0 )
{
seq_temp_active_menu = 3 ;
}
else if ( seq_temp_select_menu = = 3 & & seq_temp_active_menu = = 3 )
{
seq_temp_active_menu = 0 ;
}
}
}
lcd . setCursor ( 4 , 0 ) ;
lcd . print ( arp_oct_usersetting ) ;
lcd . setCursor ( 6 , 1 ) ;
lcd . print ( arp_style_names [ arp_style ] [ 0 ] ) ;
lcd . print ( arp_style_names [ arp_style ] [ 1 ] ) ;
lcd . print ( arp_style_names [ arp_style ] [ 2 ] ) ;
lcd . setCursor ( 11 , 1 ) ;
if ( arp_speed = = 0 ) lcd . print ( " 1/16 " ) ; else if ( arp_speed = = 1 ) lcd . print ( " 1/8 " ) ;
if ( seq_temp_select_menu = = 0 ) {
lcd . setCursor ( 11 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 5 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 9 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 3 , 0 ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( 5 , 0 ) ;
lcd . print ( " ] " ) ;
lcd . setCursor ( 10 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 15 , 1 ) ;
lcd . print ( " " ) ;
}
else if ( seq_temp_select_menu = = 1 )
{
lcd . setCursor ( 11 , 0 ) ;
lcd . print ( " " ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 3 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 5 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 5 , 1 ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( 9 , 1 ) ;
lcd . print ( " ] " ) ;
}
else if ( seq_temp_select_menu = = 2 )
{
lcd . setCursor ( 5 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 9 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 11 , 0 ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " ] " ) ;
lcd . setCursor ( 10 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 15 , 1 ) ;
lcd . print ( " " ) ;
}
else if ( seq_temp_select_menu = = 3 )
{
lcd . setCursor ( 11 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 10 , 1 ) ;
lcd . print ( " [ " ) ;
lcd . setCursor ( 15 , 1 ) ;
lcd . print ( " ] " ) ;
lcd . setCursor ( 3 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 5 , 0 ) ;
lcd . print ( " " ) ;
}
}
if ( LCDML . FUNC_close ( ) ) // ****** STABLE END *********
{
encoderDir [ ENC_R ] . reset ( ) ;
}
}
void UI_func_seq_pat_chain ( uint8_t param )
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********
{
// setup function
@ -4793,7 +4972,6 @@ void UI_func_seq_pat_chain(uint8_t param)
lcd . setCursor ( 8 , 1 ) ;
lcd . print ( seq_patternchain [ seq_chain_active_chainstep ] [ 3 ] ) ;
}
if ( LCDML . FUNC_loop ( ) ) // ****** LOOP *********
{
if ( seq_temp_active_menu = = 99 ) {
@ -4951,7 +5129,6 @@ void UI_func_seq_pat_chain(uint8_t param)
void UI_func_seq_track_setup ( uint8_t param )
{
if ( LCDML . FUNC_setup ( ) ) // ****** SETUP *********
{
// setup function
@ -4965,13 +5142,13 @@ void UI_func_seq_track_setup(uint8_t param)
lcd . setCursor ( 9 , 1 ) ;
lcd . print ( " T4 " ) ;
lcd . setCursor ( 3 , 0 ) ;
if ( seq_track_type [ 0 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 0 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 0 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 0 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
lcd . setCursor ( 3 , 1 ) ;
if ( seq_track_type [ 1 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 1 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 1 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 1 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
lcd . setCursor ( 12 , 0 ) ;
if ( seq_track_type [ 2 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 2 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 2 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 2 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
lcd . setCursor ( 12 , 1 ) ;
if ( seq_track_type [ 3 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 3 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 3 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 3 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
}
if ( LCDML . FUNC_loop ( ) ) // ****** LOOP *********
{
@ -4987,9 +5164,9 @@ void UI_func_seq_track_setup(uint8_t param)
if ( ( LCDML . BT_checkDown ( ) & & encoderDir [ ENC_R ] . Down ( ) ) | | ( LCDML . BT_checkUp ( ) & & encoderDir [ ENC_R ] . Up ( ) ) )
{
if ( LCDML . BT_checkDown ( ) )
seq_track_type [ seq_temp_active_menu ] = constrain ( seq_track_type [ seq_temp_active_menu ] + 1 , 0 , 1 ) ;
seq_track_type [ seq_temp_active_menu ] = constrain ( seq_track_type [ seq_temp_active_menu ] + 1 , 0 , 3 ) ;
else if ( LCDML . BT_checkUp ( ) )
seq_track_type [ seq_temp_active_menu ] = constrain ( seq_track_type [ seq_temp_active_menu ] - 1 , 0 , 1 ) ;
seq_track_type [ seq_temp_active_menu ] = constrain ( seq_track_type [ seq_temp_active_menu ] - 1 , 0 , 3 ) ;
}
}
if ( LCDML . BT_checkEnter ( ) ) //handle button presses during menu >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@ -5012,7 +5189,7 @@ void UI_func_seq_track_setup(uint8_t param)
lcd . setCursor ( 6 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 3 , 0 ) ;
if ( seq_track_type [ 0 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 0 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 0 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 0 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
} else if ( seq_temp_select_menu = = 1 )
{
lcd . setCursor ( 2 , 0 ) ;
@ -5028,7 +5205,7 @@ void UI_func_seq_track_setup(uint8_t param)
lcd . setCursor ( 15 , 0 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 3 , 1 ) ;
if ( seq_track_type [ 1 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 1 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 1 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 1 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
} else if ( seq_temp_select_menu = = 2 )
{
lcd . setCursor ( 2 , 1 ) ;
@ -5044,7 +5221,7 @@ void UI_func_seq_track_setup(uint8_t param)
lcd . setCursor ( 15 , 1 ) ;
lcd . print ( " " ) ;
lcd . setCursor ( 12 , 0 ) ;
if ( seq_track_type [ 2 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 2 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 2 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 2 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
} else if ( seq_temp_select_menu = = 3 )
{
lcd . setCursor ( 11 , 0 ) ;
@ -5056,7 +5233,7 @@ void UI_func_seq_track_setup(uint8_t param)
lcd . setCursor ( 15 , 1 ) ;
lcd . print ( " ] " ) ;
lcd . setCursor ( 12 , 1 ) ;
if ( seq_track_type [ 3 ] = = 0 ) lcd . print ( " Drm " ) ; else lcd . print ( " Ins " ) ;
if ( seq_track_type [ 3 ] = = 0 ) lcd . print ( " Drm " ) ; else if ( seq_track_type [ 3 ] = = 1 ) lcd . print ( " Ins " ) ; else if ( seq_track_type [ 3 ] = = 2 ) lcd . print ( " Chd " ) ; else lcd . print ( " Arp " ) ;
}
}
if ( LCDML . FUNC_close ( ) ) // ****** STABLE END *********
@ -5065,7 +5242,6 @@ void UI_func_seq_track_setup(uint8_t param)
}
}
void UI_func_seq_pattern_load ( uint8_t param )
{
static uint8_t mode ;
@ -5134,7 +5310,7 @@ void UI_func_seq_pattern_save(uint8_t param)
{
char tmp [ FILENAME_LEN ] ;
yesno = false ;
temp_int = 0 ;
temp_int = 0 ;
mode = 0 ;
encoderDir [ ENC_R ] . reset ( ) ;
lcd . setCursor ( 0 , 0 ) ;
@ -7357,7 +7533,7 @@ void UI_func_eq_treble(uint8_t param)
}
}
lcd_display_meter_float ( " EQ Treble " , configuration . fx . eq_treble , 0.1 , 0.0 , EQ_TREBLE_MIN , EQ_TREBLE_MAX , 1 , 1 , false , true , true ) ;
sgtl5000_1 . eqBand ( 4 , mapfloat ( configuration . fx . eq_treble , EQ_TREBLE_MIN , EQ_TREBLE_MAX , - 1.0 , 1.0 ) ) ;
sgtl5000_1 . eqBand ( 4 , mapfloat ( configuration . fx . eq_treble , EQ_TREBLE_MIN , EQ_TREBLE_MAX , - 1.0 , 1.0 ) ) ;
}
if ( LCDML . FUNC_close ( ) ) // ****** STABLE END *********