public Signal Generate(int samples)
{
Signal signal = new Signal(Channels, samples, SamplingRate, Format);
if (Format == SampleFormat.Format32BitIeeeFloat)
{
unsafe
{
float* dst = (float*)signal.Data.ToPointer();
float p = (float)(Frequency / SamplingRate);
float a = 2f * (float)Amplitude;
for (int i = 0; i < signal.Length; i++)
{
float q = i * p;
float t = a * (q - (float)Math.Round(q));
for (int c = 0; c < signal.Channels; c++, dst++)
*dst = t;
}
}
}
return signal;
}