From c70554786db3e32ce5601b11d29d25db08cb2b37 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 13 Dec 2007 05:28:54 +0000 Subject: - reorganized files to build easy with Pd-extended. - updated NT macro to _MSC_VER since those pragmas are for MSVC only - put each object's "fill" function into that object's .c file, - added i0.c to the end of kaiser~.c since that's the only one that needs it - added #define powf pow for _WIN32 and Mac OS X for gaussian~.c since those platforms don't have single precision pow() by default svn path=/trunk/externals/windowing/; revision=9092 --- windowFunctions.c | 136 ------------------------------------------------------ 1 file changed, 136 deletions(-) delete mode 100644 windowFunctions.c (limited to 'windowFunctions.c') diff --git a/windowFunctions.c b/windowFunctions.c deleted file mode 100644 index acb7e9f..0000000 --- a/windowFunctions.c +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 2002 Joseph A. Sarlo -** -** This program is free software; you can redistribute it and/or -** modify it under the terms of the GNU General Public License -** as published by the Free Software Foundation; either version 2 -** of the License, or (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** jsarlo@mambo.peabody.jhu.edu -*/ - -#include -#include -#include -#ifdef NT -#define M_PI 3.14159265358979323846 -#endif - -/* modified bessel function of zeroth order */ -double i0(double x); - -void fillHanning(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)(0.5 * (1 + cos(M_PI * x))); - } -} - -void fillHamming(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)(0.54 + 0.46 * cos(M_PI * x)); - } -} - -void fillBlackman(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)(0.42 + (0.5 * cos(M_PI * x)) + (0.08 * cos (2 * M_PI * x))); - } -} - -void fillConnes(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)((1 - (x * x)) * (1 - (x * x))); - } -} - -void fillCosine(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)cos(M_PI * x / 2); - } -} - -void fillWelch(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = 1 - (x * x); - } -} - -void fillBartlett(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)(1 - fabs(x)); - } -} - -void fillLanczos(float *vec, int n) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - if (x == 0) { - vec[i] = 1; - } - else { - vec[i] = (float)(sin(M_PI * x) / (M_PI * x)); - } - } -} - -void fillGaussian(float *vec, int n, float delta) { - int i; - float xShift = (float)n / 2; - float x; - if (delta == 0) { - delta = 1; - } - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)(pow(2, (-1 * (x / delta) * (x / delta)))); - } -} - -void fillKaiser(float *vec, int n, float alpha) { - int i; - float xShift = (float)n / 2; - float x; - for (i = 0; i < n; i++) { - x = (i - xShift) / xShift; - vec[i] = (float)(i0(alpha * sqrt(1 - (x * x))) / i0(alpha)); - } -} -- cgit v1.2.1