|
From: Martin R. <ru...@us...> - 2004-08-26 09:48:01
|
Update of /cvsroot/foo/foo/libfoo/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27460 Modified Files: FOOBufferManager.m FOOSineXoverXTable.m Makefile.am Log Message: fixed small warning inssue in FOOBufferManager (archiving related). introduced Kaiser windowing to sinc tables. disabled so far (seems not yet to work properly) link against new banff modules Index: FOOBufferManager.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOBufferManager.m,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FOOBufferManager.m 13 Aug 2004 21:38:01 -0000 1.3 --- FOOBufferManager.m 26 Aug 2004 09:47:52 -0000 1.4 *************** *** 118,122 **** ! - (FOOBufferManager *) initWithCoder: (NSCoder *)coder { self = [super initWithCoder: coder]; --- 118,122 ---- ! - (id) initWithCoder: (NSCoder *)coder { self = [super initWithCoder: coder]; *************** *** 129,134 **** { [coder decodeValueOfObjCType: @encode(int) at: &_bufferSize]; - - return; } --- 129,132 ---- Index: Makefile.am =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/Makefile.am,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Makefile.am 31 Jul 2004 08:10:20 -0000 1.4 --- Makefile.am 26 Aug 2004 09:47:52 -0000 1.5 *************** *** 53,55 **** libfoo_la_LIBADD = $(FOO_LIBS) $(FND_LIBS) \ -lobjc \ ! ../modules/orthodox/libfoomorthodox.la --- 53,57 ---- libfoo_la_LIBADD = $(FOO_LIBS) $(FND_LIBS) \ -lobjc \ ! ../modules/orthodox/libfoomorthodox.la \ ! ../modules/banff/libfoombanff.la \ ! $(NULL) Index: FOOSineXoverXTable.m =================================================================== RCS file: /cvsroot/foo/foo/libfoo/src/FOOSineXoverXTable.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FOOSineXoverXTable.m 4 Aug 2004 06:16:41 -0000 1.2 --- FOOSineXoverXTable.m 26 Aug 2004 09:47:52 -0000 1.3 *************** *** 38,41 **** --- 38,73 ---- #include "FOO/FOOSineXoverXTable.h" + // #define KAISER_WINDOW // hanning window otherwise + + #ifdef KAISER_WINDOW + + #define KAISER_KOEFF 5.6 + + static double + bessel0 (double x) + { + const double t = 1.e-08; + double y = 0.5 * x, e = 1., de = 1.; + int i; + double sde; + + for (i = 1; i < 26; ++i) + { + de *= y / x; + sde = de * de; + e += sde; + + if (e * t - sde > 0) + { + break; + } + } + + return e; + } + + static double _besselconst; + #endif + @implementation FOOSineXoverXTable *************** *** 44,47 **** --- 76,83 ---- size: (int)size { + #ifdef KAISER_WINDOW + _besselconst = bessel0(KAISER_KOEFF); + #endif + if (n & 1 || n < 4) { *************** *** 50,54 **** _taps = n; [super initWithOrigin: 0.0 extent: n/2.0 size: size]; - return self; } --- 86,89 ---- *************** *** 58,62 **** { double xMax = _taps / 2 - .5; ! if (x > xMax) { --- 93,97 ---- { double xMax = _taps / 2 - .5; ! if (x > xMax) { *************** *** 67,73 **** return 1; } - x *= M_PI; return ((sin(x) / x) * (cos(x / xMax) / 2. + .5)); } --- 102,119 ---- return 1; } + #ifdef KAISER_WINDOW + + double y = x * M_PI; + y = sin(y) / y; + y *= bessel0(KAISER_KOEFF * sqrt(1 - (2 * x * _scaler / ((_size - 1) * 2)) * (2 * x * _scaler / ((_size - 1) * 2)))) / _besselconst; + return y; + + #else // hanning window + + x *= M_PI; return ((sin(x) / x) * (cos(x / xMax) / 2. + .5)); + + #endif } |