int key_forward()
{
  if (key_shifts & KB_CTRL_FLAG || index_false_control==1)
           {
           if(index_go==0 && index_go_back==0 && index_pause==0)
           {
           position_onstage=position_preset;
           }
            else {index_go=0;index_pause=0; index_go_back=0;}
           refresh_mem_onstage(position_onstage);
           detect_mem_before_one();
           detect_mem_preset();
           refresh_mem_onpreset(position_preset);
           niveauX1=255; niveauX2=0;
           refresh_banger_wx();
           refresh_integrated_gridplayer1();
           reset_modified_levels_in_crossfade();
           }
           else if (key_shifts & KB_SHIFT_FLAG || index_false_shift==1)
           {
           index_go=0;index_pause=0; index_go_back=0;
           detect_next_preset();
           refresh_mem_onpreset(position_preset);
           niveauX2=0;
           }
           strcpy(string_time_left_is,"");
           someone_changed_in_sequences=1;//icat
 return(0);
}
int arduino_do_analog_in_whitecat()
{
int vfader=0;
int temp_ardniveauX1=0; 
int temp_ardniveauX2=0;

for(int p=0;p<arduino_max_analog;p++)
{
if(analog_data_from_arduino[p]!=previous_analog_data_from_arduino[p])
{
switch(arduino_analog_function_input[p])
{
case 1://affectation à un fader

vfader=arduino_analog_attribution_input[p];
Fader[vfader]=analog_data_from_arduino[p];  
midi_levels[vfader]=(Fader[vfader]/2);
index_fader_is_manipulated[vfader]=1; 
if(midi_send_out[vfader]==1){ index_send_midi_out[vfader]=1;}
if(lfo_mode_is[vfader]==1 || lfo_mode_is[vfader]==2 || lfo_cycle_is_on[vfader]==1)
{
lfo_mode_is[vfader]=0; lfo_mode_is[vfader]=0; lfo_cycle_is_on[vfader]=0;                           
}
break;
case 2://affectation au speed d un fader
vfader=arduino_analog_attribution_input[p];
lfo_speed[vfader]=analog_data_from_arduino[p]/2;
if(lfo_speed[vfader]<0){lfo_speed[vfader]=0;}
if(lfo_speed[vfader]>127){lfo_speed[vfader]=127;}
midi_levels[196+vfader]=lfo_speed[vfader];
index_send_midi_out[196+vfader]=1;
break;
case 3://grand master
//NIVEAU
if(index_allow_grand_master==1)
{
niveauGMaster=analog_data_from_arduino[p];  
midi_levels[615]=(niveauGMaster/2);
if(midi_send_out[615]==1){ index_send_midi_out[615]=1;}     
}
break;

case 4://sequenciel : Val 1 stage  Val 2 preset Val 3 speed 

if(arduino_analog_attribution_input[p]==0 || arduino_analog_attribution_input[p]==1 )//traitement du crossfade manuel 
{
// stage
if(arduino_analog_attribution_input[p]==0 )
{
temp_ardniveauX1=analog_data_from_arduino[p];     
if(index_get_back_faders_need_to_be_done==0)
{
index_go=0; index_go_back=0; index_pause=0;
niveauX1=analog_data_from_arduino[p];    
midi_levels[491]=niveauX1/2;
if(midi_send_out[491]==1){index_send_midi_out[491]=1;}      
}
}
// preset
if(arduino_analog_attribution_input[p]==1 ) 
{
temp_ardniveauX2=255-analog_data_from_arduino[p];
if(index_get_back_faders_need_to_be_done==0)
{
index_go=0; index_go_back=0; index_pause=0;
niveauX2=255-analog_data_from_arduino[p];   
midi_levels[492]=analog_data_from_arduino[p]/2;//inversion faite dans le midi
if(midi_send_out[492]==1){index_send_midi_out[492]=1;}        
}
}

//remise à jour du crossfade
if(temp_ardniveauX1==0 && temp_ardniveauX2==255)
{
index_go=0; index_go_back=0; index_pause=0;
next_mem_crossfade_finished(position_preset);
index_x1_x2_together=1;
index_get_back_faders_need_to_be_done=1;
refresh_integrated_gridplayer1();
}
if(temp_ardniveauX1==255 && temp_ardniveauX2==0)
{
index_get_back_faders_need_to_be_done=0;            
}
}
// speed
if(arduino_analog_attribution_input[p]==2)
{
crossfade_speed=analog_data_from_arduino[p]/2;
//if(midi_send_out[493]==1){index_send_midi_out[493]=1;}  
prepare_crossfade();
//ventilation_temps_vers_char();//icat
someone_changed_in_time_sequences=1;//icat
}
break;
case 5://MIDI CH0
simulate_midi(4,0,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 6://MIDI CH1
simulate_midi(4,1,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 7://MIDI CH2
simulate_midi(4,2,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 8://MIDI CH3
simulate_midi(4,3,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 9://MIDI CH4
simulate_midi(4,4,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 10://MIDI CH5
simulate_midi(4,5,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 11://MIDI CH6
simulate_midi(4,6,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 12://MIDI CH7
simulate_midi(4,7,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 13://MIDI CH8
simulate_midi(4,8,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 14://MIDI CH9
simulate_midi(4,9,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 15://MIDI CH10
simulate_midi(4,10,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 16://MIDI CH11
simulate_midi(4,11,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 17://MIDI CH12
simulate_midi(4,12,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 18://MIDI CH13
simulate_midi(4,13,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 19://MIDI CH14
simulate_midi(4,14,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
case 20://MIDI CH15
simulate_midi(4,15,arduino_digital_function_input[p][1],analog_data_from_arduino[p]/2);
sprintf (my_midi_string, "Arduino Chan:%-2d Pitch:%-2d Vel:%-2d Typ: %s",	ischan,ispitch,isvel, "Ctrl-Chge");      
break;
default:
break;

}

}
previous_analog_data_from_arduino[p]=analog_data_from_arduino[p];
//mise en boite des datas

} 

return(0);
}
int do_logical_Sequenciel_Window(int xseq, int yseq,int largeur_seq,int hauteur_seq)
{

do_logical_refresh_vision_memories(xseq,yseq);
do_logical_x1_x2(xseq,yseq-25);

////////////////////MENUS///////////////////////////////////////////////////////
//options hautes

///alink
if(mouse_x>xseq+180 && mouse_x<xseq+180+35 && mouse_y>yseq+50 && mouse_y<yseq+50+15)
{
if(index_link_is_on==0){index_link_is_on=1;}
else if(index_link_is_on==1){index_link_is_on=0;}
mouse_released=1;
}

///banger
if(mouse_x>xseq+223 && mouse_x<xseq+263 && mouse_y>yseq+50 && mouse_y<yseq+50+15)
{
index_banger_is_on=toggle(index_banger_is_on);
mouse_released=1;
}

//grid player 1 embeded
if(mouse_x>xseq+275 && mouse_x<xseq+275+30 && mouse_y>yseq+50 && mouse_y<yseq+50+15 )
{
show_gridplayer_in_seq=toggle(show_gridplayer_in_seq);
mouse_released=1;
}



/////menus bas
int rangee_y= yseq+180+(35*(nbre_memoires_visualisables_en_preset+1));
int index_atoi=0;
for (int op=0;op<7;op++)
{
///actions mouse
if(mouse_x>xseq+20+(op*60) && mouse_x<xseq+20+(op*60)+50 && mouse_y>rangee_y && mouse_y<rangee_y+20)
{
switch(op)
{
case 0:         //create
if( Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(768,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{
reset_indexs_confirmation();
index_do_create_mem=1;
index_ask_confirm=1;
}
break;
case 1://delete mem
if( Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(769,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{
reset_indexs_confirmation();
index_do_delete_mem=1;
index_ask_confirm=1;
}
break;
case 2://stage minus
if(  Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(770,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{
    if(index_go==0 && index_go_back==0 && index_pause==0)
           {
           position_onstage=mem_before_one;
           }
           else {index_go=0;index_pause=0; index_go_back=0;}

refresh_mem_onstage(position_onstage);
detect_mem_before_one();
detect_mem_preset();
refresh_mem_onpreset(position_preset);
niveauX1=255; niveauX2=0;
refresh_banger_wx();
refresh_integrated_gridplayer1();
}
break;
case 3://stage +
if(  Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(771,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{

 if(index_go==0 && index_go_back==0 && index_pause==0)
           {
           position_onstage=position_preset;
           }
            else {index_go=0;index_pause=0; index_go_back=0;}

refresh_mem_onstage(position_onstage);
detect_mem_before_one();
detect_mem_preset();
refresh_mem_onpreset(position_preset);
niveauX1=255; niveauX2=0;
refresh_banger_wx();
refresh_integrated_gridplayer1();
}
break;
case 4://preset -
if(Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(772,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{
index_go=0;index_pause=0; index_go_back=0;
detect_mem_preset_previous();
refresh_mem_onpreset(position_preset);
niveauX2=0;
}
break;
case 5://preset +
if( Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(773,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{
index_go=0;index_pause=0; index_go_back=0;
detect_next_preset();
refresh_mem_onpreset(position_preset);
niveauX2=0;
}
break;
case 6://goto
if( Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(1645,Midi_Faders_Affectation_Mode);
mouse_released=1;
}
else
{
if(numeric_postext>0)
{
index_atoi=(int)(atof(numeric)*10);
if(MemoiresExistantes[index_atoi]==1)
{
position_preset=index_atoi;
refresh_mem_onpreset(position_preset);
reset_numeric_entry();
numeric_postext=0;
}
}
}
break;

default:
break;
}//fin des switch
mouse_released=1;
}
}

//grid player 1 embarqué
if(show_gridplayer_in_seq==1)
{

//UP DOWN griders number selected

if(mouse_x>xseq+880-12 && mouse_x<xseq+880+12 && mouse_y>yseq+40-12 && mouse_y<yseq+40+12)
{

if(mouse_released==0)
{
if(Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(1476,Midi_Faders_Affectation_Mode);
}
else
{
if(index_grider_selected[0]>0)
{index_grider_selected[0]--;}
}
 mouse_released=1;
}
}


if( mouse_x>xseq+910-12 && mouse_x<xseq+910+12 && mouse_y>yseq+40-12 && mouse_y<yseq+40+12)
{

if( mouse_released==0)
{
if( Midi_Faders_Affectation_Type!=0)//config midi
{
attribute_midi_solo_affectation(1480,Midi_Faders_Affectation_Mode);
}
else
{
if(index_grider_selected[0]<127){index_grider_selected[0]++;}
}
mouse_released=1;
}
}

do_logical_TheStepBox(xseq+660,yseq+90,0);
do_logical_ThePlayCommands(xseq+760,yseq+90,0);
do_logical_TheGrid_commands(xseq+660,yseq+130,0);//pos x, posy y, num player

if(mouse_x>xseq+690 && mouse_x<xseq+690+105 && mouse_y>yseq+295 && mouse_y<yseq+295+15 && mouse_released==0)
{
if( Midi_Faders_Affectation_Type!=0)
{
 attribute_midi_solo_affectation(1540,Midi_Faders_Affectation_Mode);
}

else
{
index_link_speed_crossfade_to_gpl1=toggle(index_link_speed_crossfade_to_gpl1);
if(index_link_speed_crossfade_to_gpl1==1)
{  grid_crossfade_speed[0]=crossfade_speed;
   midi_levels[1508]=crossfade_speed;
}
}
mouse_released=1;
}
}


return(0);
}