public Signal Generate(int samples)
{
Signal signal = new Signal(Channels, samples, SamplingRate, Format);
int ti = interval * Channels;
unsafe
{
if (Format == SampleFormat.Format32BitIeeeFloat)
{
for (int c = 0; c < Channels; c++)
{
float* dst = (float*)signal.Data.ToPointer() + c;
for (int i = 0; i < samples; i += interval, dst += ti)
{
*dst = ampMax;
if (Pulses > 0 && i / interval >= Pulses)
break;
}
}
}
else if (Format == SampleFormat.Format128BitComplex)
{
Complex campMax = new Complex(ampMax, 0);
for (int c = 0; c < Channels; c++)
{
Complex* dst = (Complex*)signal.Data.ToPointer() + c;
for (int i = 0; i < samples; i += interval, dst += ti)
{
*dst = campMax;
if (Pulses > 0 && i / interval >= Pulses)
break;
}
}
}
else
{
throw new UnsupportedSampleFormatException("Sample format is not supported by the filter.");
}
}
return signal;
}