/* called when a split is crossed */
extern "C" __declspec(dllexport) void RunSplit(void *_pData, int _iDataSize)
{
	SPluginsKartSplit_t *psSplitData;

	psSplitData = (SPluginsKartSplit_t*)_pData;

	if (pBuf) UpdateSplit(psSplitData);
}
Exemplo n.º 2
0
void Global::Init()
{

  lastChangeValue = CHGT_PAGE;
  memset(tapTempo,0, sizeof(tapTempo));

  CurPage=0;

  Recorder.nb_Rec_Record = 0;
  Recorder.cur_Rec_Record = 0;
  Recorder.cur_Play_Record = 0;
  Recorder.mode_Record = RECORD_OFF;

  ParamGlo.Tempo = 100;
  ParamGlo.Groove = 0;

  ParamGlo.Active[MODE_SEQEUCLID]=0;
  ParamGlo.Active[MODE_SEQSTEP]=0;
  ParamGlo.Active[MODE_SEQTR]=0;
  ParamGlo.Active[MODE_ARPEGE]=1;

  ParamGlo.keyInput=0;
  ParamGlo.canInput=0;
  ParamGlo.Split=0;
  ParamGlo.LastNote=ParamGlo.LastLowerNote=ParamGlo.LastUpperNote=ParamGlo.NoteSplit=48;
  ParamGlo.UpperDest=NOUT_NONE;
  ParamGlo.UpperTrans=0;
  ParamGlo.LowerDest=NOUT_NONE;
  ParamGlo.LowerTrans=0;
  ParamGlo.LowerChan=1;
  ParamGlo.CVTrig=0;

  ParamGlo.ArpSrc=0;
  ParamGlo.EuSrc=0;
  ParamGlo.StSrc=0;
  ParamGlo.TrSrc=0;

  ParamGlo.ClockSrc=CLOCK_INT;
  ParamGlo.ClockDiv=1;

  ParamGlo.TrigInDir=1;

  ParamGlo.Bend=2;
  memset(ParamGlo.FINE_CV,0,sizeof(int16_t)*8);
  
  SClock.SetModeClock(ParamGlo.ClockSrc, ParamGlo.ClockDiv);

  for (int ct=0;ct<NB_ROUTES;ct++)
  {
    Routes[ct].Perim = PER_NONE;
    Routes[ct].Source = 0;
    Routes[ct].Chanel = 0;
    Routes[ct].MidiType = 0;
  }   

  UpdateSplit();
} 
Exemplo n.º 3
0
void  Global::Restore()
{
  MySD.ReadStream((byte *)Routes, sizeof(Routes) ) ;
  MySD.ReadStream((byte *)&ParamGlo, sizeof(ParamGlo) ) ;
  MySD.ReadStream((byte *)&Recorder, sizeof(Recorder) ) ;
  UpdateRoute(0);
  UpdateSplit();
  SClock.ChangeTempo();
}
Exemplo n.º 4
0
boolean Global::ChangeValue(int cpt, int value, byte Encoder)
{  
  boolean ret = false;
  int newValue;
  int pos;
  int offset;
  
  // cpt compte de 1 Ã  ...
  if (cpt >=16) cpt-=6;
  cpt++;

  switch (CurPage)
  {
  case 0 :
    switch(cpt)
    {
    case 2:
      newValue = encnewmap(value, 0, 2, ParamGlo.Active[MODE_SEQEUCLID] ,Encoder);
      if (newValue != ParamGlo.Active[MODE_SEQEUCLID] )
      {
        ParamGlo.Active[MODE_SEQEUCLID] = newValue;
        if (  ParamGlo.Active[MODE_SEQEUCLID] && is_played && !SeqEu.is_played ) SeqEu.ExStart(false);
        if (  !ParamGlo.Active[MODE_SEQEUCLID] && is_played && SeqEu.is_played ) SeqEu.ExStop();
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 3:
      newValue = encnewmap(value, 0, 2, ParamGlo.Active[MODE_SEQSTEP],Encoder);
      if (newValue != ParamGlo.Active[MODE_SEQSTEP] )
      {
        ParamGlo.Active[MODE_SEQSTEP] = newValue;
        if (  ParamGlo.Active[MODE_SEQSTEP] && is_played && !SeqSt.is_played ) SeqSt.ExStart(false);
        if (  !ParamGlo.Active[MODE_SEQSTEP] && is_played && SeqSt.is_played ) SeqSt.ExStop();
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 4:
      newValue = encnewmap(value, 0, 2, ParamGlo.Active[MODE_SEQTR]  ,Encoder);
      if (newValue != ParamGlo.Active[MODE_SEQTR] )
      {
        ParamGlo.Active[MODE_SEQTR] = newValue;
        if (  ParamGlo.Active[MODE_SEQTR] && is_played && !SeqTr.is_played ) SeqTr.ExStart(false);
        if (  !ParamGlo.Active[MODE_SEQTR] && is_played && SeqTr.is_played ) SeqTr.ExStop();
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 5:
      newValue = encnewmap(value, 0, 2, ParamGlo.Active[MODE_ARPEGE],Encoder);
      if (newValue != ParamGlo.Active[MODE_ARPEGE] )
      {
        ParamGlo.Active[MODE_ARPEGE] = newValue;
        if (  ParamGlo.Active[MODE_ARPEGE] && is_played && !Arp.is_played ) Arp.ExStart(false);
        if (  !ParamGlo.Active[MODE_ARPEGE] && is_played && Arp.is_played ) Arp.ExStop();
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 7:
      newValue = encnewmap(value, 0, 3, ParamGlo.EuSrc,Encoder);
      if (newValue != ParamGlo.EuSrc )
      {
        switch( ParamGlo.EuSrc )
        {
          case 0: LastOffset = ParamGlo.LastNote;break;
          case 1: LastOffset = ParamGlo.LastUpperNote;break;
          case 2: LastOffset = ParamGlo.LastLowerNote;break;
        }
        ParamGlo.EuSrc = newValue;
        switch( ParamGlo.EuSrc )
        {
          case 0: ParamGlo.LastNote = LastOffset; break;
          case 1: ParamGlo.LastUpperNote = LastOffset; break;
          case 2: ParamGlo.LastLowerNote = LastOffset; break;
        }
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;

    case 8:
      newValue = encnewmap(value, 0, 3, ParamGlo.StSrc,Encoder);
      if (newValue != ParamGlo.StSrc )
      {
        switch( ParamGlo.StSrc )
        {
          case 0: LastOffset = ParamGlo.LastNote;break;
          case 1: LastOffset = ParamGlo.LastUpperNote;break;
          case 2: LastOffset = ParamGlo.LastLowerNote;break;
        }
        ParamGlo.StSrc = newValue;
        switch( ParamGlo.StSrc )
        {
          case 0: ParamGlo.LastNote = LastOffset; break;
          case 1: ParamGlo.LastUpperNote = LastOffset; break;
          case 2: ParamGlo.LastLowerNote = LastOffset; break;
        }
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;


    case 9:
      newValue = encnewmap(value, 0, 3, ParamGlo.TrSrc,Encoder);
      if (newValue != ParamGlo.TrSrc )
      {
        switch( ParamGlo.TrSrc )
        {
          case 0: LastOffset = ParamGlo.LastNote;break;
          case 1: LastOffset = ParamGlo.LastUpperNote;break;
          case 2: LastOffset = ParamGlo.LastLowerNote;break;
        }
        ParamGlo.TrSrc = newValue;
        switch( ParamGlo.TrSrc )
        {
          case 0: ParamGlo.LastNote = LastOffset; break;
          case 1: ParamGlo.LastUpperNote = LastOffset; break;
          case 2: ParamGlo.LastLowerNote = LastOffset; break;
        }
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;

    case 10:
      newValue = encnewmap(value, 0, 3, ParamGlo.ArpSrc,Encoder);
      if (newValue != ParamGlo.ArpSrc )
      {
        switch( ParamGlo.ArpSrc )
        {
          case 0: LastOffset = ParamGlo.LastNote;break;
          case 1: LastOffset = ParamGlo.LastUpperNote;break;
          case 2: LastOffset = ParamGlo.LastLowerNote;break;
        }
        ParamGlo.ArpSrc = newValue;
        switch( ParamGlo.ArpSrc )
        {
          case 0: ParamGlo.LastNote = LastOffset; break;
          case 1: ParamGlo.LastUpperNote = LastOffset; break;
          case 2: ParamGlo.LastLowerNote = LastOffset; break;
        }
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;

    case 11:
      newValue = encnewmap(value, 0, 4, ParamGlo.keyInput,Encoder);
      if (newValue != ParamGlo.keyInput )
      {
        ParamGlo.keyInput = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;

    case 12:
      newValue = encnewmap(value, 0, 1, ParamGlo.Split,Encoder);
      if (newValue !=ParamGlo.Split )
      {
        SPOut.AutoOff( ParamGlo.UpperDest );
        SPOut.AutoOff( ParamGlo.LowerDest );
        ParamGlo.Split = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;

    case 13:
      newValue = encnewmap(value, 0, NB_OUTS , ParamGlo.UpperDest,Encoder);
      if (newValue != ParamGlo.UpperDest )
      {
        SPOut.AutoOff( ParamGlo.UpperDest );
        ParamGlo.UpperDest = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 14:
      newValue = encnewmap(value, 0, NB_OUTS, ParamGlo.LowerDest,Encoder );
      if (newValue != ParamGlo.LowerDest )
      {
        SPOut.AutoOff( ParamGlo.LowerDest );
        ParamGlo.LowerDest = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 15:
      newValue = encnewmap(value, 0, 6 , ParamGlo.CVTrig,Encoder);
      if (newValue != ParamGlo.CVTrig )
      {
        ParamGlo.CVTrig = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 16:
      newValue = encnewmap(value, 0, 20 , ParamGlo.canInput,Encoder);
      if (newValue != ParamGlo.canInput )
      {
        ParamGlo.canInput = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 17:
      newValue = encnewmap(value, 12, 72 , ParamGlo.NoteSplit,Encoder);
      if (newValue != ParamGlo.NoteSplit )
      {
        SPOut.AutoOff( ParamGlo.UpperDest );
        SPOut.AutoOff( ParamGlo.LowerDest );
        ParamGlo.NoteSplit = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;


    case 18:
      newValue = encnewmap(value, -3, 3 , ParamGlo.UpperTrans,Encoder);
      if (newValue != ParamGlo.UpperTrans )
      {
        SPOut.AutoOff( ParamGlo.UpperDest );
        ParamGlo.UpperTrans = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;


    case 19:
      newValue = encnewmap(value, -3, 3 , ParamGlo.LowerTrans,Encoder);
      if (newValue != ParamGlo.LowerTrans )
      {
        SPOut.AutoOff( ParamGlo.LowerDest );
        ParamGlo.LowerTrans = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateSplit();
      };
      break;

    case 20:
      newValue = encnewmap(value, 1, 16, ParamGlo.LowerChan,Encoder );
      if (newValue != ParamGlo.LowerChan )
      {
        SPOut.AutoOff( ParamGlo.LowerDest );
        ParamGlo.LowerChan = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;
    }
    break;
  case 1 :
    switch(cpt)
    {
    case 2:
      newValue = encnewmap(value, 0, 6, ParamGlo.ClockSrc,Encoder);
      if (newValue != ParamGlo.ClockSrc )
      {
        ParamGlo.ClockSrc = newValue;
        SClock.SetModeClock(ParamGlo.ClockSrc, ParamGlo.ClockDiv);
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 3:
      newValue = encnewmap(value, 1, 8, ParamGlo.ClockDiv,Encoder);
      if (newValue != ParamGlo.ClockDiv )
      {
        ParamGlo.ClockDiv = newValue;
        SClock.SetModeClock(ParamGlo.ClockSrc, ParamGlo.ClockDiv);
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 4:
      newValue = encnewmap(value, 1, 2, ParamGlo.TrigInDir,Encoder);
      if (newValue != ParamGlo.TrigInDir )
      {
        ParamGlo.TrigInDir = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 5:
      newValue = encnewmap(value, 1, 12, ParamGlo.Bend,Encoder);
      if (newValue != ParamGlo.Bend )
      {
        ParamGlo.Bend = newValue;
        ret = true;
        UpdateCtrl(cpt);
      };
      break;

    case 12:
    case 13:
    case 14:
    case 15:
    case 17:
    case 18:
    case 19:
    case 20:
      pos=(cpt > 15)?cpt-13:cpt-12;
      newValue = encnewmap(value, -100, +100 , ParamGlo.FINE_CV[pos],Encoder);
      if (newValue != ParamGlo.FINE_CV[pos] )
      {
        ParamGlo.FINE_CV[pos] = newValue;
        ret = true;
        UpdateCtrl(cpt);
      }
      break;

    }
    break;

  case 2:
    offset = CurPage-2;
    switch(cpt)
    {
    case 2:
    case 3:
    case 4:
    case 5:
    case 7:
    case 8:
    case 9:
    case 10:
      pos=(cpt > 6)?cpt-3:cpt-2;
      newValue = encnewmap(value, 0, 1 , CV_Type[pos],Encoder);
      if (newValue != CV_Type[pos] )
      {
        CV_Type[pos] = newValue;
        ret = true;
        UpdateCtrl(cpt);
      }
      break;

    case 12:
    case 13:
    case 14:
    case 15:
    case 17:
    case 18:
    case 19:
    case 20:
      pos=(cpt > 15)?cpt-13:cpt-12;
      newValue = encnewmap(value, 0, 1 , TRIG_Type[pos],Encoder);
      if (newValue != TRIG_Type[pos] )
      {
        TRIG_Type[pos] = newValue;
        ret = true;
        UpdateCtrl(cpt);
        SPOut.AutoOff(NOUT_CVALL+pos);
      }
      break;
    }
    break;
    
  default:
    offset = CurPage-3;
    switch(cpt)
    {

    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      pos=cpt-1;
      newValue = encnewmap(value, 0, 2 , Routes[pos + offset].Perim,Encoder);
      if (newValue != Routes[pos + offset].Perim )
      {
        Routes[pos + offset].Perim = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateRoute( Routes[pos + offset].Route);
      }
      break;  

    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
      pos=cpt-6;
      newValue = encnewmap(value, 0, ( Routes[pos + offset].Type == RT_MIDI ) ? 4 : 2 , Routes[pos + offset].Source, Encoder);
      if (newValue != Routes[pos + offset].Source )
      {
        Routes[pos + offset].Source = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateRoute( Routes[pos + offset].Route);
      }
      break;  

    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
      pos=cpt-11;
      newValue = encnewmap(value, 0, 23, Routes[pos + offset].Chanel, Encoder );
      if (newValue != Routes[pos + offset].Chanel)
      {
        Routes[pos + offset].Chanel = newValue;
        ret = true;
        UpdateCtrl(cpt);
        UpdateRoute( Routes[pos + offset].Route);
      }
      break;  

    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
      pos=cpt-16;
      if ( Routes[pos + offset].Type != RT_MIDI )
      {
        newValue = encnewmap(value, 0, 127 + 2, Routes[pos + offset].MidiType , Encoder  );
        if (newValue != Routes[pos + offset].MidiType)
        {
          Routes[pos + offset].MidiType = newValue;
          ret = true;
          UpdateCtrl(cpt);
          UpdateRoute( Routes[pos + offset].Route);
        }
      }
      break;  
    }
    break;
  }
  return ret;

}