Exemplo n.º 1
0
void
RKR::jack_process_midievents (jack_midi_event_t *midievent)
{

  int i;
  int type = midievent->buffer[0]>>4;

  
 if((Tap_Bypass) && (Tap_Selection == 3) && (midievent->buffer[0] == 0xf8))
   {
    mtc_counter++;
    if (mtc_counter >= 24)
    {
      Tap_TempoSet=TapTempo();
      mtc_counter= 0;
    }

   } 



  if ((type == 8) || (type == 9))
    {
      int cmdnote = midievent->buffer[1];
      int cmdvelo = midievent->buffer[2];
      int cmdchan = midievent->buffer[0]&15;
      
      if((Tap_Bypass) && (Tap_Selection==1) && (type==9) && (cmdvelo != 0)) Tap_TempoSet = TapTempo();

      
      if (cmdchan == HarCh)
	{
	  for (i = 0; i < POLY; i++)
	    {
	      if ((type==9) && (cmdvelo != 0))
		{
		  if (note_active[i] == 0)
		    {
		      note_active[i] = 1;
		      rnote[i] = cmdnote;
		      gate[i] = 1;
		      RC->MiraChord ();
		      break;
		    }

		}


	      if ((type==9) && (cmdvelo == 0))
		{

		  if ((note_active[i]) && (rnote[i] == cmdnote))
		    {
		      note_active[i] = 0;
		      gate[i] = 0;
		      break;
		    }

		}

	      if (type==8)
		{

		  if ((note_active[i]) && (rnote[i] == cmdnote))
		    {
		      note_active[i] = 0;
		      gate[i] = 0;
		      break;
		    }

		}
	    }



	}


    }





  if (type == 12)
    {
      int cmdvalue= midievent->buffer[1];
      int cmdchan = midievent->buffer[0]&15;
      
      if (cmdchan == MidiCh)
	{
         if(!midi_table)
          {
	  if ((cmdvalue > 0)
	      && (cmdvalue < 61))
	    preset = cmdvalue;

          if (cmdvalue==81) if (Selected_Preset>1) preset = Selected_Preset-1;
          if (cmdvalue==82) if (Selected_Preset<60) preset = Selected_Preset+1;
          }
          else
            preset = cmdvalue;

	}


    }



  if (type == 11)
    {
      int cmdcontrol = midievent->buffer[1];
      int cmdvalue= midievent->buffer[2];
      int cmdchan = midievent->buffer[0]&15;
    
    
      if (cmdchan == MidiCh)
	{
	  if(RControl)
	    {
	      ControlGet = cmdcontrol;
	      return; 
	    } 
	
	
          if(MIDIway)
           {
             for(i=0; i<20;i++)
               {
                 if (XUserMIDI[cmdcontrol][i])
 	         process_midi_controller_events(XUserMIDI[cmdcontrol][i],cmdvalue);
                 else break;
               } 
           }
           else 
           process_midi_controller_events(cmdcontrol, cmdvalue);
	}
    }

};
Exemplo n.º 2
0
void
RKR::midievents()
{

  int i;
  snd_seq_event_t *midievent;
  midievent = NULL;
  snd_seq_event_input (midi_in, &midievent);
  if (midievent == NULL)
    return;
  if (midievent->type == 42)
    return;

  
   if((Tap_Bypass) && (Tap_Selection == 3) && (midievent->type == SND_SEQ_EVENT_CLOCK))
   {
    mtc_counter++;
    if (mtc_counter >= 24)
    {
      Tap_TempoSet=TapTempo();
      mtc_counter= 0;
    }

   } 

   if((Looper_Bypass) && (Tap_Selection==3))
     {
       if (midievent->type == SND_SEQ_EVENT_START)
          {
           efx_Looper->changepar(1,1);
           stecla=5;
          }
            
       if (midievent->type == SND_SEQ_EVENT_STOP)
          {
           efx_Looper->changepar(2,1);
           stecla=5;
          }
            
     }

  if ((midievent->type == SND_SEQ_EVENT_NOTEON)
      || (midievent->type == SND_SEQ_EVENT_NOTEOFF))
    {
      int cmdnote = midievent->data.note.note;
      int cmdvelo = midievent->data.note.velocity;

      if((Tap_Bypass) && (Tap_Selection == 1) && (midievent->type == SND_SEQ_EVENT_NOTEON) && (cmdvelo != 0))
      Tap_TempoSet=TapTempo();                  
	

      if (midievent->data.note.channel == HarCh)
	{
	  for (i = 0; i < POLY; i++)
	    {
	      if ((midievent->type == SND_SEQ_EVENT_NOTEON) && (cmdvelo != 0))
		{
          	  if (note_active[i] == 0)
		    {
		      note_active[i] = 1;
		      rnote[i] = cmdnote;
		      gate[i] = 1;
		      RC->MiraChord ();
		      break;
		    }

		}


	      if ((midievent->type == SND_SEQ_EVENT_NOTEON) && (cmdvelo == 0))
		{

		  if ((note_active[i]) && (rnote[i] == cmdnote))
		    {
		      note_active[i] = 0;
		      gate[i] = 0;
		      break;
		    }

		}


	      if (midievent->type == SND_SEQ_EVENT_NOTEOFF)
		{

		  if ((note_active[i]) && (rnote[i] == cmdnote))
		    {
		      note_active[i] = 0;
		      gate[i] = 0;
		      break;
		    }

		}
	    }



	}


    }





  if (midievent->type == SND_SEQ_EVENT_PGMCHANGE)
    {

      if (midievent->data.control.channel == MidiCh)
	{

       if(!midi_table)
        {
	  if ((midievent->data.control.value > 0)
	      && (midievent->data.control.value < 61))
	    preset = midievent->data.control.value;

          if (midievent->data.control.value == 81)
          if (Selected_Preset >1) preset = Selected_Preset-1;
        
          if (midievent->data.control.value == 82)
          if (Selected_Preset<60) preset = Selected_Preset+1;
         }  	   
        else 
          preset = midievent->data.control.value;

	}
    }



  if (midievent->type == SND_SEQ_EVENT_CONTROLLER)
    {
      if (midievent->data.control.channel == MidiCh)
	{

           if(RControl)
	    {
	      ControlGet = (int)midievent->data.control.param;
	      return; 
	    } 
	
          if(MIDIway)
           {
             for(i=0; i<20;i++)
               {
                 if (XUserMIDI[(int)midievent->data.control.param][i])
 	         process_midi_controller_events(XUserMIDI[(int)midievent->data.control.param][i],
					 (int)midievent->data.control.value);
                 else break;
               } 
           }
           else 
	  process_midi_controller_events((int)midievent->data.control.param,
					 (int)midievent->data.control.value);


	}

    }



};
int Time_Window(int xtime, int ytime, int timerayon)
{

//background window
Rect TimeWindow(Vec2D (xtime, ytime ), Vec2D ( 370,300));
TimeWindow.SetRoundness(15);
TimeWindow.SetLineWidth(triple_epaisseur_ligne_fader);
TimeWindow.Draw(CouleurFond);
if(window_focus_id==908)
{
TimeWindow.DrawOutline(CouleurFader);
}
else
{
TimeWindow.DrawOutline(CouleurLigne);
}
/////////////////////////////////////////////////////////////////////////////////
Circle monTrajetTime0( Vec2D(xtime+150, ytime+150), 115);
 monTrajetTime0.SetLineWidth(epaisseur_ligne_fader);
 monTrajetTime0.DrawOutline( CouleurBleuProcedure);

Circle monTrajetTime2( Vec2D(xtime+150, ytime+150), 85);
 monTrajetTime2.SetLineWidth(epaisseur_ligne_fader);
 monTrajetTime2.Draw(CouleurBleuProcedure.WithAlpha(0.5));

 //AFFECTATION MIDI Fader

if( Midi_Faders_Affectation_Type!=0 && window_focus_id==W_TIME)
{
 if(mouse_x>xtime+150  && mouse_x< xtime+250 && mouse_y>ytime+150 && mouse_y<ytime+250 )
 {
 monTrajetTime0.DrawOutline(CouleurBlind);
 }
}

 if(show_im_recording_a_time==1)
 {
 monTrajetTime2.Draw(CouleurFader);
 }

 //affichage du pointeur de temps
 Circle monCurseurTime( Vec2D(position_curseur_time_x-4, position_curseur_time_y-4), 8 );
 monCurseurTime.SetLineWidth(epaisseur_ligne_fader);
 monCurseurTime.DrawOutline( CouleurBlind );


neuro.Print(ol::ToString(time_minutes), xtime+85, ytime+150);
neuro.Print("..",xtime+120,ytime+150);
neuro.Print(ol::ToString(time_secondes), xtime+130, ytime+150);
neuro.Print(".",xtime+170,ytime+150);
petitchiffre.Print(ol::ToString(time_centiemes), xtime+180, ytime+150);
petitchiffre.Print("1/100",xtime+190,ytime+135);

print_time_reperes(time_wheel_datatype_is);//affichage des chiffres sur le tableau de bord

///////////////////////CHOIX DE SELECTION ROUE= SECONDES ou MINUTES ou HEURES
Rect SetTimeWheelMode(Vec2D(xtime+120,ytime+80),Vec2D(60,20));
SetTimeWheelMode.SetRoundness(7.5);
SetTimeWheelMode.SetLineWidth(epaisseur_ligne_fader);

SetTimeWheelMode.DrawOutline(CouleurLigne);

if(  window_focus_id==W_TIME && mouse_x>xtime+120 && mouse_x<xtime+180 && mouse_y>ytime+80 && mouse_y<ytime+100)
{
if( Midi_Faders_Affectation_Type!=0)
{SetTimeWheelMode.DrawOutline(CouleurBlind); }
else {SetTimeWheelMode.Draw(CouleurSurvol);   }
}

Line(Vec2D(xtime+150,ytime+100),Vec2D(Vec2D(xtime+150,ytime+115))).Draw(CouleurLigne);
if(time_wheel_datatype_is==0)//minutes
{
Line(Vec2D(xtime+150,ytime+115),Vec2D(Vec2D(xtime+100,ytime+115))).Draw(CouleurLigne);
Line(Vec2D(xtime+100,ytime+115),Vec2D(Vec2D(xtime+100,ytime+120))).Draw(CouleurLigne);
petitchiffrerouge.Print("min",xtime+100,ytime+135);
petitchiffre.Print("MIN.",xtime+135,ytime+95);
}
if(time_wheel_datatype_is==1)//secondes
{
Line(Vec2D(xtime+150,ytime+115),Vec2D(Vec2D(xtime+160,ytime+115))).Draw(CouleurLigne);
Line(Vec2D(xtime+160,ytime+115),Vec2D(Vec2D(xtime+160,ytime+120))).Draw(CouleurLigne);
petitchiffrerouge.Print("sec",xtime+150,ytime+135);
petitchiffre.Print("SEC.",xtime+135,ytime+95);
}
if(time_wheel_datatype_is==2)//1/10
{
Line(Vec2D(xtime+150,ytime+115),Vec2D(Vec2D(xtime+200,ytime+115))).Draw(CouleurLigne);
Line(Vec2D(xtime+200,ytime+115),Vec2D(Vec2D(xtime+200,ytime+120))).Draw(CouleurLigne);
petitchiffrerouge.Print("1/100",xtime+190,ytime+135);
petitchiffre.Print("1/100",xtime+135,ytime+95);
}



//////////////////////////CHRONO//////////////////////////////////////////////////
Circle DoChrono( Vec2D(xtime+140, ytime+190), 15);
DoChrono.SetLineWidth(epaisseur_ligne_fader);
DoChrono.Draw(CouleurBleuProcedure.WithAlpha(0.4));

Circle ResetChrono( Vec2D(xtime+180, ytime+200), 8);
ResetChrono.SetLineWidth(epaisseur_ligne_fader);
ResetChrono.Draw(CouleurBleuProcedure.WithAlpha(0.4));

DoChrono.DrawOutline(CouleurBleuProcedure);
ResetChrono.DrawOutline(CouleurBleuProcedure);

if (index_play_chrono==1){DoChrono.Draw(CouleurFader); }
if(window_focus_id==W_TIME && mouse_x>xtime+125 && mouse_x<xtime+155 && mouse_y>ytime+175 && mouse_y<ytime+205)
{
if(Midi_Faders_Affectation_Type!=0)
{
DoChrono.DrawOutline(CouleurBlind);
}
else
{
DoChrono.Draw(CouleurSurvol);
}
}

if(window_focus_id==W_TIME && mouse_x>xtime+172 && mouse_x<xtime+188 && mouse_y>ytime+192 && mouse_y<ytime+208)
{
if(Midi_Faders_Affectation_Type!=0)
{
ResetChrono.DrawOutline(CouleurBlind);
}
else
{
ResetChrono.Draw(CouleurSurvol);
}
}

petitpetitchiffre.Print("CHRONO",xtime+90,ytime+190);
petitpetitchiffre.Print("clear",xtime+150,ytime+210);


///time
if (index_play_chrono==1)
{
DoChrono.DrawOutline(CouleurFader);
}
/////////////////////////CASES D' AFFECTATION AUX DOCK ET MEMOIRES
Rect SetTimeIn(Vec2D(xtime+300,ytime+20),Vec2D(50,30));
SetTimeIn.SetRoundness(7.5);
SetTimeIn.SetLineWidth(epaisseur_ligne_fader);

Rect SetTimeOut(Vec2D(xtime+300,ytime+70),Vec2D(50,30));
SetTimeOut.SetRoundness(7.5);
SetTimeOut.SetLineWidth(epaisseur_ligne_fader);

Rect SetTimeDIn(Vec2D(xtime+300,ytime+120),Vec2D(50,30));
SetTimeDIn.SetRoundness(7.5);
SetTimeDIn.SetLineWidth(epaisseur_ligne_fader);

Rect SetTimeDOut(Vec2D(xtime+300,ytime+170),Vec2D(50,30));
SetTimeDOut.SetRoundness(7.5);
SetTimeDOut.SetLineWidth(epaisseur_ligne_fader);


SetTimeIn.DrawOutline(CouleurLigne);
SetTimeOut.DrawOutline(CouleurLigne);
SetTimeDIn.DrawOutline(CouleurLigne);
SetTimeDOut.DrawOutline(CouleurLigne);


if(index_type_of_time_to_affect[0]==1)
{SetTimeDIn.Draw(CouleurFader);
SetTimeDIn.DrawOutline(CouleurFader);}
if(index_type_of_time_to_affect[1]==1)
{SetTimeIn.Draw(CouleurFader);
SetTimeIn.DrawOutline(CouleurFader);}
if(index_type_of_time_to_affect[2]==1)
{SetTimeDOut.Draw(CouleurFader);
SetTimeDOut.DrawOutline(CouleurFader);}
if(index_type_of_time_to_affect[3]==1)
{SetTimeOut.Draw(CouleurFader);
SetTimeOut.DrawOutline(CouleurFader);}


if( Midi_Faders_Affectation_Type!=0 && window_focus_id==W_TIME )
{
if(mouse_x>xtime+300 && mouse_x<xtime+350)
{
//DIN
if(mouse_y>ytime+120 && mouse_y<ytime+150)
{
SetTimeDIn.DrawOutline(CouleurBlind);
}
//IN
if(mouse_y>ytime+20 && mouse_y<ytime+50)
{
SetTimeIn.DrawOutline(CouleurBlind);
}
//DOUT
if(mouse_y>ytime+170 && mouse_y<ytime+200)
{
SetTimeDOut.DrawOutline(CouleurBlind);
}
//OUT
if(mouse_y>ytime+70 && mouse_y<ytime+100)
{
SetTimeOut.DrawOutline(CouleurBlind);
}
}
}


petitchiffre.Print("IN",xtime+320,ytime+40);
petitchiffre.Print("OUT",xtime+315,ytime+90);
petitchiffre.Print("D.IN",xtime+313,ytime+140);
petitchiffre.Print("D.OUT",xtime+305,ytime+190);

////////////TAP TEMPO/////////////////////////////////////////////////////////
Rect TapTempo(Vec2D(xtime+310,ytime+210),Vec2D(40,30));
TapTempo.SetRoundness(7.5);
TapTempo.SetLineWidth(demi_epaisseur_ligne_fader);
if(do_light_tap_tempo==1)
{
TapTempo.Draw(CouleurFader);
do_light_tap_tempo=0;
}
TapTempo.DrawOutline(CouleurLigne);
if(window_focus_id==W_TIME && mouse_x>xtime+310 && mouse_x<xtime+350 && mouse_y>ytime+210 && mouse_y<ytime+240)
{
TapTempo.DrawOutline(CouleurBlind);
}

Rect RecTempo(Vec2D(xtime+285,ytime+210),Vec2D(15,15));
RecTempo.SetRoundness(4);
if(index_recording_tap_tempo==1)
{RecTempo.Draw(CouleurBlind);}
RecTempo.DrawOutline(CouleurLigne);
if(window_focus_id==W_TIME && mouse_x>xtime+285 && mouse_x<xtime+300 && mouse_y>ytime+210 && mouse_y<ytime+225)
{
RecTempo.DrawOutline(CouleurBlind);
}
petitpetitchiffre.Print("R",xtime+288,ytime+220);
petitpetitchiffre.Print("Tempo",xtime+310,ytime+225);
petitpetitchiffre.Print(string_tap_tempo_average,xtime+260,ytime+252);
petitpetitchiffrerouge.Print(string_actual_tap_tempo,xtime+260,ytime+240);

Rect TapSend(Vec2D(xtime+265,ytime+210),Vec2D(15,15));
TapSend.SetRoundness(4);
if(do_light_send_tap==1)
{TapSend.Draw(CouleurFader);do_light_send_tap=0;}
TapSend.DrawOutline(CouleurLigne);
if(window_focus_id==W_TIME && mouse_x>xtime+265 && mouse_x<xtime+280 && mouse_y>ytime+210 && mouse_y<ytime+225  )
{
TapSend.DrawOutline(CouleurBlind);
}
petitpetitchiffre.Print("S",xtime+268,ytime+220);

///////////AFFECT TIME////////////////////////////////////////////////////////
Rect TimeAffect(Vec2D(xtime+280,ytime+260),Vec2D(70,30));
TimeAffect.SetRoundness(7.5);
TimeAffect.SetLineWidth(epaisseur_ligne_fader);

if(index_affect_time==1)
{
TimeAffect.Draw(CouleurFader);
TimeAffect.DrawOutline(CouleurFader);
}


if(window_focus_id==W_TIME && Midi_Faders_Affectation_Type!=0)
{
if(mouse_x>xtime+280 && mouse_x<xtime+350 && mouse_y>ytime+260 && mouse_y<ytime+290)
{
TimeAffect.DrawOutline(CouleurBlind);
}
}
petitchiffre.Print("AFFECT",xtime+290,ytime+280);
TimeAffect.DrawOutline(CouleurLigne);



///midi out
button_midi_out_visu( xtime+250, ytime+250,758);
//liaison visuelle au fader du cercle midi out
Line (Vec2D( xtime+231,ytime+231),Vec2D( xtime+245,ytime+245)).Draw(CouleurLigne);

return(0);
}