示例#1
0
 public void Reset()
 {
     value = 0;
     if (delayTime > 0)
     {
         phase    = delayTime;
         lfoState = LfoStateEnum.Delay;
     }
     else
     {
         phase    = generator.LoopStartPhase;
         lfoState = LfoStateEnum.Sustain;
     }
 }
 public void Reset()
 {
     value = 0;
     if (delayTime > 0)
     {
         phase = delayTime;
         lfoState = LfoStateEnum.Delay;
     }
     else
     {
         phase = generator.LoopStartPhase;
         lfoState = LfoStateEnum.Sustain;
     }
 }
示例#3
0
 public void Reset()
 {
     value = 0;
     if (delayTime > 0)
     {
         phase    = delayTime;
         lfoState = LfoStateEnum.Delay;
     }
     else
     {
         phase    = 0.0;
         lfoState = LfoStateEnum.Sustain;
     }
 }
 public void Increment(int amount)
 {
     if (lfoState == LfoStateEnum.Delay)
     {
         phase -= amount;
         if (phase <= 0.0)
         {
             phase = generator.LoopStartPhase + increment * -phase;
             value = generator.GetValue(phase);
             lfoState = LfoStateEnum.Sustain;
         }
     }
     else
     {
         phase += increment * amount;
         if (phase >= generator.LoopEndPhase)
             phase = generator.LoopStartPhase + (phase - generator.LoopEndPhase) % (generator.LoopEndPhase - generator.LoopStartPhase);
         value = generator.GetValue(phase);
     }
 }
示例#5
0
 public void Increment(int amount)
 {
     if (lfoState == LfoStateEnum.Delay)
     {
         phase -= amount;
         if (phase <= 0.0)
         {
             phase    = generator.LoopStartPhase + increment * -phase;
             value    = generator.GetValue(phase);
             lfoState = LfoStateEnum.Sustain;
         }
     }
     else
     {
         phase += increment * amount;
         if (phase >= generator.LoopEndPhase)
         {
             phase = generator.LoopStartPhase + (phase - generator.LoopEndPhase) % (generator.LoopEndPhase - generator.LoopStartPhase);
         }
         value = generator.GetValue(phase);
     }
 }
示例#6
0
 public double GetNext()
 {
     if (lfoState == LfoStateEnum.Delay)
     {
         phase--;
         if (phase <= 0.0)
         {
             phase    = generator.LoopStartPhase;
             lfoState = LfoStateEnum.Sustain;
         }
         return(0.0);
     }
     else
     {
         phase += increment;
         if (phase >= generator.LoopEndPhase)
         {
             phase = generator.LoopStartPhase + (phase - generator.LoopEndPhase) % (generator.LoopEndPhase - generator.LoopStartPhase);
         }
         return(generator.GetValue(phase));
     }
 }