/* Compute a windowed sinc FIR of size n into buffer */void arke_firws(float frequency, float* buffer, unsigned int n, arke_window_f window){ float sinFreq; float* p; int n2, i; if(!(n % 2)) { /* n may not be even */ /* fix this by setting the last value to zero */ n--; buffer[n] = 0.0f; } sinFreq = frequency * 2.0f * M_PI; p = buffer; n2 = n / 2; for(i = -n2; i < n2; i++, p++) { float f = sinFreq * i; if(fabs(f) > kNearZero) { *p = sin(f) / f; } else { *p = 1.0f; } } window(buffer, n);}