public void Evaluate(int SpreadMax)
        {
            //OutBuffer.ResizeAndDispose(SpreadMax, index =>  new SineSignal(Frequency[index]));

            if (Frequency.IsChanged)
            {
                OutBuffer.SliceCount = SpreadMax;
                for (int i = 0; i < SpreadMax; i++)
                {
                    OutBuffer[i] = new SineSignal(Frequency[i]);
                }
            }

            if (Gain.IsChanged)
            {
                for (int i = 0; i < SpreadMax; i++)
                {
                    (OutBuffer[i] as SineSignal).Gain = Gain[i];
                }
            }
        }
		public void Evaluate(int SpreadMax)
		{
			//OutBuffer.ResizeAndDispose(SpreadMax, index =>  new SineSignal(Frequency[index]));
			
			if(Frequency.IsChanged)
			{
				OutBuffer.SliceCount = SpreadMax;
				for(int i=0; i<SpreadMax; i++)
				{
					OutBuffer[i] = new SineSignal(Frequency[i]);
				}
			}
			
			if(Gain.IsChanged)
			{
				for(int i=0; i<SpreadMax; i++)
				{
					(OutBuffer[i] as SineSignal).Gain  = Gain[i];
				}
			}
		}