public ComplexSignal Apply(ComplexSignal complexSignal)
{
// get number of channels and samples
int channels = complexSignal.Channels;
int samples = complexSignal.Length;
// retrieve other information
int rate = complexSignal.SampleRate;
// create new signal of required format
ComplexSignal dstSignal = new ComplexSignal(channels, samples, rate);
// process the filter
ProcessFilter(complexSignal, dstSignal);
// return the processed signal
return dstSignal;
}