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
}
|