@ -738,7 +738,6 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
Serial . println ( F ( " BREATH CC " ) ) ;
Serial . println ( F ( " BREATH CC " ) ) ;
# endif
# endif
MicroDexed [ instance_id ] - > controllers . breath_cc = inValue ;
MicroDexed [ instance_id ] - > controllers . breath_cc = inValue ;
//MicroDexed[instance_id]->controllers.breath_cc = 100 – BCrange + Output * BCrange * Bcvalue/100
MicroDexed [ instance_id ] - > controllers . refresh ( ) ;
MicroDexed [ instance_id ] - > controllers . refresh ( ) ;
break ;
break ;
case 4 :
case 4 :
@ -810,7 +809,36 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
LCDML . loop_menu ( ) ;
LCDML . loop_menu ( ) ;
}
}
break ;
break ;
case 94 : // CC 94: (de)tune
configuration . dexed [ selected_instance_id ] . tune = map ( inValue , 0 , 0x7f , TUNE_MIN , TUNE_MAX ) ;
MicroDexed [ selected_instance_id ] - > controllers . masterTune = ( int ( ( configuration . dexed [ selected_instance_id ] . tune - 100 ) / 100.0 * 0x4000 ) < < 11 ) * ( 1.0 / 12 ) ;
MicroDexed [ selected_instance_id ] - > doRefreshVoice ( ) ;
if ( LCDML . FUNC_getID ( ) = = LCDML . OTHER_getIDFromFunction ( UI_func_tune ) )
{
LCDML . OTHER_updateFunc ( ) ;
LCDML . loop_menu ( ) ;
}
break ;
# if defined(USE_FX)
# if defined(USE_FX)
case 91 : // CC 91: reverb send
configuration . fx . reverb_send [ selected_instance_id ] = map ( inValue , 0 , 0x7f , REVERB_SEND_MIN , REVERB_SEND_MAX ) ;
reverb_mixer_r . gain ( selected_instance_id , pseudo_log_curve ( mapfloat ( configuration . fx . reverb_send [ selected_instance_id ] , REVERB_SEND_MIN , REVERB_SEND_MAX , 0.0 , 1.0 ) ) ) ;
reverb_mixer_l . gain ( selected_instance_id , pseudo_log_curve ( mapfloat ( configuration . fx . reverb_send [ selected_instance_id ] , REVERB_SEND_MIN , REVERB_SEND_MAX , 0.0 , 1.0 ) ) ) ;
if ( LCDML . FUNC_getID ( ) = = LCDML . OTHER_getIDFromFunction ( UI_func_reverb_send ) )
{
LCDML . OTHER_updateFunc ( ) ;
LCDML . loop_menu ( ) ;
}
break ;
case 93 : // CC 93: chorus level
configuration . fx . chorus_level [ selected_instance_id ] = map ( inValue , 0 , 0x7f , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX ) ;
chorus_mixer [ selected_instance_id ] - > gain ( 1 , mapfloat ( configuration . fx . chorus_level [ selected_instance_id ] , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 0.5 ) ) ;
if ( LCDML . FUNC_getID ( ) = = LCDML . OTHER_getIDFromFunction ( UI_func_chorus_level ) )
{
LCDML . OTHER_updateFunc ( ) ;
LCDML . loop_menu ( ) ;
}
break ;
case 103 : // CC 103: filter resonance
case 103 : // CC 103: filter resonance
configuration . fx . filter_resonance [ instance_id ] = map ( inValue , 0 , 0x7f , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX ) ;
configuration . fx . filter_resonance [ instance_id ] = map ( inValue , 0 , 0x7f , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX ) ;
MicroDexed [ instance_id ] - > fx . Reso = mapfloat ( configuration . fx . filter_resonance [ instance_id ] , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX , 1.0 , 0.0 ) ;
MicroDexed [ instance_id ] - > fx . Reso = mapfloat ( configuration . fx . filter_resonance [ instance_id ] , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX , 1.0 , 0.0 ) ;
@ -837,6 +865,7 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
LCDML . OTHER_updateFunc ( ) ;
LCDML . OTHER_updateFunc ( ) ;
LCDML . loop_menu ( ) ;
LCDML . loop_menu ( ) ;
}
}
break ;
case 106 : // CC 106: delay feedback
case 106 : // CC 106: delay feedback
configuration . fx . delay_feedback [ instance_id ] = map ( inValue , 0 , 0x7f , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX ) ;
configuration . fx . delay_feedback [ instance_id ] = map ( inValue , 0 , 0x7f , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX ) ;
delay_fb_mixer [ instance_id ] - > gain ( 1 , pseudo_log_curve ( mapfloat ( configuration . fx . delay_feedback [ instance_id ] , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ) ; // amount of feedback
delay_fb_mixer [ instance_id ] - > gain ( 1 , pseudo_log_curve ( mapfloat ( configuration . fx . delay_feedback [ instance_id ] , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ) ; // amount of feedback
@ -1432,6 +1461,9 @@ void init_MIDI_send_CC(void)
{
{
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 7 , configuration . dexed [ selected_instance_id ] . sound_intensity ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 7 , configuration . dexed [ selected_instance_id ] . sound_intensity ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 10 , configuration . dexed [ selected_instance_id ] . pan ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 10 , configuration . dexed [ selected_instance_id ] . pan ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 91 , configuration . fx . reverb_send [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 93 , configuration . fx . chorus_level [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 94 , configuration . dexed [ selected_instance_id ] . tune ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 103 , configuration . fx . filter_resonance [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 103 , configuration . fx . filter_resonance [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 104 , configuration . fx . filter_cutoff [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 104 , configuration . fx . filter_cutoff [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 105 , configuration . fx . delay_time [ selected_instance_id ] ) ;
MD_sendControlChange ( configuration . dexed [ selected_instance_id ] . midi_channel , 105 , configuration . fx . delay_time [ selected_instance_id ] ) ;