[PD-cvs] SF.net SVN: pure-data:[10706] trunk/externals/iem/iem_tab

tmusil at users.sourceforge.net tmusil at users.sourceforge.net
Sun Feb 1 06:25:22 CET 2009


Revision: 10706
          http://pure-data.svn.sourceforge.net/pure-data/?rev=10706&view=rev
Author:   tmusil
Date:     2009-02-01 05:25:21 +0000 (Sun, 01 Feb 2009)

Log Message:
-----------
changed for 64 bit array access

Modified Paths:
--------------
    trunk/externals/iem/iem_tab/src/iem_tab.c
    trunk/externals/iem/iem_tab/src/iem_tab.h
    trunk/externals/iem/iem_tab/src/iemlib.h
    trunk/externals/iem/iem_tab/src/makefile_d_fat
    trunk/externals/iem/iem_tab/src/makefile_d_ppc
    trunk/externals/iem/iem_tab/src/makefile_darwin
    trunk/externals/iem/iem_tab/src/makefile_linux
    trunk/externals/iem/iem_tab/src/makefile_win
    trunk/externals/iem/iem_tab/src/tab_abs.c
    trunk/externals/iem/iem_tab/src/tab_add.c
    trunk/externals/iem/iem_tab/src/tab_add_scalar.c
    trunk/externals/iem/iem_tab/src/tab_carth2polar.c
    trunk/externals/iem/iem_tab/src/tab_complex_inv.c
    trunk/externals/iem/iem_tab/src/tab_complex_mul.c
    trunk/externals/iem/iem_tab/src/tab_const.c
    trunk/externals/iem/iem_tab/src/tab_conv.c
    trunk/externals/iem/iem_tab/src/tab_copy.c
    trunk/externals/iem/iem_tab/src/tab_counter.c
    trunk/externals/iem/iem_tab/src/tab_cross_corr.c
    trunk/externals/iem/iem_tab/src/tab_div.c
    trunk/externals/iem/iem_tab/src/tab_eq.c
    trunk/externals/iem/iem_tab/src/tab_eq_scalar.c
    trunk/externals/iem/iem_tab/src/tab_fft.c
    trunk/externals/iem/iem_tab/src/tab_find_exact_peaks.c
    trunk/externals/iem/iem_tab/src/tab_find_peaks.c
    trunk/externals/iem/iem_tab/src/tab_ge.c
    trunk/externals/iem/iem_tab/src/tab_ge_scalar.c
    trunk/externals/iem/iem_tab/src/tab_gt.c
    trunk/externals/iem/iem_tab/src/tab_gt_scalar.c
    trunk/externals/iem/iem_tab/src/tab_ifft.c
    trunk/externals/iem/iem_tab/src/tab_le.c
    trunk/externals/iem/iem_tab/src/tab_le_scalar.c
    trunk/externals/iem/iem_tab/src/tab_lt.c
    trunk/externals/iem/iem_tab/src/tab_lt_scalar.c
    trunk/externals/iem/iem_tab/src/tab_max_index.c
    trunk/externals/iem/iem_tab/src/tab_min_index.c
    trunk/externals/iem/iem_tab/src/tab_min_max.c
    trunk/externals/iem/iem_tab/src/tab_mls.c
    trunk/externals/iem/iem_tab/src/tab_mul.c
    trunk/externals/iem/iem_tab/src/tab_mul_scalar.c
    trunk/externals/iem/iem_tab/src/tab_ne.c
    trunk/externals/iem/iem_tab/src/tab_ne_scalar.c
    trunk/externals/iem/iem_tab/src/tab_reverse.c
    trunk/externals/iem/iem_tab/src/tab_rfft.c
    trunk/externals/iem/iem_tab/src/tab_rifft.c
    trunk/externals/iem/iem_tab/src/tab_sqrt.c
    trunk/externals/iem/iem_tab/src/tab_sub.c
    trunk/externals/iem/iem_tab/src/tab_sum.c
    trunk/externals/iem/iem_tab/tab_abs-help.pd
    trunk/externals/iem/iem_tab/tab_add-help.pd
    trunk/externals/iem/iem_tab/tab_add_scalar-help.pd
    trunk/externals/iem/iem_tab/tab_carth2polar-help.pd
    trunk/externals/iem/iem_tab/tab_complex_inv-help.pd
    trunk/externals/iem/iem_tab/tab_complex_mul-help.pd
    trunk/externals/iem/iem_tab/tab_const-help.pd
    trunk/externals/iem/iem_tab/tab_conv-help.pd
    trunk/externals/iem/iem_tab/tab_copy-help.pd
    trunk/externals/iem/iem_tab/tab_counter-help.pd
    trunk/externals/iem/iem_tab/tab_cross_corr-help.pd
    trunk/externals/iem/iem_tab/tab_div-help.pd
    trunk/externals/iem/iem_tab/tab_eq-help.pd
    trunk/externals/iem/iem_tab/tab_eq_scalar-help.pd
    trunk/externals/iem/iem_tab/tab_fft-help.pd
    trunk/externals/iem/iem_tab/tab_find_exact_peaks-help.pd
    trunk/externals/iem/iem_tab/tab_find_peaks-help.pd
    trunk/externals/iem/iem_tab/tab_ifft-help.pd
    trunk/externals/iem/iem_tab/tab_rfft-help.pd
    trunk/externals/iem/iem_tab/tab_rifft-help.pd
    trunk/externals/iem/iem_tab/tab_sum-help.pd

Modified: trunk/externals/iem/iem_tab/src/iem_tab.c
===================================================================
--- trunk/externals/iem/iem_tab/src/iem_tab.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/iem_tab.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,12 +1,12 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 
-int iem_tab_check_arrays(t_symbol *obj_name, t_symbol *array_name, t_float **beg_mem, int *array_size, int max_index)
+int iem_tab_check_arrays(t_symbol *obj_name, t_symbol *array_name, iemarray_t **beg_mem, int *array_size, int max_index)
 {
   int ok=1;
   t_garray *a;
@@ -16,7 +16,7 @@
     error("%s: no such array", array_name->s_name);
     ok = 0;
   }
-  else if(!garray_getfloatarray(a, array_size, beg_mem))
+  else if(!iemarray_getarray(a, array_size, beg_mem))
   {
     error("%s: bad template for %s", array_name->s_name, obj_name->s_name);
     ok = 0;
@@ -64,6 +64,7 @@
 void tab_find_peaks_setup(void);
 void tab_ge_setup(void);
 void tab_ge_scalar_setup(void);
+void tab_get_size_setup(void);
 void tab_gt_setup(void);
 void tab_gt_scalar_setup(void);
 void tab_ifft_setup(void);
@@ -114,6 +115,7 @@
   tab_ge_scalar_setup();
   tab_gt_setup();
   tab_gt_scalar_setup();
+  tab_get_size_setup();
   tab_ifft_setup();
   tab_le_setup();
   tab_le_scalar_setup();
@@ -134,7 +136,7 @@
   tab_sub_setup();
   tab_sum_setup();
   
-  post("iem_tab (R-1.17) library loaded!   (c) Thomas Musil 11.2006");
+  post("iem_tab (R-1.18) library loaded!   (c) Thomas Musil 01.2009");
   post("   musil%ciem.at iem KUG Graz Austria", '@');
 }
 

Modified: trunk/externals/iem/iem_tab/src/iem_tab.h
===================================================================
--- trunk/externals/iem/iem_tab/src/iem_tab.h	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/iem_tab.h	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #ifndef __IEMTAB_H__
 #define __IEMTAB_H__
@@ -13,6 +13,6 @@
 }
 TAB_COMPLEX;
 
-int iem_tab_check_arrays(t_symbol *obj_name, t_symbol *array_name, t_float **beg_mem, int *array_size, int max_index);
+int iem_tab_check_arrays(t_symbol *obj_name, t_symbol *array_name, iemarray_t **beg_mem, int *array_size, int max_index);
 
 #endif

Modified: trunk/externals/iem/iem_tab/src/iemlib.h
===================================================================
--- trunk/externals/iem/iem_tab/src/iemlib.h	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/iemlib.h	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 */
+iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #ifndef __IEMLIB_H__
 #define __IEMLIB_H__
@@ -99,4 +99,18 @@
 
 #endif
 
+/* on 64bit systems we cannot use garray_getfloatarray... */
+#if (defined __x86_64__)
+# define iemarray_t t_word
+# define iemarray_getarray garray_getfloatwords
+# define iemarray_getfloat(pointer, index) (pointer[index].w_float)
+# define iemarray_setfloat(pointer, index, fvalue) (pointer[index].w_float = fvalue)
+#else
+# define iemarray_t t_float
+# define iemarray_getarray garray_getfloatarray
+# define iemarray_getfloat(pointer, index) (pointer[index])
+# define iemarray_setfloat(pointer, index, fvalue) (pointer[index] = fvalue)
 #endif
+
+
+#endif

Modified: trunk/externals/iem/iem_tab/src/makefile_d_fat
===================================================================
--- trunk/externals/iem/iem_tab/src/makefile_d_fat	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/makefile_d_fat	2009-02-01 05:25:21 UTC (rev 10706)
@@ -34,6 +34,7 @@
 	tab_ge_scalar.c \
 	tab_gt.c \
 	tab_gt_scalar.c \
+	tab_get_size.c \
 	tab_ifft.c \
 	tab_le.c \
 	tab_le_scalar.c \

Modified: trunk/externals/iem/iem_tab/src/makefile_d_ppc
===================================================================
--- trunk/externals/iem/iem_tab/src/makefile_d_ppc	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/makefile_d_ppc	2009-02-01 05:25:21 UTC (rev 10706)
@@ -34,6 +34,7 @@
 	tab_ge_scalar.c \
 	tab_gt.c \
 	tab_gt_scalar.c \
+	tab_get_size.c \
 	tab_ifft.c \
 	tab_le.c \
 	tab_le_scalar.c \

Modified: trunk/externals/iem/iem_tab/src/makefile_darwin
===================================================================
--- trunk/externals/iem/iem_tab/src/makefile_darwin	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/makefile_darwin	2009-02-01 05:25:21 UTC (rev 10706)
@@ -39,6 +39,7 @@
 	tab_ge_scalar.c \
 	tab_gt.c \
 	tab_gt_scalar.c \
+	tab_get_size.c \
 	tab_ifft.c \
 	tab_le.c \
 	tab_le_scalar.c \

Modified: trunk/externals/iem/iem_tab/src/makefile_linux
===================================================================
--- trunk/externals/iem/iem_tab/src/makefile_linux	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/makefile_linux	2009-02-01 05:25:21 UTC (rev 10706)
@@ -38,6 +38,7 @@
 	tab_ge_scalar.c \
 	tab_gt.c \
 	tab_gt_scalar.c \
+	tab_get_size.c \
 	tab_ifft.c \
 	tab_le.c \
 	tab_le_scalar.c \

Modified: trunk/externals/iem/iem_tab/src/makefile_win
===================================================================
--- trunk/externals/iem/iem_tab/src/makefile_win	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/makefile_win	2009-02-01 05:25:21 UTC (rev 10706)
@@ -41,6 +41,7 @@
 	tab_ge_scalar.c \
 	tab_gt.c \
 	tab_gt_scalar.c \
+	tab_get_size.c \
 	tab_ifft.c \
 	tab_le.c \
 	tab_le_scalar.c \

Modified: trunk/externals/iem/iem_tab/src/tab_abs.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_abs.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_abs.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 
 #include "m_pd.h"
@@ -11,6 +11,7 @@
 
 
 /* -------------------------- tab_abs ------------------------------ */
+/*   x_beg_mem_dst[i] = abs(x_beg_mem_src1[i])   */
 
 typedef struct _tab_abs
 {
@@ -19,8 +20,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_abs;
@@ -41,7 +42,7 @@
 {
   int i, n;
   int ok_src, ok_dst;
-  t_float *vec_src, *vec_dst;
+  iemarray_t *vec_src, *vec_dst;
   
   ok_src = iem_tab_check_arrays(gensym("tab_abs"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_abs"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -59,7 +60,8 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = fabs(vec_src[i]);
+        iemarray_setfloat(vec_dst, i, fabs(iemarray_getfloat(vec_src, i)));
+      
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);
@@ -72,7 +74,7 @@
   int beg_src, beg_dst;
   int i, n;
   int ok_src, ok_dst;
-  t_float *vec_src, *vec_dst;
+  iemarray_t *vec_src, *vec_dst;
   
   if((argc >= 3) &&
     IS_A_FLOAT(argv,0) &&
@@ -101,7 +103,7 @@
         t_garray *a;
         
         for(i=0; i<n; i++)
-          vec_dst[i] = fabs(vec_src[i]);
+          iemarray_setfloat(vec_dst, i, fabs(iemarray_getfloat(vec_src, i)));
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
         garray_redraw(a);

Modified: trunk/externals/iem/iem_tab/src/tab_add.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_add.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_add.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,14 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_add ------------------------------ */
+/*   x_beg_mem_dst[i] = x_beg_mem_src1[i] + x_beg_mem_src2[i]   */
 
 typedef struct _tab_add
 {
@@ -18,9 +19,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -47,7 +48,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_add"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_add"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -70,7 +71,7 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = vec_src1[i] + vec_src2[i];
+        iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src1, i) + iemarray_getfloat(vec_src2, i));
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);
@@ -83,7 +84,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -118,7 +119,7 @@
         t_garray *a;
         
         for(i=0; i<n; i++)
-          vec_dst[i] = vec_src1[i] + vec_src2[i];
+          iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src1, i) + iemarray_getfloat(vec_src2, i));
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
         garray_redraw(a);
@@ -140,7 +141,6 @@
 {
   t_tab_add *x = (t_tab_add *)pd_new(tab_add_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_add_scalar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_add_scalar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_add_scalar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,14 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_add_scalar ------------------------------ */
+/*   x_beg_mem_dst[i] = x_beg_mem_src1[i] + add   */
 
 typedef struct _tab_add_scalar
 {
@@ -16,8 +17,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_add_scalar;
@@ -33,7 +34,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_add_scalar"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_add_scalar"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -52,7 +53,7 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = vec_src1[i] + add;
+        iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src1, i) + add);
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);
@@ -70,7 +71,7 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst, add;
+  iemarray_t *vec_src1, *vec_dst, add;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -101,7 +102,7 @@
         t_garray *a;
         
         for(i=0; i<n; i++)
-          vec_dst[i] = vec_src1[i] + add;
+          iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src1, i) + add);
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
         garray_redraw(a);

Modified: trunk/externals/iem/iem_tab/src/tab_carth2polar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_carth2polar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_carth2polar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -9,6 +9,8 @@
 #include <math.h>
 
 /* -------------------------- tab_carth2polar ------------------------------ */
+/*   x_beg_mem_dst_mag[i] = sqrt(x_beg_mem_src_re[i]*x_beg_mem_src_re[i] + x_beg_mem_src_im[i]*x_beg_mem_src_im[i])   */
+/*   x_beg_mem_dst_arg[i] = atan2(x_beg_mem_src_im[i], x_beg_mem_src_re[i])   */
 
 typedef struct _tab_carth2polar
 {
@@ -21,10 +23,10 @@
   int       x_offset_dst_mag;
   int       x_offset_src_im;
   int       x_offset_dst_arg;
-  t_float   *x_beg_mem_src_re;
-  t_float   *x_beg_mem_dst_mag;
-  t_float   *x_beg_mem_src_im;
-  t_float   *x_beg_mem_dst_arg;
+  iemarray_t   *x_beg_mem_src_re;
+  iemarray_t   *x_beg_mem_dst_mag;
+  iemarray_t   *x_beg_mem_src_im;
+  iemarray_t   *x_beg_mem_dst_arg;
   t_symbol  *x_sym_src_re;
   t_symbol  *x_sym_dst_mag;
   t_symbol  *x_sym_src_im;
@@ -58,8 +60,8 @@
   int i, n;
   int ok_src_re, ok_dst_mag;
   int ok_src_im, ok_dst_arg;
-  t_float *vec_src_re, *vec_dst_mag;
-  t_float *vec_src_im, *vec_dst_arg;
+  iemarray_t *vec_src_re, *vec_dst_mag;
+  iemarray_t *vec_src_im, *vec_dst_arg;
   
   ok_src_re = iem_tab_check_arrays(gensym("tab_carth2polar"), x->x_sym_src_re, &x->x_beg_mem_src_re, &x->x_size_src_re, 0);
   ok_dst_mag = iem_tab_check_arrays(gensym("tab_carth2polar"), x->x_sym_dst_mag, &x->x_beg_mem_dst_mag, &x->x_size_dst_mag, 0);
@@ -90,12 +92,14 @@
       {
         t_float re, im, mag, arg;
         
-        re = vec_src_re[i];
-        im = vec_src_im[i];
+        re = iemarray_getfloat(vec_src_re, i);
+        im = iemarray_getfloat(vec_src_im, i);
         mag = sqrt(re*re + im*im);
         arg = atan2(im, re) * rcp_two_pi;
         vec_dst_mag[i] = mag;
         vec_dst_arg[i] = arg;
+        iemarray_setfloat(vec_dst_mag, i, mag);
+        iemarray_setfloat(vec_dst_arg, i, arg);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst_mag, garray_class);
@@ -113,8 +117,8 @@
   int beg_src_im, beg_dst_arg;
   int ok_src_re, ok_dst_mag;
   int ok_src_im, ok_dst_arg;
-  t_float *vec_src_re, *vec_dst_mag;
-  t_float *vec_src_im, *vec_dst_arg;
+  iemarray_t *vec_src_re, *vec_dst_mag;
+  iemarray_t *vec_src_im, *vec_dst_arg;
   
   if((argc >= 5) &&
     IS_A_FLOAT(argv,0) &&
@@ -160,12 +164,12 @@
         {
           t_float re, im, mag, arg;
           
-          re = vec_src_re[i];
-          im = vec_src_im[i];
+          re = iemarray_getfloat(vec_src_re, i);
+          im = iemarray_getfloat(vec_src_im, i);
           mag = sqrt(re*re + im*im);
           arg = atan2(im, re) * rcp_two_pi;
-          vec_dst_mag[i] = mag;
-          vec_dst_arg[i] = arg;
+          iemarray_setfloat(vec_dst_mag, i, mag);
+          iemarray_setfloat(vec_dst_arg, i, arg);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst_mag, garray_class);
@@ -190,7 +194,6 @@
 {
   t_tab_carth2polar *x = (t_tab_carth2polar *)pd_new(tab_carth2polar_class);
   t_symbol  *src_re, *dst_mag, *src_im, *dst_arg;
-  t_float time;
   
   if((argc >= 4) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_complex_inv.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_complex_inv.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_complex_inv.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,15 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_complex_inv ------------------------------ */
+/*   x_beg_mem_dst_re[i] = x_beg_mem_src1_re[i] / (x_beg_mem_src1_re[i]*x_beg_mem_src1_re[i] + x_beg_mem_src1_im[i]*x_beg_mem_src1_im[i])   */
+/*   x_beg_mem_dst_im[i] = -x_beg_mem_src1_im[i] / (x_beg_mem_src1_re[i]*x_beg_mem_src1_re[i] + x_beg_mem_src1_im[i]*x_beg_mem_src1_im[i])   */
 
 typedef struct _tab_complex_inv
 {
@@ -20,10 +22,10 @@
   int       x_offset_dst_re;
   int       x_offset_src1_im;
   int       x_offset_dst_im;
-  t_float   *x_beg_mem_src1_re;
-  t_float   *x_beg_mem_dst_re;
-  t_float   *x_beg_mem_src1_im;
-  t_float   *x_beg_mem_dst_im;
+  iemarray_t   *x_beg_mem_src1_re;
+  iemarray_t   *x_beg_mem_dst_re;
+  iemarray_t   *x_beg_mem_src1_im;
+  iemarray_t   *x_beg_mem_dst_im;
   t_symbol  *x_sym_scr1_re;
   t_symbol  *x_sym_dst_re;
   t_symbol  *x_sym_scr1_im;
@@ -57,8 +59,8 @@
   int i, n;
   int ok_src1_re, ok_dst_re;
   int ok_src1_im, ok_dst_im;
-  t_float *vec_src1_re, *vec_dst_re;
-  t_float *vec_src1_im, *vec_dst_im;
+  iemarray_t *vec_src1_re, *vec_dst_re;
+  iemarray_t *vec_src1_im, *vec_dst_im;
   
   ok_src1_re = iem_tab_check_arrays(gensym("tab_complex_inv"), x->x_sym_scr1_re, &x->x_beg_mem_src1_re, &x->x_size_src1_re, 0);
   ok_dst_re = iem_tab_check_arrays(gensym("tab_complex_inv"), x->x_sym_dst_re, &x->x_beg_mem_dst_re, &x->x_size_dst_re, 0);
@@ -88,11 +90,11 @@
       {
         t_float re, im, abs;
         
-        re = vec_src1_re[i];
-        im = vec_src1_im[i];
+        re = iemarray_getfloat(vec_src1_re, i);
+        im = iemarray_getfloat(vec_src1_im, i);
         abs = 1.0f / (re*re + im*im);
-        vec_dst_re[i] = re*abs;
-        vec_dst_im[i] = -im*abs;
+        iemarray_setfloat(vec_dst_re, i, re*abs);
+        iemarray_setfloat(vec_dst_im, i, -im*abs);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst_re, garray_class);
@@ -110,8 +112,8 @@
   int beg_src1_im, beg_dst_im;
   int ok_src1_re, ok_dst_re;
   int ok_src1_im, ok_dst_im;
-  t_float *vec_src1_re, *vec_dst_re;
-  t_float *vec_src1_im, *vec_dst_im;
+  iemarray_t *vec_src1_re, *vec_dst_re;
+  iemarray_t *vec_src1_im, *vec_dst_im;
   
   if((argc >= 5) &&
     IS_A_FLOAT(argv,0) &&
@@ -156,11 +158,11 @@
         {
           t_float re, im, abs;
           
-          re = vec_src1_re[i];
-          im = vec_src1_im[i];
+          re = iemarray_getfloat(vec_src1_re, i);
+          im = iemarray_getfloat(vec_src1_im, i);
           abs = 1.0f / (re*re + im*im);
-          vec_dst_re[i] = re*abs;
-          vec_dst_im[i] = -im*abs;
+          iemarray_setfloat(vec_dst_re, i, re*abs);
+          iemarray_setfloat(vec_dst_im, i, -im*abs);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst_re, garray_class);
@@ -185,7 +187,6 @@
 {
   t_tab_complex_inv *x = (t_tab_complex_inv *)pd_new(tab_complex_inv_class);
   t_symbol  *src1_re, *src2_re, *dst_re, *src1_im, *src2_im, *dst_im;
-  t_float time;
   
   if((argc >= 4) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_complex_mul.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_complex_mul.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_complex_mul.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,15 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_complex_mul ------------------------------ */
+/*   x_beg_mem_dst_re[i] = x_beg_mem_src1_re[i]*x_beg_mem_src2_re[i] - x_beg_mem_src1_im[i]*x_beg_mem_src2_im[i]   */
+/*   x_beg_mem_dst_im[i] = x_beg_mem_src1_re[i]*x_beg_mem_src2_im[i] + x_beg_mem_src1_im[i]*x_beg_mem_src2_re[i]   */
 
 typedef struct _tab_complex_mul
 {
@@ -24,12 +26,12 @@
   int       x_offset_src1_im;
   int       x_offset_src2_im;
   int       x_offset_dst_im;
-  t_float   *x_beg_mem_src1_re;
-  t_float   *x_beg_mem_src2_re;
-  t_float   *x_beg_mem_dst_re;
-  t_float   *x_beg_mem_src1_im;
-  t_float   *x_beg_mem_src2_im;
-  t_float   *x_beg_mem_dst_im;
+  iemarray_t   *x_beg_mem_src1_re;
+  iemarray_t   *x_beg_mem_src2_re;
+  iemarray_t   *x_beg_mem_dst_re;
+  iemarray_t   *x_beg_mem_src1_im;
+  iemarray_t   *x_beg_mem_src2_im;
+  iemarray_t   *x_beg_mem_dst_im;
   t_symbol  *x_sym_scr1_re;
   t_symbol  *x_sym_scr2_re;
   t_symbol  *x_sym_dst_re;
@@ -75,8 +77,8 @@
   int i, n;
   int ok_src1_re, ok_src2_re, ok_dst_re;
   int ok_src1_im, ok_src2_im, ok_dst_im;
-  t_float *vec_src1_re, *vec_src2_re, *vec_dst_re;
-  t_float *vec_src1_im, *vec_src2_im, *vec_dst_im;
+  iemarray_t *vec_src1_re, *vec_src2_re, *vec_dst_re;
+  iemarray_t *vec_src1_im, *vec_src2_im, *vec_dst_im;
   
   ok_src1_re = iem_tab_check_arrays(gensym("tab_complex_mul"), x->x_sym_scr1_re, &x->x_beg_mem_src1_re, &x->x_size_src1_re, 0);
   ok_src2_re = iem_tab_check_arrays(gensym("tab_complex_mul"), x->x_sym_scr2_re, &x->x_beg_mem_src2_re, &x->x_size_src2_re, 0);
@@ -114,12 +116,12 @@
       {
         t_float re1, re2, im1, im2;
         
-        re1 = vec_src1_re[i];
-        re2 = vec_src2_re[i];
-        im1 = vec_src1_im[i];
-        im2 = vec_src2_im[i];
-        vec_dst_re[i] = re1*re2 - im1*im2;
-        vec_dst_im[i] = re1*im2 + im1*re2;
+        re1 = iemarray_getfloat(vec_src1_re, i);
+        re2 = iemarray_getfloat(vec_src2_re, i);
+        im1 = iemarray_getfloat(vec_src1_im, i);
+        im2 = iemarray_getfloat(vec_src2_im, i);
+        iemarray_setfloat(vec_dst_re, i, re1*re2 - im1*im2);
+        iemarray_setfloat(vec_dst_im, i, re1*im2 + im1*re2);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst_re, garray_class);
@@ -137,8 +139,8 @@
   int beg_src1_im, beg_src2_im, beg_dst_im;
   int ok_src1_re, ok_src2_re, ok_dst_re;
   int ok_src1_im, ok_src2_im, ok_dst_im;
-  t_float *vec_src1_re, *vec_src2_re, *vec_dst_re;
-  t_float *vec_src1_im, *vec_src2_im, *vec_dst_im;
+  iemarray_t *vec_src1_re, *vec_src2_re, *vec_dst_re;
+  iemarray_t *vec_src1_im, *vec_src2_im, *vec_dst_im;
   
   if((argc >= 7) &&
     IS_A_FLOAT(argv,0) &&
@@ -195,12 +197,12 @@
         {
           t_float re1, re2, im1, im2;
           
-          re1 = vec_src1_re[i];
-          re2 = vec_src2_re[i];
-          im1 = vec_src1_im[i];
-          im2 = vec_src2_im[i];
-          vec_dst_re[i] = re1*re2 - im1*im2;
-          vec_dst_im[i] = re1*im2 + im1*re2;
+          re1 = iemarray_getfloat(vec_src1_re, i);
+          re2 = iemarray_getfloat(vec_src2_re, i);
+          im1 = iemarray_getfloat(vec_src1_im, i);
+          im2 = iemarray_getfloat(vec_src2_im, i);
+          iemarray_setfloat(vec_dst_re, i, re1*re2 - im1*im2);
+          iemarray_setfloat(vec_dst_im, i, re1*im2 + im1*re2);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst_re, garray_class);
@@ -225,7 +227,6 @@
 {
   t_tab_complex_mul *x = (t_tab_complex_mul *)pd_new(tab_complex_mul_class);
   t_symbol  *src1_re, *src2_re, *dst_re, *src1_im, *src2_im, *dst_im;
-  t_float time;
   
   if((argc >= 6) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_const.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_const.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_const.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,21 +1,22 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_const ------------------------------ */
+/*   x_beg_mem_dst[i] = c   */
 
 typedef struct _tab_const
 {
   t_object  x_obj;
   int       x_size_dst;
   int       x_offset_dst;
-  t_float x_const;
-  t_float *x_beg_mem_dst;
+  t_float   x_const;
+  iemarray_t *x_beg_mem_dst;
   t_symbol  *x_sym_dst;
 } t_tab_const;
 
@@ -30,7 +31,7 @@
 {
   int i, n;
   int ok_dst;
-  t_float *vec_dst;
+  iemarray_t *vec_dst;
   
   ok_dst = iem_tab_check_arrays(gensym("tab_const"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
   
@@ -43,7 +44,7 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = 0.0f;
+        iemarray_setfloat(vec_dst, i, 0.0f);
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);
@@ -55,7 +56,7 @@
 {
   int i, n;
   int ok_dst;
-  t_float *vec_dst;
+  iemarray_t *vec_dst;
   
   ok_dst = iem_tab_check_arrays(gensym("tab_const"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
   
@@ -68,7 +69,7 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = c;
+        iemarray_setfloat(vec_dst, i, c);
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);
@@ -81,7 +82,8 @@
   int beg_dst;
   int i, n;
   int ok_dst;
-  t_float *vec_dst, c;
+  iemarray_t *vec_dst;
+  t_float c;
   
   if((argc >= 3) &&
     IS_A_FLOAT(argv,0) &&
@@ -106,7 +108,7 @@
         t_garray *a;
         
         for(i=0; i<n; i++)
-          vec_dst[i] = c;
+          iemarray_setfloat(vec_dst, i, c);
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
         garray_redraw(a);
@@ -128,7 +130,6 @@
 {
   t_tab_const *x = (t_tab_const *)pd_new(tab_const_class);
   t_symbol  *dst;
-  t_float time;
   
   if((argc >= 1) &&
     IS_A_SYMBOL(argv,0))

Modified: trunk/externals/iem/iem_tab/src/tab_conv.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_conv.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_conv.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 
 #include "m_pd.h"
@@ -9,7 +9,14 @@
 #include "iem_tab.h"
 
 
-/* -------------------------- tab_conv ------------------------------ */
+/* ---------------------------- tab_conv ------------------------------- */
+/*   for(i=0; i<x_size_src1; i++)                                        */
+/*   {                                                                   */
+/*     sum = 0.0f;                                                       */
+/*     for(j=0; j<x_size_src2; j++)                                      */
+/*       sum += x_beg_mem_src1[i+j-x_size_src2/2] * x_beg_mem_src2[j];   */
+/*     x_beg_mem_dst[i] = sum;                                           */
+/*   }                                                                   */
 
 typedef struct _tab_conv
 {
@@ -20,9 +27,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -30,6 +37,10 @@
 
 static t_class *tab_conv_class;
 
+static void tab_conv_tick(t_tab_conv *x)
+{
+}
+
 static void tab_conv_src1(t_tab_conv *x, t_symbol *s)
 {
   x->x_sym_scr1 = s;
@@ -49,7 +60,7 @@
 {
   int i, j, k, l, min_s2, plu_s2, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   t_float sum=0.0f;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_conv"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
@@ -80,9 +91,9 @@
           {
             k = j + i;
             if((k >= 0) && (k < n))
-              sum += vec_src1[k] * vec_src2[l];
+              sum += iemarray_getfloat(vec_src1, k) * iemarray_getfloat(vec_src2, l);
           }
-          vec_dst[i] = sum;
+          iemarray_setfloat(vec_dst, i, sum);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -98,7 +109,7 @@
   int n_src1, n_src2;
   int i, j, k, l, min_s2, plu_s2;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   t_float sum=0.0f;
   
   if((argc >= 5) &&
@@ -148,9 +159,9 @@
             {
               k = j + i;
               if((k >= 0) && (k < n_src1))
-                sum += vec_src1[k] * vec_src2[l];
+                sum += iemarray_getfloat(vec_src1, k) * iemarray_getfloat(vec_src2, l);
             }
-            vec_dst[i] = sum;
+            iemarray_setfloat(vec_dst, i, sum);
           }
           outlet_bang(x->x_obj.ob_outlet);
           a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -174,7 +185,6 @@
 {
   t_tab_conv *x = (t_tab_conv *)pd_new(tab_conv_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_copy.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_copy.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_copy.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,8 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
+/*   x_beg_mem_dst[i] = x_beg_mem_src1[i]   */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -16,8 +17,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_copy;
@@ -38,7 +39,7 @@
 {
   int i, n;
   int ok_src, ok_dst;
-  t_float *vec_src, *vec_dst;
+  iemarray_t *vec_src, *vec_dst;
   
   ok_src = iem_tab_check_arrays(gensym("tab_copy"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_copy"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -56,7 +57,7 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = vec_src[i];
+        iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src, i));
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);
@@ -69,7 +70,7 @@
   int beg_src, beg_dst;
   int i, n;
   int ok_src, ok_dst;
-  t_float *vec_src, *vec_dst;
+  iemarray_t *vec_src, *vec_dst;
   
   if((argc >= 3) &&
     IS_A_FLOAT(argv,0) &&
@@ -98,7 +99,7 @@
         t_garray *a;
         
         for(i=0; i<n; i++)
-          vec_dst[i] = vec_src[i];
+          iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src, i));
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
         garray_redraw(a);

Modified: trunk/externals/iem/iem_tab/src/tab_counter.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_counter.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_counter.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,20 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_counter ------------------------------ */
+/*   for(i=0; i<x_size_src1; i++)      */
+/*   {                                 */
+/*     if(x_beg_mem_src1[i] == 0.0f)   */
+/*       x_beg_mem_dst[i] = 0.0f;      */
+/*     else                            */
+/*       x_beg_mem_dst[i] += 1.0f;     */
+/*   }                                 */
 
 typedef struct _tab_counter
 {
@@ -16,8 +23,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_counter;
@@ -33,7 +40,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_counter"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_counter"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -53,10 +60,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] == 0.0f)
-          vec_dst[i] = 0.0f;
+        if(iemarray_getfloat(vec_src1, i) == 0.0f)
+          iemarray_setfloat(vec_dst, i, 0.0f);
         else
-          vec_dst[i] += 1.0f;
+          iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_dst, i)+1.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -75,7 +82,7 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   if((argc >= 3) &&
     IS_A_FLOAT(argv,0) &&
@@ -105,10 +112,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] == 0.0f)
-            vec_dst[i] = 0.0f;
+          if(iemarray_getfloat(vec_src1, i) == 0.0f)
+            iemarray_setfloat(vec_dst, i, 0.0f);
           else
-            vec_dst[i] += 1.0f;
+            iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_dst, i)+1.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -128,7 +135,7 @@
   int beg_dst;
   int i, n;
   int ok_dst;
-  t_float *vec_dst;
+  iemarray_t *vec_dst;
   
   ok_dst = iem_tab_check_arrays(gensym("tab_counter"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
   
@@ -141,7 +148,7 @@
       t_garray *a;
       
       for(i=0; i<n; i++)
-        vec_dst[i] = 0.0f;
+        iemarray_setfloat(vec_dst, i, 0.0f);
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
       garray_redraw(a);

Modified: trunk/externals/iem/iem_tab/src/tab_cross_corr.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_cross_corr.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_cross_corr.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -17,9 +17,9 @@
   int       x_size_src2;
   int       x_size_dst;
   int       x_n;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_float   x_factor;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
@@ -36,7 +36,8 @@
   x->x_counter++;
   if(x->x_counter < x->x_n)
   {
-    t_float *vec_src1, *vec_src2, *vec_dst, sum;
+    iemarray_t *vec_src1, *vec_src2, *vec_dst;
+    t_float sum;
     int j, m;
     
     vec_src1 = x->x_beg_mem_src1 + x->x_counter;
@@ -46,9 +47,9 @@
     sum = 0.0f;
     for(j=0; j<m; j++)
     {
-      sum += vec_src1[j]*vec_src2[j];
+      sum += iemarray_getfloat(vec_src1, j)*iemarray_getfloat(vec_src2, j);
     }
-    vec_dst[0] = sum*x->x_factor;
+    iemarray_setfloat(vec_dst, 0, sum*x->x_factor);
     clock_delay(x->x_clock, x->x_delay);
   }
   else
@@ -62,12 +63,12 @@
   }
 }
 
-static void tab_cross_corr_time(t_tab_cross_corr *x, t_floatarg time)
+static void tab_cross_corr_time(t_tab_cross_corr *x, t_floatarg dtime)
 {
-  if(time < 0.0f)
-    time = 0.0f;
+  if(dtime < 0.0f)
+    dtime = 0.0f;
   
-  x->x_delay = time;
+  x->x_delay = dtime;
 }
 
 static void tab_cross_corr_factor(t_tab_cross_corr *x, t_floatarg factor)
@@ -94,7 +95,7 @@
 {
   int i, j, m, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   t_float sum, f;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_cross_corr"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
@@ -127,9 +128,9 @@
           sum = 0.0f;
           for(j=0; j<m; j++)
           {
-            sum += vec_src1[i+j]*vec_src2[j];
+            sum += iemarray_getfloat(vec_src1, i+j)*iemarray_getfloat(vec_src2, j);
           }
-          vec_dst[i] = sum*f;
+          iemarray_setfloat(vec_dst, i, sum*f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -145,10 +146,9 @@
         sum = 0.0f;
         for(j=0; j<m; j++)
         {
-          sum += vec_src1[j]*vec_src2[j];
+          sum += iemarray_getfloat(vec_src1, j)*iemarray_getfloat(vec_src2, j);
         }
-        vec_dst[0] = sum*f;
-        
+        iemarray_setfloat(vec_dst, 0, sum*f);
         clock_delay(x->x_clock, x->x_delay);
       }
     }
@@ -164,20 +164,20 @@
 {
   t_tab_cross_corr *x = (t_tab_cross_corr *)pd_new(tab_cross_corr_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time, factor;
+  t_float dtime=0.0f, factor=1.0f;
   
+  if((argc >= 5) && IS_A_FLOAT(argv,4))
+    dtime = (t_float)atom_getfloatarg(4, argc, argv);
+  if((argc >= 4) && IS_A_FLOAT(argv,3))
+    factor = (t_float)atom_getfloatarg(3, argc, argv);
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&
     IS_A_SYMBOL(argv,1) &&
-    IS_A_SYMBOL(argv,2) &&
-    IS_A_FLOAT(argv,3) &&
-    IS_A_FLOAT(argv,4))
+    IS_A_SYMBOL(argv,2))
   {
     src1 = (t_symbol *)atom_getsymbolarg(0, argc, argv);
     src2 = (t_symbol *)atom_getsymbolarg(1, argc, argv);
     dst = (t_symbol *)atom_getsymbolarg(2, argc, argv);
-    factor = (t_float)atom_getfloatarg(3, argc, argv);
-    time = (t_float)atom_getfloatarg(4, argc, argv);
   }
   else
   {
@@ -186,10 +186,10 @@
     return(0);
   }
   
-  if(time < 0.0f)
-    time = 0.0f;
+  if(dtime < 0.0f)
+    dtime = 0.0f;
   
-  x->x_delay = time;
+  x->x_delay = dtime;
   x->x_factor = factor;
   x->x_sym_scr1 = src1;
   x->x_sym_scr2 = src2;

Modified: trunk/externals/iem/iem_tab/src/tab_div.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_div.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_div.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,14 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_div ------------------------------ */
+/*   x_beg_mem_dst[i] = x_beg_mem_src1[i]/x_offset_src2[i]   */
 
 typedef struct _tab_div
 {
@@ -18,9 +19,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -47,7 +48,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_div"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_div"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -71,10 +72,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src2[i] == 0.0f)
-          vec_dst[i] = 0.0f;
+        if(iemarray_getfloat(vec_src2, i) == 0.0f)
+          iemarray_setfloat(vec_dst, i, 0.0f);
         else
-          vec_dst[i] = vec_src1[i] / vec_src2[i];
+          iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src1, i) / iemarray_getfloat(vec_src2, i));
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -88,7 +89,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -124,10 +125,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src2[i] == 0.0f)
-            vec_dst[i] = 0.0f;
+          if(iemarray_getfloat(vec_src2, i) == 0.0f)
+            iemarray_setfloat(vec_dst, i, 0.0f);
           else
-            vec_dst[i] = vec_src1[i] / vec_src2[i];
+            iemarray_setfloat(vec_dst, i, iemarray_getfloat(vec_src1, i) / iemarray_getfloat(vec_src2, i));
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -150,7 +151,6 @@
 {
   t_tab_div *x = (t_tab_div *)pd_new(tab_div_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_eq.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_eq.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_eq.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_eq ------------------------------ */
+/*     if(x_beg_mem_src1[i] == x_beg_mem_src2[i])   */
+/*       x_beg_mem_dst[i] = 1.0f;      */
+/*     else                            */
+/*       x_beg_mem_dst[i] = 0.0f;      */
 
 typedef struct _tab_eq
 {
@@ -18,9 +22,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -47,7 +51,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_eq"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_eq"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -71,10 +75,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] == vec_src2[i])
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) == iemarray_getfloat(vec_src2, i))
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -88,7 +92,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -124,10 +128,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] == vec_src2[i])
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) == iemarray_getfloat(vec_src2, i))
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -150,7 +154,6 @@
 {
   t_tab_eq *x = (t_tab_eq *)pd_new(tab_eq_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_eq_scalar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_eq_scalar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_eq_scalar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_eq_scalar ------------------------------ */
+/*  if(x_beg_mem_src1[i] == compare)   */
+/*    x_beg_mem_dst[i] = 1.0f;      */
+/*  else                            */
+/*    x_beg_mem_dst[i] += 0.0f;     */
 
 typedef struct _tab_eq_scalar
 {
@@ -16,8 +20,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_eq_scalar;
@@ -33,7 +37,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_eq_scalar"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_eq_scalar"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -53,10 +57,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] == compare)
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) == compare)
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -75,7 +79,8 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst, compare;
+  iemarray_t *vec_src1, *vec_dst;
+  t_float compare;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -107,10 +112,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] == compare)
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) == compare)
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);

Modified: trunk/externals/iem/iem_tab/src/tab_fft.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_fft.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_fft.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -9,6 +9,7 @@
 #include <math.h>
 
 /* -------------------------- tab_fft ------------------------------ */
+/*  complex FFT  */
 
 typedef struct _tab_fft
 {
@@ -22,10 +23,10 @@
   int       x_offset_dst_re;
   int       x_offset_dst_im;
   int       x_fftsize;
-  t_float   *x_beg_mem_src_re;
-  t_float   *x_beg_mem_src_im;
-  t_float   *x_beg_mem_dst_re;
-  t_float   *x_beg_mem_dst_im;
+  iemarray_t   *x_beg_mem_src_re;
+  iemarray_t   *x_beg_mem_src_im;
+  iemarray_t   *x_beg_mem_dst_re;
+  iemarray_t   *x_beg_mem_dst_im;
   TAB_COMPLEX   *x_sin_cos;
   t_symbol  *x_sym_src_re;
   t_symbol  *x_sym_src_im;
@@ -100,7 +101,7 @@
   int fs2 = fftsize / 2;
   TAB_COMPLEX w;
   TAB_COMPLEX *sincos = x->x_sin_cos;
-  t_float *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
+  iemarray_t *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
   t_float old1_re, old1_im, old2_re, old2_im;
   
   ok_src_re = iem_tab_check_arrays(gensym("tab_fft"), x->x_sym_src_re, &x->x_beg_mem_src_re, &x->x_size_src_re, fftsize);
@@ -118,8 +119,8 @@
     
     for(k=0; k<fftsize; k++)
     {
-      vec_dst_re[k] = vec_src_re[k];
-      vec_dst_im[k] = vec_src_im[k];
+      iemarray_setfloat(vec_dst_re, k, iemarray_getfloat(vec_src_re, k));
+      iemarray_setfloat(vec_dst_im, k, iemarray_getfloat(vec_src_im, k));
     }
     
     i_inc = fs2;
@@ -132,15 +133,16 @@
         w_index = 0;
         for(k=0; k<i_inc; k++)
         {
-          old1_re = vec_dst_re[v_index];
-          old1_im = vec_dst_im[v_index];
-          old2_re = vec_dst_re[v_index+i_inc];
-          old2_im = vec_dst_im[v_index+i_inc];
+          old1_re = iemarray_getfloat(vec_dst_re, v_index);
+          old1_im = iemarray_getfloat(vec_dst_im, v_index);
+          old2_re = iemarray_getfloat(vec_dst_re, v_index+i_inc);
+          old2_im = iemarray_getfloat(vec_dst_im, v_index+i_inc);
+          
           w = sincos[w_index];
-          vec_dst_re[v_index+i_inc] = (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag;
-          vec_dst_im[v_index+i_inc] = (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag;
-          vec_dst_re[v_index] = old1_re + old2_re;
-          vec_dst_im[v_index] = old1_im + old2_im;
+          iemarray_setfloat(vec_dst_re, v_index+i_inc, (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag);
+          iemarray_setfloat(vec_dst_im, v_index+i_inc, (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag);
+          iemarray_setfloat(vec_dst_re, v_index, old1_re + old2_re);
+          iemarray_setfloat(vec_dst_im, v_index, old1_im + old2_im);
           w_index += w_inc;
           v_index++;
         }
@@ -162,12 +164,12 @@
       j = j + k;
       if(i < j)
       {
-        old1_re = vec_dst_re[j];
-        old1_im = vec_dst_im[j];
-        vec_dst_re[j] = vec_dst_re[i];
-        vec_dst_im[j] = vec_dst_im[i];
-        vec_dst_re[i] = old1_re;
-        vec_dst_im[i] = old1_im;
+        old1_re = iemarray_getfloat(vec_dst_re, j);
+        old1_im = iemarray_getfloat(vec_dst_im, j);
+        iemarray_setfloat(vec_dst_re, j, iemarray_getfloat(vec_dst_re, i));
+        iemarray_setfloat(vec_dst_im, j, iemarray_getfloat(vec_dst_im, i));
+        iemarray_setfloat(vec_dst_re, i, old1_re);
+        iemarray_setfloat(vec_dst_im, i, old1_im);
       }
     }
     
@@ -204,7 +206,7 @@
   int fs2 = fftsize / 2;
   TAB_COMPLEX w;
   TAB_COMPLEX *sincos = x->x_sin_cos;
-  t_float *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
+  iemarray_t *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
   t_float old1_re, old1_im, old2_re, old2_im;
   
   if((argc >= 4) &&
@@ -242,8 +244,8 @@
       
       for(k=0; k<fftsize; k++)
       {
-        vec_dst_re[k] = vec_src_re[k];
-        vec_dst_im[k] = vec_src_im[k];
+        iemarray_setfloat(vec_dst_re, k, iemarray_getfloat(vec_src_re, k));
+        iemarray_setfloat(vec_dst_im, k, iemarray_getfloat(vec_src_im, k));
       }
       
       i_inc = fs2;
@@ -256,15 +258,16 @@
           w_index = 0;
           for(k=0; k<i_inc; k++)
           {
-            old1_re = vec_dst_re[v_index];
-            old1_im = vec_dst_im[v_index];
-            old2_re = vec_dst_re[v_index+i_inc];
-            old2_im = vec_dst_im[v_index+i_inc];
+            old1_re = iemarray_getfloat(vec_dst_re, v_index);
+            old1_im = iemarray_getfloat(vec_dst_im, v_index);
+            old2_re = iemarray_getfloat(vec_dst_re, v_index+i_inc);
+            old2_im = iemarray_getfloat(vec_dst_im, v_index+i_inc);
+            
             w = sincos[w_index];
-            vec_dst_re[v_index+i_inc] = (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag;
-            vec_dst_im[v_index+i_inc] = (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag;
-            vec_dst_re[v_index] = old1_re + old2_re;
-            vec_dst_im[v_index] = old1_im + old2_im;
+            iemarray_setfloat(vec_dst_re, v_index+i_inc, (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag);
+            iemarray_setfloat(vec_dst_im, v_index+i_inc, (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag);
+            iemarray_setfloat(vec_dst_re, v_index, old1_re + old2_re);
+            iemarray_setfloat(vec_dst_im, v_index, old1_im + old2_im);
             w_index += w_inc;
             v_index++;
           }
@@ -286,12 +289,12 @@
         j = j + k;
         if(i < j)
         {
-          old1_re = vec_dst_re[j];
-          old1_im = vec_dst_im[j];
-          vec_dst_re[j] = vec_dst_re[i];
-          vec_dst_im[j] = vec_dst_im[i];
-          vec_dst_re[i] = old1_re;
-          vec_dst_im[i] = old1_im;
+          old1_re = iemarray_getfloat(vec_dst_re, j);
+          old1_im = iemarray_getfloat(vec_dst_im, j);
+          iemarray_setfloat(vec_dst_re, j, iemarray_getfloat(vec_dst_re, i));
+          iemarray_setfloat(vec_dst_im, j, iemarray_getfloat(vec_dst_im, i));
+          iemarray_setfloat(vec_dst_re, i, old1_re);
+          iemarray_setfloat(vec_dst_im, i, old1_im);
         }
       }
       

Modified: trunk/externals/iem/iem_tab/src/tab_find_exact_peaks.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_find_exact_peaks.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_find_exact_peaks.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -17,7 +17,7 @@
   t_object  x_obj;
   int       x_size_src1;
   int       x_offset_src1;
-  t_float   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src1;
   int       x_work_alloc;
   int       *x_beg_mem_work1;
   t_float   *x_beg_mem_work2;
@@ -94,8 +94,9 @@
 static void tab_find_exact_peaks_bang(t_tab_find_exact_peaks *x)
 {
   int i, n, w, ww;
-  int ok_src, peak_index=0, sort_index=0;
-  t_float *vec_src, *vec_work2;
+  int ok_src, peak_index=0;
+  t_float *vec_work2;
+  iemarray_t *vec_src;
   int *vec_work1;
   t_float max=-1.0e37;
   int max_peaks=x->x_n_peaks;
@@ -145,10 +146,10 @@
             
             for(i=beg; i<end; i++)
             {
-              diff_low = vec_src[i-low_bord] - abs_min_height_diff;
-              diff_high = vec_src[i+high_bord] - abs_min_height_diff;
-              if((vec_src[i-low_bord-1] < diff_low) && !vec_work1[i-low_bord] && 
-                (vec_src[i+high_bord+1] < diff_high) && !vec_work1[i+high_bord])
+              diff_low = iemarray_getfloat(vec_src, i-low_bord) - abs_min_height_diff;
+              diff_high = iemarray_getfloat(vec_src, i+high_bord) - abs_min_height_diff;
+              if((iemarray_getfloat(vec_src, i-low_bord-1) < diff_low) && !vec_work1[i-low_bord] && 
+                (iemarray_getfloat(vec_src, i+high_bord+1) < diff_high) && !vec_work1[i+high_bord])
               {
                 for(j=i-low_bord; j<=i+high_bord; j++)
                   vec_work1[j] = 1;
@@ -174,7 +175,7 @@
             peak_index = (i + j) / 2;
             if(sort_index <= max_peaks)
             {
-              outlet_float(x->x_peak_value_out, vec_src[i]);
+              outlet_float(x->x_peak_value_out, iemarray_getfloat(vec_src, i));
               outlet_float(x->x_peak_index_out, (t_float)peak_index);
               outlet_float(x->x_sort_index_out, sort_index);
               sort_index++;
@@ -207,15 +208,15 @@
             
             for(i=beg; i<end; i++)
             {
-              diff_low = vec_src[i-low_bord] - abs_min_height_diff;
-              diff_high = vec_src[i+high_bord] - abs_min_height_diff;
-              if((vec_src[i-low_bord-1] < diff_low) && !vec_work1[i-low_bord] && 
-                (vec_src[i+high_bord+1] < diff_high) && !vec_work1[i+high_bord])
+              diff_low = iemarray_getfloat(vec_src, i-low_bord) - abs_min_height_diff;
+              diff_high = iemarray_getfloat(vec_src, i+high_bord) - abs_min_height_diff;
+              if((iemarray_getfloat(vec_src, i-low_bord-1) < diff_low) && !vec_work1[i-low_bord] && 
+                (iemarray_getfloat(vec_src, i+high_bord+1) < diff_high) && !vec_work1[i+high_bord])
               {
                 for(j=i-low_bord; j<=i+high_bord; j++)
                 {
                   vec_work1[j] = 1;
-                  vec_work2[j] = vec_src[j];
+                  vec_work2[j] = iemarray_getfloat(vec_src, j);
                 }
                 //post("a[%d]=%g, a[%d]=%g",i-low_bord,vec_src[i-low_bord],i+high_bord,vec_src[i+high_bord]);
               }

Modified: trunk/externals/iem/iem_tab/src/tab_find_peaks.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_find_peaks.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_find_peaks.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -17,7 +17,7 @@
   t_object  x_obj;
   int       x_size_src1;
   int       x_offset_src1;
-  t_float   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src1;
   int       x_work_alloc;
   int       *x_beg_mem_work1;
   t_float   *x_beg_mem_work2;
@@ -94,8 +94,9 @@
 static void tab_find_peaks_bang(t_tab_find_peaks *x)
 {
   int i, n, w, ww;
-  int ok_src, peak_index=0, sort_index=0;
-  t_float *vec_src, *vec_work2;
+  int ok_src, peak_index=0;
+  iemarray_t *vec_src;
+  t_float *vec_work2;
   int *vec_work1;
   t_float max=-1.0e37;
   int max_peaks=x->x_n_peaks;
@@ -145,10 +146,10 @@
             
             for(i=beg; i<end; i++)
             {
-              diff_low = vec_src[i-low_bord] - abs_min_height_diff;
-              diff_high = vec_src[i+high_bord] - abs_min_height_diff;
-              if((vec_src[i-low_bord-1] < diff_low) && !vec_work1[i-low_bord] && 
-                (vec_src[i+high_bord+1] < diff_high) && !vec_work1[i+high_bord])
+              diff_low = iemarray_getfloat(vec_src, i-low_bord) - abs_min_height_diff;
+              diff_high = iemarray_getfloat(vec_src, i+high_bord) - abs_min_height_diff;
+              if((iemarray_getfloat(vec_src, i-low_bord-1) < diff_low) && !vec_work1[i-low_bord] && 
+                 (iemarray_getfloat(vec_src, i+high_bord+1) < diff_high) && !vec_work1[i+high_bord])
               {
                 for(j=i-low_bord; j<=i+high_bord; j++)
                   vec_work1[j] = 1;
@@ -174,7 +175,7 @@
             peak_index = (i + j) / 2;
             if(sort_index <= max_peaks)
             {
-              outlet_float(x->x_peak_value_out, vec_src[i]);
+              outlet_float(x->x_peak_value_out, iemarray_getfloat(vec_src, i));
               outlet_float(x->x_peak_index_out, (t_float)peak_index);
               outlet_float(x->x_sort_index_out, sort_index);
               sort_index++;
@@ -207,15 +208,15 @@
             
             for(i=beg; i<end; i++)
             {
-              diff_low = vec_src[i-low_bord] - abs_min_height_diff;
-              diff_high = vec_src[i+high_bord] - abs_min_height_diff;
-              if((vec_src[i-low_bord-1] < diff_low) && !vec_work1[i-low_bord] && 
-                (vec_src[i+high_bord+1] < diff_high) && !vec_work1[i+high_bord])
+              diff_low = iemarray_getfloat(vec_src, i-low_bord) - abs_min_height_diff;
+              diff_high = iemarray_getfloat(vec_src, i+high_bord) - abs_min_height_diff;
+              if((iemarray_getfloat(vec_src, i-low_bord-1) < diff_low) && !vec_work1[i-low_bord] && 
+                 (iemarray_getfloat(vec_src, i+high_bord+1) < diff_high) && !vec_work1[i+high_bord])
               {
                 for(j=i-low_bord; j<=i+high_bord; j++)
                 {
                   vec_work1[j] = 1;
-                  vec_work2[j] = vec_src[j];
+                  vec_work2[j] = iemarray_getfloat(vec_src, j);
                 }
                 //post("a[%d]=%g, a[%d]=%g",i-low_bord,vec_src[i-low_bord],i+high_bord,vec_src[i+high_bord]);
               }

Modified: trunk/externals/iem/iem_tab/src/tab_ge.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_ge.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_ge.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -8,6 +8,10 @@
 #include "iem_tab.h"
 
 /* -------------------------- tab_ge ------------------------------ */
+/*     if(x_beg_mem_src1[i] >= x_beg_mem_src2[i])   */
+/*       x_beg_mem_dst[i] = 1.0f;      */
+/*     else                            */
+/*       x_beg_mem_dst[i] = 0.0f;      */
 
 typedef struct _tab_ge
 {
@@ -18,9 +22,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -47,7 +51,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_ge"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_ge"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -71,10 +75,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] >= vec_src2[i])
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) >= iemarray_getfloat(vec_src2, i))
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -88,7 +92,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -124,10 +128,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] >= vec_src2[i])
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) >= iemarray_getfloat(vec_src2, i))
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -150,7 +154,6 @@
 {
   t_tab_ge *x = (t_tab_ge *)pd_new(tab_ge_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_ge_scalar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_ge_scalar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_ge_scalar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_ge_scalar ------------------------------ */
+/*  if(x_beg_mem_src1[i] >= compare)   */
+/*    x_beg_mem_dst[i] = 1.0f;      */
+/*  else                            */
+/*    x_beg_mem_dst[i] += 0.0f;     */
 
 typedef struct _tab_ge_scalar
 {
@@ -16,8 +20,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_ge_scalar;
@@ -33,7 +37,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_ge_scalar"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_ge_scalar"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -53,10 +57,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] >= compare)
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) >= compare)
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -75,7 +79,8 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst, compare;
+  t_float compare;
+  iemarray_t *vec_src1, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -107,10 +112,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] >= compare)
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) >= compare)
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);

Modified: trunk/externals/iem/iem_tab/src/tab_gt.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_gt.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_gt.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_gt ------------------------------ */
+/*     if(x_beg_mem_src1[i] > x_beg_mem_src2[i])   */
+/*       x_beg_mem_dst[i] = 1.0f;      */
+/*     else                            */
+/*       x_beg_mem_dst[i] = 0.0f;      */
 
 typedef struct _tab_gt
 {
@@ -18,9 +22,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -47,7 +51,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_gt"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_gt"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -71,10 +75,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] > vec_src2[i])
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) > iemarray_getfloat(vec_src2, i))
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -88,7 +92,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -124,10 +128,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] > vec_src2[i])
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) > iemarray_getfloat(vec_src2, i))
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -150,7 +154,6 @@
 {
   t_tab_gt *x = (t_tab_gt *)pd_new(tab_gt_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_gt_scalar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_gt_scalar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_gt_scalar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_gt_scalar ------------------------------ */
+/*  if(x_beg_mem_src1[i] > compare)   */
+/*    x_beg_mem_dst[i] = 1.0f;      */
+/*  else                            */
+/*    x_beg_mem_dst[i] += 0.0f;     */
 
 typedef struct _tab_gt_scalar
 {
@@ -16,8 +20,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_gt_scalar;
@@ -33,7 +37,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_gt_scalar"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_gt_scalar"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -53,10 +57,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] > compare)
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) > compare)
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -75,7 +79,8 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst, compare;
+  t_float compare;
+  iemarray_t *vec_src1, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -107,10 +112,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] > compare)
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) > compare)
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);

Modified: trunk/externals/iem/iem_tab/src/tab_ifft.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_ifft.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_ifft.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -9,6 +9,7 @@
 #include <math.h>
 
 /* -------------------------- tab_ifft ------------------------------ */
+/*  complex inverse FFT  */
 
 typedef struct _tab_ifft
 {
@@ -22,10 +23,10 @@
   int       x_offset_dst_re;
   int       x_offset_dst_im;
   int       x_fftsize;
-  t_float   *x_beg_mem_src_re;
-  t_float   *x_beg_mem_src_im;
-  t_float   *x_beg_mem_dst_re;
-  t_float   *x_beg_mem_dst_im;
+  iemarray_t   *x_beg_mem_src_re;
+  iemarray_t   *x_beg_mem_src_im;
+  iemarray_t   *x_beg_mem_dst_re;
+  iemarray_t   *x_beg_mem_dst_im;
   TAB_COMPLEX   *x_sin_cos;
   t_symbol  *x_sym_src_re;
   t_symbol  *x_sym_src_im;
@@ -100,7 +101,7 @@
   int fs2 = fftsize / 2;
   TAB_COMPLEX w;
   TAB_COMPLEX *sincos = x->x_sin_cos;
-  t_float *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
+  iemarray_t *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
   t_float old1_re, old1_im, old2_re, old2_im, g;
   
   ok_src_re = iem_tab_check_arrays(gensym("tab_ifft"), x->x_sym_src_re, &x->x_beg_mem_src_re, &x->x_size_src_re, fftsize);
@@ -119,8 +120,8 @@
     
     for(j=0; j<fftsize; j++)
     {
-      vec_dst_re[j] = vec_src_re[j];
-      vec_dst_im[j] = vec_src_im[j];
+      iemarray_setfloat(vec_dst_re, j, iemarray_getfloat(vec_src_re, j));
+      iemarray_setfloat(vec_dst_im, j, iemarray_getfloat(vec_src_im, j));
     }
     
     i_inc = fs2;
@@ -133,15 +134,16 @@
         w_index = 0;
         for(k=0; k<i_inc; k++)
         {
-          old1_re = vec_dst_re[v_index];
-          old1_im = vec_dst_im[v_index];
-          old2_re = vec_dst_re[v_index+i_inc];
-          old2_im = vec_dst_im[v_index+i_inc];
+          old1_re = iemarray_getfloat(vec_dst_re, v_index);
+          old1_im = iemarray_getfloat(vec_dst_im, v_index);
+          old2_re = iemarray_getfloat(vec_dst_re, v_index+i_inc);
+          old2_im = iemarray_getfloat(vec_dst_im, v_index+i_inc);
+          
           w = sincos[w_index];
-          vec_dst_re[v_index+i_inc] = (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag;
-          vec_dst_im[v_index+i_inc] = (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag;
-          vec_dst_re[v_index] = old1_re + old2_re;
-          vec_dst_im[v_index] = old1_im + old2_im;
+          iemarray_setfloat(vec_dst_re, v_index+i_inc, (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag);
+          iemarray_setfloat(vec_dst_im, v_index+i_inc, (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag);
+          iemarray_setfloat(vec_dst_re, v_index, old1_re + old2_re);
+          iemarray_setfloat(vec_dst_im, v_index, old1_im + old2_im);
           w_index += w_inc;
           v_index++;
         }
@@ -163,12 +165,12 @@
       j = j + k;
       if(i < j)
       {
-        old1_re = vec_dst_re[j];
-        old1_im = vec_dst_im[j];
-        vec_dst_re[j] = vec_dst_re[i];
-        vec_dst_im[j] = vec_dst_im[i];
-        vec_dst_re[i] = old1_re;
-        vec_dst_im[i] = old1_im;
+        old1_re = iemarray_getfloat(vec_dst_re, j);
+        old1_im = iemarray_getfloat(vec_dst_im, j);
+        iemarray_setfloat(vec_dst_re, j, iemarray_getfloat(vec_dst_re, i));
+        iemarray_setfloat(vec_dst_im, j, iemarray_getfloat(vec_dst_im, i));
+        iemarray_setfloat(vec_dst_re, i, old1_re);
+        iemarray_setfloat(vec_dst_im, i, old1_im);
       }
     }
     
@@ -188,8 +190,8 @@
     g = 1.0f / (t_float)fftsize;
     for(i = 0; i < fftsize; i++)
     {
-      vec_dst_re[i] *= g;
-      vec_dst_im[i] *= g;
+      iemarray_setfloat(vec_dst_re, i, iemarray_getfloat(vec_dst_re, i)*g);
+      iemarray_setfloat(vec_dst_im, i, iemarray_getfloat(vec_dst_im, i)*g);
     }
     
     outlet_bang(x->x_obj.ob_outlet);
@@ -211,7 +213,7 @@
   int fs2 = fftsize / 2;
   TAB_COMPLEX w;
   TAB_COMPLEX *sincos = x->x_sin_cos;
-  t_float *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
+  iemarray_t *vec_src_re, *vec_src_im, *vec_dst_re, *vec_dst_im;
   t_float old1_re, old1_im, old2_re, old2_im, g;
   
   if((argc >= 4) &&
@@ -249,8 +251,8 @@
       
       for(j=0; j<fftsize; j++)
       {
-        vec_dst_re[j] = vec_src_re[j];
-        vec_dst_im[j] = vec_src_im[j];
+        iemarray_setfloat(vec_dst_re, j, iemarray_getfloat(vec_src_re, j));
+        iemarray_setfloat(vec_dst_im, j, iemarray_getfloat(vec_src_im, j));
       }
       
       i_inc = fs2;
@@ -263,15 +265,16 @@
           w_index = 0;
           for(k=0; k<i_inc; k++)
           {
-            old1_re = vec_dst_re[v_index];
-            old1_im = vec_dst_im[v_index];
-            old2_re = vec_dst_re[v_index+i_inc];
-            old2_im = vec_dst_im[v_index+i_inc];
+            old1_re = iemarray_getfloat(vec_dst_re, v_index);
+            old1_im = iemarray_getfloat(vec_dst_im, v_index);
+            old2_re = iemarray_getfloat(vec_dst_re, v_index+i_inc);
+            old2_im = iemarray_getfloat(vec_dst_im, v_index+i_inc);
+            
             w = sincos[w_index];
-            vec_dst_re[v_index+i_inc] = (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag;
-            vec_dst_im[v_index+i_inc] = (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag;
-            vec_dst_re[v_index] = old1_re + old2_re;
-            vec_dst_im[v_index] = old1_im + old2_im;
+            iemarray_setfloat(vec_dst_re, v_index+i_inc, (old1_re - old2_re)*w.real - (old1_im - old2_im)*w.imag);
+            iemarray_setfloat(vec_dst_im, v_index+i_inc, (old1_im - old2_im)*w.real + (old1_re - old2_re)*w.imag);
+            iemarray_setfloat(vec_dst_re, v_index, old1_re + old2_re);
+            iemarray_setfloat(vec_dst_im, v_index, old1_im + old2_im);
             w_index += w_inc;
             v_index++;
           }
@@ -293,12 +296,12 @@
         j = j + k;
         if(i < j)
         {
-          old1_re = vec_dst_re[j];
-          old1_im = vec_dst_im[j];
-          vec_dst_re[j] = vec_dst_re[i];
-          vec_dst_im[j] = vec_dst_im[i];
-          vec_dst_re[i] = old1_re;
-          vec_dst_im[i] = old1_im;
+          old1_re = iemarray_getfloat(vec_dst_re, j);
+          old1_im = iemarray_getfloat(vec_dst_im, j);
+          iemarray_setfloat(vec_dst_re, j, iemarray_getfloat(vec_dst_re, i));
+          iemarray_setfloat(vec_dst_im, j, iemarray_getfloat(vec_dst_im, i));
+          iemarray_setfloat(vec_dst_re, i, old1_re);
+          iemarray_setfloat(vec_dst_im, i, old1_im);
         }
       }
       
@@ -318,8 +321,8 @@
       g = 1.0f / (t_float)fftsize;
       for(i = 0; i < fftsize; i++)
       {
-        vec_dst_re[i] *= g;
-        vec_dst_im[i] *= g;
+        iemarray_setfloat(vec_dst_re, i, iemarray_getfloat(vec_dst_re, i)*g);
+        iemarray_setfloat(vec_dst_im, i, iemarray_getfloat(vec_dst_im, i)*g);
       }
       
       outlet_bang(x->x_obj.ob_outlet);

Modified: trunk/externals/iem/iem_tab/src/tab_le.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_le.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_le.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_le ------------------------------ */
+/*     if(x_beg_mem_src1[i] <= x_beg_mem_src2[i])   */
+/*       x_beg_mem_dst[i] = 1.0f;      */
+/*     else                            */
+/*       x_beg_mem_dst[i] = 0.0f;      */
 
 typedef struct _tab_le
 {
@@ -18,9 +22,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -47,7 +51,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_le"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_le"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -71,10 +75,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] <= vec_src2[i])
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) <= iemarray_getfloat(vec_src2, i))
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -88,7 +92,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -124,10 +128,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] <= vec_src2[i])
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) <= iemarray_getfloat(vec_src2, i))
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -150,7 +154,6 @@
 {
   t_tab_le *x = (t_tab_le *)pd_new(tab_le_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_le_scalar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_le_scalar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_le_scalar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_le_scalar ------------------------------ */
+/*  if(x_beg_mem_src1[i] <= compare)   */
+/*    x_beg_mem_dst[i] = 1.0f;      */
+/*  else                            */
+/*    x_beg_mem_dst[i] += 0.0f;     */
 
 typedef struct _tab_le_scalar
 {
@@ -16,8 +20,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_le_scalar;
@@ -33,7 +37,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_le_scalar"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_le_scalar"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -53,10 +57,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] <= compare)
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) <= compare)
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -75,7 +79,8 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst, compare;
+  t_float compare;
+  iemarray_t *vec_src1, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -107,10 +112,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] <= compare)
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) <= compare)
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);

Modified: trunk/externals/iem/iem_tab/src/tab_lt.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_lt.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_lt.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 
 #include "m_pd.h"
@@ -9,6 +9,10 @@
 #include "iem_tab.h"
 
 /* -------------------------- tab_lt ------------------------------ */
+/*     if(x_beg_mem_src1[i] < x_beg_mem_src2[i])   */
+/*       x_beg_mem_dst[i] = 1.0f;      */
+/*     else                            */
+/*       x_beg_mem_dst[i] = 0.0f;      */
 
 typedef struct _tab_lt
 {
@@ -19,9 +23,9 @@
   int       x_offset_src1;
   int       x_offset_src2;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_src2;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src2;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_scr2;
   t_symbol  *x_sym_dst;
@@ -48,7 +52,7 @@
 {
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_lt"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_src2 = iem_tab_check_arrays(gensym("tab_lt"), x->x_sym_scr2, &x->x_beg_mem_src2, &x->x_size_src2, 0);
@@ -72,10 +76,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] < vec_src2[i])
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) < iemarray_getfloat(vec_src2, i))
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -89,7 +93,7 @@
   int beg_src1, beg_src2, beg_dst;
   int i, n;
   int ok_src1, ok_src2, ok_dst;
-  t_float *vec_src1, *vec_src2, *vec_dst;
+  iemarray_t *vec_src1, *vec_src2, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -125,10 +129,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] < vec_src2[i])
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) < iemarray_getfloat(vec_src2, i))
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -151,7 +155,6 @@
 {
   t_tab_lt *x = (t_tab_lt *)pd_new(tab_lt_class);
   t_symbol  *src1, *src2, *dst;
-  t_float time;
   
   if((argc >= 3) &&
     IS_A_SYMBOL(argv,0) &&

Modified: trunk/externals/iem/iem_tab/src/tab_lt_scalar.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_lt_scalar.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_lt_scalar.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,13 +1,17 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
 #include "iem_tab.h"
 
 /* -------------------------- tab_lt_scalar ------------------------------ */
+/*  if(x_beg_mem_src1[i] < compare)   */
+/*    x_beg_mem_dst[i] = 1.0f;      */
+/*  else                            */
+/*    x_beg_mem_dst[i] += 0.0f;     */
 
 typedef struct _tab_lt_scalar
 {
@@ -16,8 +20,8 @@
   int       x_size_dst;
   int       x_offset_src1;
   int       x_offset_dst;
-  t_float   *x_beg_mem_src1;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_scr1;
   t_symbol  *x_sym_dst;
 } t_tab_lt_scalar;
@@ -33,7 +37,7 @@
 {
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst;
+  iemarray_t *vec_src1, *vec_dst;
   
   ok_src1 = iem_tab_check_arrays(gensym("tab_lt_scalar"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
   ok_dst = iem_tab_check_arrays(gensym("tab_lt_scalar"), x->x_sym_dst, &x->x_beg_mem_dst, &x->x_size_dst, 0);
@@ -53,10 +57,10 @@
       
       for(i=0; i<n; i++)
       {
-        if(vec_src1[i] < compare)
-          vec_dst[i] = 1.0f;
+        if(iemarray_getfloat(vec_src1, i) < compare)
+          iemarray_setfloat(vec_dst, i, 1.0f);
         else
-          vec_dst[i] = 0.0f;
+          iemarray_setfloat(vec_dst, i, 0.0f);
       }
       outlet_bang(x->x_obj.ob_outlet);
       a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
@@ -75,7 +79,8 @@
   int beg_src1, beg_dst;
   int i, n;
   int ok_src1, ok_dst;
-  t_float *vec_src1, *vec_dst, compare;
+  t_float compare;
+  iemarray_t *vec_src1, *vec_dst;
   
   if((argc >= 4) &&
     IS_A_FLOAT(argv,0) &&
@@ -107,10 +112,10 @@
         
         for(i=0; i<n; i++)
         {
-          if(vec_src1[i] < compare)
-            vec_dst[i] = 1.0f;
+          if(iemarray_getfloat(vec_src1, i) < compare)
+            iemarray_setfloat(vec_dst, i, 1.0f);
           else
-            vec_dst[i] = 0.0f;
+            iemarray_setfloat(vec_dst, i, 0.0f);
         }
         outlet_bang(x->x_obj.ob_outlet);
         a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);

Modified: trunk/externals/iem/iem_tab/src/tab_max_index.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_max_index.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_max_index.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -14,7 +14,7 @@
   t_object  x_obj;
   int       x_size_src1;
   int       x_offset_src1;
-  t_float   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src1;
   t_symbol  *x_sym_scr1;
   void      *x_bang_out;
   void      *x_max_out;
@@ -32,7 +32,7 @@
 {
   int i, n;
   int ok_src, max_index=0;
-  t_float *vec_src;
+  iemarray_t *vec_src;
   t_float max=-1.0e37;
   
   ok_src = iem_tab_check_arrays(gensym("tab_max_index"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
@@ -45,9 +45,9 @@
     {
       for(i=0; i<n; i++)
       {
-        if(vec_src[i] > max)
+        if(iemarray_getfloat(vec_src, i) > max)
         {
-          max = vec_src[i];
+          max = iemarray_getfloat(vec_src, i);
           max_index = i;
         }
       }
@@ -63,7 +63,7 @@
   int beg_src;
   int i, n;
   int ok_src, max_index=0;
-  t_float *vec_src;
+  iemarray_t *vec_src;
   t_float max=-1.0e37;
   
   if((argc >= 2) &&
@@ -86,9 +86,9 @@
       {
         for(i=0; i<n; i++)
         {
-          if(vec_src[i] > max)
+          if(iemarray_getfloat(vec_src, i) > max)
           {
-            max = vec_src[i];
+            max = iemarray_getfloat(vec_src, i);
             max_index = i + beg_src;
           }
         }

Modified: trunk/externals/iem/iem_tab/src/tab_min_index.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_min_index.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_min_index.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 
 #include "m_pd.h"
@@ -15,7 +15,7 @@
   t_object  x_obj;
   int       x_size_src1;
   int       x_offset_src1;
-  t_float   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src1;
   t_symbol  *x_sym_scr1;
   void      *x_bang_out;
   void      *x_min_out;
@@ -33,7 +33,7 @@
 {
   int i, n;
   int ok_src, min_index=0;
-  t_float *vec_src;
+  iemarray_t *vec_src;
   t_float min=1.0e37;
   
   ok_src = iem_tab_check_arrays(gensym("tab_min_index"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
@@ -46,9 +46,9 @@
     {
       for(i=0; i<n; i++)
       {
-        if(vec_src[i] < min)
+        if(iemarray_getfloat(vec_src, i) < min)
         {
-          min = vec_src[i];
+          min = iemarray_getfloat(vec_src, i);
           min_index = i;
         }
       }
@@ -64,7 +64,7 @@
   int beg_src;
   int i, n;
   int ok_src, min_index=0;
-  t_float *vec_src;
+  iemarray_t *vec_src;
   t_float min=1.0e37;
   
   if((argc >= 2) &&
@@ -87,9 +87,9 @@
       {
         for(i=0; i<n; i++)
         {
-          if(vec_src[i] < min)
+          if(iemarray_getfloat(vec_src, i) < min)
           {
-            min = vec_src[i];
+            min = iemarray_getfloat(vec_src, i);
             min_index = i + beg_src;
           }
         }

Modified: trunk/externals/iem/iem_tab/src/tab_min_max.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_min_max.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_min_max.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 
 #include "m_pd.h"
@@ -16,7 +16,7 @@
   t_object  x_obj;
   int       x_size_src1;
   int       x_offset_src1;
-  t_float   *x_beg_mem_src1;
+  iemarray_t   *x_beg_mem_src1;
   t_symbol  *x_sym_scr1;
   void      *x_bang_out;
   void      *x_min_out;
@@ -34,7 +34,7 @@
 {
   int i, n;
   int ok_src;
-  t_float *vec_src;
+  iemarray_t *vec_src;
   t_float min=1.0e37, max=-1.0e37;
   
   ok_src = iem_tab_check_arrays(gensym("tab_min_max"), x->x_sym_scr1, &x->x_beg_mem_src1, &x->x_size_src1, 0);
@@ -47,10 +47,10 @@
     {
       for(i=0; i<n; i++)
       {
-        if(vec_src[i] > max)
-          max = vec_src[i];
-        if(vec_src[i] < min)
-          min = vec_src[i];
+        if(iemarray_getfloat(vec_src, i) > max)
+          max = iemarray_getfloat(vec_src, i);
+        if(iemarray_getfloat(vec_src, i) < min)
+          min = iemarray_getfloat(vec_src, i);
       }
       outlet_float(x->x_max_out, max);
       outlet_float(x->x_min_out, min);
@@ -64,7 +64,7 @@
   int beg_src;
   int i, n;
   int ok_src;
-  t_float *vec_src;
+  iemarray_t *vec_src;
   t_float min=1.0e37, max=-1.0e37;
   
   if((argc >= 2) &&
@@ -87,10 +87,10 @@
       {
         for(i=0; i<n; i++)
         {
-          if(vec_src[i] > max)
-            max = vec_src[i];
-          if(vec_src[i] < min)
-            min = vec_src[i];
+          if(iemarray_getfloat(vec_src, i) > max)
+            max = iemarray_getfloat(vec_src, i);
+          if(iemarray_getfloat(vec_src, i) < min)
+            min = iemarray_getfloat(vec_src, i);
         }
         outlet_float(x->x_max_out, max);
         outlet_float(x->x_min_out, min);

Modified: trunk/externals/iem/iem_tab/src/tab_mls.c
===================================================================
--- trunk/externals/iem/iem_tab/src/tab_mls.c	2009-02-01 05:22:01 UTC (rev 10705)
+++ trunk/externals/iem/iem_tab/src/tab_mls.c	2009-02-01 05:25:21 UTC (rev 10706)
@@ -1,7 +1,7 @@
 /* For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 
-iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */
+iem_tab written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2009 */
 
 #include "m_pd.h"
 #include "iemlib.h"
@@ -15,7 +15,7 @@
   t_object  x_obj;
   int       x_size_dst;
   int       x_offset_dst;
-  t_float   *x_beg_mem_dst;
+  iemarray_t   *x_beg_mem_dst;
   t_symbol  *x_sym_dst;
 } t_tab_mls;
 
@@ -30,7 +30,7 @@
   return(j);
 }
 
-static void tab_mls_calc(t_float *vec, int mls_order)
+static void tab_mls_calc(iemarray_t *vec, int mls_order)
 {
   int i, j;
   int work1=1, work2, exor;
@@ -126,12 +126,12 @@
     }
     if(exor & 1)
     {
-      vec[i] = 1.0f;
+      iemarray_setfloat(vec, i, 1.0f);
       work1 = work2 | source;
     }
     else
     {
-      vec[i] = -1.0f;
+      iemarray_setfloat(vec, i, -1.0f);
       work1 = work2;
     }
   }
@@ -170,7 +170,8 @@
   int beg_dst;
   int i, n;
   int ok_dst;
-  t_float *vec_dst, c;
+  t_float c;
+  iemarray_t *vec_dst;
   
   if((argc >= 3) &&
     IS_A_FLOAT(argv,0) &&
@@ -195,7 +196,7 @@
         t_garray *a;
         
         for(i=0; i<n; i++)
-          vec_dst[i] = c;
+          iemarray_setfloat(vec_dst, i, c);

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list