@ -288,31 +288,58 @@ void handle_ui(void)
case UI_MAIN_FILTER_FRQ :
case UI_MAIN_FILTER_FRQ :
if ( enc [ i ] . read ( ) < = 0 )
if ( enc [ i ] . read ( ) < = 0 )
enc [ i ] . write ( 0 ) ;
enc [ i ] . write ( 0 ) ;
else if ( enc [ i ] . read ( ) > 100 )
else if ( enc [ i ] . read ( ) > ENC_FILTER_FRQ_STEPS )
enc [ i ] . write ( 100 ) ;
enc [ i ] . write ( ENC_FILTER_FRQ_STEPS ) ;
effect_filter_frq = map ( enc [ i ] . read ( ) , 0 , 100 , 0 , 20000 ) ;
effect_filter_frq = expf ( ( float ) map ( enc [ i ] . read ( ) , 0 , ENC_FILTER_FRQ_STEPS , 0 , 1024 ) / 150.0 ) * 10.0 + 80.0 ;
filter1 . frequency ( effect_filter_frq ) ;
filter1 . frequency ( effect_filter_frq ) ;
break ;
break ;
case UI_MAIN_FILTER_RES :
case UI_MAIN_FILTER_RES :
if ( enc [ i ] . read ( ) < = 0 )
if ( enc [ i ] . read ( ) < = 0 )
enc [ i ] . write ( 0 ) ;
enc [ i ] . write ( 0 ) ;
else if ( enc [ i ] . read ( ) > 100 )
else if ( enc [ i ] . read ( ) > ENC_FILTER_RES_STEPS )
enc [ i ] . write ( 100 ) ;
enc [ i ] . write ( ENC_FILTER_RES_STEPS ) ;
effect_filter_resonance = map ( enc [ i ] . read ( ) , 0 , 100 , 0.7 , 5.0 ) ;
effect_filter_resonance = enc [ i ] . read ( ) ;
filter1 . resonance ( effect_filter_resonance ) ;
filter1 . resonance ( mapfloat ( effect_filter_resonance , 0 , ENC_FILTER_RES_STEPS , 0.7 , 5.0 ) ) ;
break ;
break ;
case UI_MAIN_FILTER_OCT :
case UI_MAIN_FILTER_OCT :
if ( enc [ i ] . read ( ) < = 0 )
if ( enc [ i ] . read ( ) < = 0 )
enc [ i ] . write ( 0 ) ;
enc [ i ] . write ( 0 ) ;
else if ( enc [ i ] . read ( ) > 9 )
else if ( enc [ i ] . read ( ) > ENC_FILTER_OCT_STEPS )
enc [ i ] . write ( 100 ) ;
enc [ i ] . write ( ENC_FILTER_OCT_STEPS ) ;
effect_filter_octave = map ( enc [ i ] . read ( ) , 0 , 9 , 0.0 , 9.0 ) ;
effect_filter_octave = enc [ i ] . read ( ) ;
filter1 . octaveControl ( effect_filter_octave ) ;
filter1 . octaveControl ( mapfloat ( enc [ i ] . read ( ) , 0 , ENC_FILTER_OCT_STEPS , 0.0 , 7.0 ) ) ;
break ;
break ;
}
}
ui_show_effects_filter ( ) ;
ui_show_effects_filter ( ) ;
break ;
break ;
case UI_EFFECTS_DELAY :
case UI_EFFECTS_DELAY :
switch ( ui_main_state )
{
case UI_MAIN_DELAY_TIME :
if ( enc [ i ] . read ( ) < = 0 )
enc [ i ] . write ( 0 ) ;
else if ( enc [ i ] . read ( ) > ENC_DELAY_TIME_STEPS )
enc [ i ] . write ( ENC_DELAY_TIME_STEPS ) ;
effect_delay_time = enc [ i ] . read ( ) ; ;
delay1 . delay ( 0 , map ( effect_delay_feedback , 0 , ENC_DELAY_TIME_STEPS , 0 , DELAY_MAX_TIME ) ) ;
break ;
case UI_MAIN_DELAY_FEEDBACK :
if ( enc [ i ] . read ( ) < = 0 )
enc [ i ] . write ( 0 ) ;
else if ( enc [ i ] . read ( ) > ENC_DELAY_FB_STEPS )
enc [ i ] . write ( ENC_DELAY_FB_STEPS ) ;
effect_delay_feedback = enc [ i ] . read ( ) ;
mixer1 . gain ( 1 , mapfloat ( effect_delay_feedback , 0 , 99 , 0.0 , 1.0 ) ) ;
break ;
case UI_MAIN_DELAY_SYNC :
if ( enc [ i ] . read ( ) < = 0 )
enc [ i ] . write ( 0 ) ;
else if ( enc [ i ] . read ( ) > = 1 )
enc [ i ] . write ( 1 ) ;
effect_delay_sync = enc [ i ] . read ( ) ;
// Nothing to do here
break ;
}
ui_show_effects_delay ( ) ;
ui_show_effects_delay ( ) ;
break ;
break ;
}
}
@ -430,12 +457,12 @@ void ui_show_effects_filter(void)
lcd . show ( 0 , 0 , LCD_CHARS , " Filter " ) ;
lcd . show ( 0 , 0 , LCD_CHARS , " Filter " ) ;
lcd . show ( 0 , 7 , 2 , " F: " ) ;
lcd . show ( 0 , 7 , 2 , " F: " ) ;
lcd . show ( 1 , 0 , 4 , " Res: " ) ;
lcd . show ( 1 , 0 , 4 , " Res: " ) ;
lcd . show ( 1 , 9 , 4 , " Oct: " ) ;
lcd . show ( 1 , 8 , 4 , " Oct: " ) ;
}
}
lcd . show ( 0 , 10 , 4 , effect_filter_frq ) ;
lcd . show ( 0 , 10 , 3 , effect_filter_frq ) ;
lcd . show ( 1 , 5 , 3 , effect_filter_resonance ) ;
lcd . show ( 1 , 5 , 2 , map ( effect_filter_resonance , 0 , ENC_FILTER_RES_STEPS , 0 , 99 ) ) ;
lcd . show ( 1 , 14 , 1 , effect_filter_octave ) ;
lcd . show ( 1 , 13 , 2 , map ( effect_filter_octave , 0 , ENC_FILTER_OCT_STEPS , 0 , 80 ) ) ;
if ( ui_main_state = = UI_MAIN_FILTER_FRQ )
if ( ui_main_state = = UI_MAIN_FILTER_FRQ )
{
{
@ -451,22 +478,22 @@ void ui_show_effects_filter(void)
if ( ui_main_state = = UI_MAIN_FILTER_RES )
if ( ui_main_state = = UI_MAIN_FILTER_RES )
{
{
lcd . show ( 1 , 4 , 1 , " [ " ) ;
lcd . show ( 1 , 4 , 1 , " [ " ) ;
lcd . show ( 1 , 8 , 1 , " ] " ) ;
lcd . show ( 1 , 7 , 1 , " ] " ) ;
}
}
else
else
{
{
lcd . show ( 1 , 4 , 1 , " " ) ;
lcd . show ( 1 , 4 , 1 , " " ) ;
lcd . show ( 1 , 8 , 1 , " " ) ;
lcd . show ( 1 , 7 , 1 , " " ) ;
}
}
if ( ui_main_state = = UI_MAIN_FILTER_OCT )
if ( ui_main_state = = UI_MAIN_FILTER_OCT )
{
{
lcd . show ( 1 , 13 , 1 , " [ " ) ;
lcd . show ( 1 , 12 , 1 , " [ " ) ;
lcd . show ( 1 , 15 , 1 , " ] " ) ;
lcd . show ( 1 , 15 , 1 , " ] " ) ;
}
}
else
else
{
{
lcd . show ( 1 , 13 , 1 , " " ) ;
lcd . show ( 1 , 12 , 1 , " " ) ;
lcd . show ( 1 , 15 , 1 , " " ) ;
lcd . show ( 1 , 15 , 1 , " " ) ;
}
}
@ -485,8 +512,8 @@ void ui_show_effects_delay(void)
lcd . show ( 1 , 8 , 5 , " Sync: " ) ;
lcd . show ( 1 , 8 , 5 , " Sync: " ) ;
}
}
lcd . show ( 0 , 9 , 4 , effect_delay_time ) ;
lcd . show ( 0 , 9 , 4 , map ( effect_delay_time , 0 , ENC_DELAY_TIME_STEPS , 0 , 1200 ) ) ;
lcd . show ( 1 , 4 , 3 , effect_delay_feedback ) ;
lcd . show ( 1 , 4 , 2 , map ( effect_delay_feedback , 0 , ENC_DELAY_TIME_STEPS , 0 , 99 ) ) ;
lcd . show ( 1 , 14 , 1 , effect_delay_sync ) ;
lcd . show ( 1 , 14 , 1 , effect_delay_sync ) ;
if ( ui_main_state = = UI_MAIN_DELAY_TIME )
if ( ui_main_state = = UI_MAIN_DELAY_TIME )
@ -503,12 +530,12 @@ void ui_show_effects_delay(void)
if ( ui_main_state = = UI_MAIN_DELAY_FEEDBACK )
if ( ui_main_state = = UI_MAIN_DELAY_FEEDBACK )
{
{
lcd . show ( 1 , 3 , 1 , " [ " ) ;
lcd . show ( 1 , 3 , 1 , " [ " ) ;
lcd . show ( 1 , 7 , 1 , " ] " ) ;
lcd . show ( 1 , 6 , 1 , " ] " ) ;
}
}
else
else
{
{
lcd . show ( 1 , 3 , 1 , " " ) ;
lcd . show ( 1 , 3 , 1 , " " ) ;
lcd . show ( 1 , 7 , 1 , " " ) ;
lcd . show ( 1 , 6 , 1 , " " ) ;
}
}
if ( ui_main_state = = UI_MAIN_DELAY_SYNC )
if ( ui_main_state = = UI_MAIN_DELAY_SYNC )
@ -524,4 +551,10 @@ void ui_show_effects_delay(void)
ui_state = UI_EFFECTS_DELAY ;
ui_state = UI_EFFECTS_DELAY ;
}
}
float mapfloat ( long x , long in_min , long in_max , long out_min , long out_max )
{
return ( float ) ( x - in_min ) * ( out_max - out_min ) / ( float ) ( in_max - in_min ) + out_min ;
}
# endif
# endif