public Signal Generate(int samples)
{
Signal signal = new Signal(Channels, samples, SamplingRate, Format);
unsafe
{
if (Format == SampleFormat.Format32BitIeeeFloat)
{
var dst = (float*)signal.Data.ToPointer();
for (int i = 0; i < signal.Samples; i++)
for (int c = 0; c < signal.Channels; c++, dst++)
*dst = (float)(Amplitude * Math.Cos(i * theta));
}
else if (Format == SampleFormat.Format64BitIeeeFloat)
{
var dst = (double*)signal.Data.ToPointer();
for (int i = 0; i < signal.Samples; i++)
for (int c = 0; c < signal.Channels; c++, dst++)
*dst = (Amplitude * Math.Cos(i * theta));
}
else
{
throw new UnsupportedSampleFormatException("Sample format is not supported by the filter.");
}
}
return signal;
}