public void ComplexSignalConstructor()
{
UnmanagedMemoryStream sourceStream = Properties.Resources.a;
MemoryStream destinationStream = new MemoryStream();
// Create a decoder for the source stream
WaveDecoder sourceDecoder = new WaveDecoder(sourceStream);
// Decode the signal in the source stream
Signal sourceSignal = sourceDecoder.Decode();
int length = (int)Math.Pow(2, 12);
RaisedCosineWindow window = RaisedCosineWindow.Hamming(length);
Assert.AreEqual(length, window.Length);
Signal[] windows = sourceSignal.Split(window, 1024);
Assert.AreEqual(windows.Length, 172);
foreach (var w in windows)
Assert.AreEqual(length, w.Length);
ComplexSignal[] complex = windows.Apply(ComplexSignal.FromSignal);
for (int i = 0; i < complex.Length - 1; i++)
{
ComplexSignal c = complex[i];
Assert.AreEqual(2, c.Channels);
Assert.AreEqual(92, c.Duration);
Assert.AreEqual(4096, c.Length);
Assert.AreEqual(SampleFormat.Format128BitComplex, c.SampleFormat);
Assert.AreEqual(44100, c.SampleRate);
Assert.AreEqual(ComplexSignalStatus.Normal, c.Status);
}
complex.ForwardFourierTransform();
for (int i = 0; i < complex.Length - 1; i++)
{
ComplexSignal c = complex[i];
Assert.AreEqual(ComplexSignalStatus.FourierTransformed, c.Status);
}
}