public static double[] WindowedSinc(int zeroCrossings, int overSampling) { int n = (zeroCrossings * 2 * overSampling) + 1; double[] buffer1 = new double[n]; double[] buffer2 = new double[n]; // Generate Sinc double a = (double)-zeroCrossings; double b = (double)zeroCrossings; double r; for (int i = 0; i < n; i++) { r = ((double)i) / ((double)(n - 1)); buffer1[i] = MinBleps.Sinc(a + (r * (b - a))); } // Window Sinc MinBleps.BlackmanWindow(n, buffer2); for (int i = 0; i < n; i++) { buffer1[i] *= buffer2[i]; } return(buffer1); }
public static void Main(Stream outStream) { var sinGen = new SinGenerator2(44100); double phase = 0; for (int i = 0; i < 44100 << 2; i++) { //outStream.Write(BitConverter.GetBytes(sinGen.Sample(phase))); outStream.Write(BitConverter.GetBytes(MinBleps.Sinc(phase))); phase += 0.001; } }