Update of /cvsroot/pure-data/externals/ggee/other In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8684/other
Modified Files: messages.c vbap.c Log Message: these pragmas are only used for MSVC, not MinGW or Cygwin, therefore changing the define from NT to _MSC_VER
Index: vbap.c =================================================================== RCS file: /cvsroot/pure-data/externals/ggee/other/vbap.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** vbap.c 17 Jun 2002 10:13:56 -0000 1.1.1.1 --- vbap.c 14 Nov 2005 21:59:09 -0000 1.2 *************** *** 1,298 **** ! /* (C) Guenter Geiger geiger@epy.co.at */ ! ! ! /* ! (C) Guenter Geiger ! ! ! based on code by: ! (c) Ville Pulkki 2.2.1999 ! Helsinki University of Technology ! Laboratory of Acoustics and Audio Signal Processing ! */ ! ! #include <m_pd.h> ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! ! #include <math.h> ! #include <stdio.h> ! #include <malloc.h> ! #include <string.h> /* strtok */ ! ! #define MAX_TRIPLET_AMOUNT 64 ! ! /* this is related to the number of ls .. ! ! and shoud be 3**(MAX_LS_AMOUNT / 4) ! ! */ ! ! #define MAX_LS_AMOUNT 16 ! #define MAX_DIM_SQUARE 9 ! ! ! /* ------------------------ vbap ----------------------------- */ ! ! static t_class *vbap_class; ! ! ! typedef struct _vbap ! { ! t_object x_ob; ! t_outlet* x_out2; ! t_outlet* x_out3; ! t_float lsm[MAX_TRIPLET_AMOUNT][MAX_LS_AMOUNT+1]; /* loudspeaker triplet matrices */ ! int lstripl[MAX_TRIPLET_AMOUNT][3]; /* loudspeaker triplet ldspeaker numbers */ ! int lasttrip[3]; ! int triplet_amount; ! int dimension; ! int opened; ! } t_vbap; ! ! ! ! ! t_float *angle_to_cart(t_float azi, t_float ele); ! void vbap(t_vbap* x,t_float g[3], int ls[3], t_float azi, t_float ele) ; ! int read_ls_conf(t_vbap* x,FILE *fp ); ! ! ! void vbap_list(t_vbap *x,t_symbol* s,t_int argc,t_atom* argv) ! { ! t_float azi,ele; ! t_float g[3]; ! int ls[3]; ! t_atom a[2]; ! ! if (argc != 2) ! post("vbap: list message <azimuth> <elevation> required %d",argc); ! else { ! int i; ! azi = atom_getfloat(argv++); ! ele = atom_getfloat(argv++); ! ! vbap(x,g,ls,azi,ele); ! ! for (i=0;i<x->dimension;i++) { ! if (x->lasttrip[i] != ls[i]) { ! SETFLOAT(a,(t_float)x->lasttrip[i]); ! SETFLOAT(a+1,0.0f); ! outlet_list(x->x_ob.ob_outlet, &s_list,2 ,(t_atom*)&a); ! x->lasttrip[i] = ls[i]; ! } ! } ! ! for (i=0;i<x->dimension;i++) { ! SETFLOAT(a,(t_float)ls[i]); ! SETFLOAT(a+1,g[i]); ! outlet_list(x->x_ob.ob_outlet, &s_list,2 ,(t_atom*)&a); ! ! } ! } ! ! } ! ! ! void vbap_bang(t_vbap *x) ! { ! post("vbap: bang"); ! } ! ! ! ! static void *vbap_new(t_symbol* s) ! { ! FILE *fp; ! t_vbap *x = (t_vbap *)pd_new(vbap_class); ! char fname[MAXPDSTRING]; ! ! if (s == &s_) { ! post("vbap: Using default loudspeaker setup"); ! s = gensym("ls_setup"); ! } ! ! /* opening the loudspeaker matrix file*/ ! ! canvas_makefilename(canvas_getcurrent(),s->s_name, ! fname,MAXPDSTRING); ! ! if((fp=fopen(fname,"r"))==NULL){ ! post("vbap: Could not open loudspeaker data file %s\n",fname); ! x->opened = 0; ! } ! else { ! if (!read_ls_conf(x,fp)) ! return NULL; ! x->opened = 1; ! fclose(fp); ! } ! ! x->lasttrip[0] = 0; ! x->lasttrip[1] = 1; ! x->lasttrip[2] = 2; ! ! outlet_new(&x->x_ob, &s_list); ! ! return (x); ! } ! ! void vbap_setup(void) ! { ! vbap_class = class_new(gensym("vbap"), (t_newmethod)vbap_new, 0, ! sizeof(t_vbap), 0,A_DEFSYM,0); ! /* class_addbang(vbap_class,vbap_bang);*/ ! class_addlist(vbap_class,vbap_list); ! } ! ! ! ! ! t_float *angle_to_cart(t_float azi, t_float ele) ! { ! t_float *res; ! t_float atorad = (2 * 3.1415927 / 360) ; ! res = (t_float *) malloc(3*sizeof(t_float)); ! res[0] = (float) (cos((t_float) (azi * atorad)) * cos((t_float) (ele * atorad))); ! res[1] = (float) (sin((t_float) (azi * atorad)) * cos((t_float) (ele * atorad))); ! res[2] = (float) (sin((t_float) (ele * atorad))); ! return res; ! } ! ! ! void vbap(t_vbap* x,t_float g[3], int ls[3], float azi, float ele) ! { ! /* calculates gain factors using loudspeaker setup and given direction */ ! t_float *cartdir; ! t_float power; ! int i,j,k; ! t_float small_g; ! t_float big_sm_g, gtmp[3]; ! int winner_triplet; ! ! cartdir=angle_to_cart(azi,ele); ! big_sm_g = -100000.0; ! for(i=0;i<x->triplet_amount;i++){ ! small_g = 10000000.0; ! for(j=0;j<x->dimension;j++){ ! gtmp[j]=0.0; ! for(k=0;k<x->dimension;k++) ! gtmp[j]+=cartdir[k]*x->lsm[i][k+j*x->dimension]; ! if(gtmp[j] < small_g) ! small_g = gtmp[j]; ! } ! if(small_g > big_sm_g){ ! big_sm_g = small_g; ! winner_triplet=i; ! g[0]=gtmp[0]; g[1]=gtmp[1]; ! ls[0]=x->lstripl[i][0]; ls[1]=x->lstripl[i][1]; ! if(x->dimension==3){ ! g[2]=gtmp[2]; ! ls[2]=x->lstripl[i][2]; ! } else { ! g[2]=0.0; ! ls[2]=0; ! } ! } ! } ! ! /* this should probably be optimized somehow */ ! ! power=sqrt(g[0]*g[0] + g[1]*g[1] + g[2]*g[2]); ! /* power=g[0]+g[1];*/ ! ! g[0] /= power; ! g[1] /= power; ! g[2] /= power; ! ! ! free(cartdir); ! } ! ! int read_ls_conf(t_vbap* x,FILE *fp ){ ! /* reads from specified file the loudspeaker triplet setup */ ! int amount,i,j,a,b,d=0; ! char *toke; ! char c[1000]; ! t_float mx[MAX_DIM_SQUARE]; ! fgets(c,1000,fp); ! toke = (char *) strtok(c, " "); ! toke = (char *) strtok(NULL, " "); ! toke = (char *) strtok(NULL, " "); ! if((toke = (char *) strtok(NULL, " "))==NULL){ ! fprintf(stderr,"Wrong ls matrix file?\n"); ! return 0; ! } ! sscanf(toke, "%d",&amount); ! toke = (char *) strtok(NULL, " "); ! toke = (char *) strtok(NULL, " "); ! if((toke = (char *) strtok(NULL, " "))==NULL){ ! fprintf(stderr,"Wrong ls matrix file?\n"); ! return 0; ! } ! sscanf(toke, "%d",&x->dimension); ! ! x->triplet_amount = amount; ! ! for(i=0;i<amount;i++){ ! fgets(c,1000,fp); ! toke = (char *) strtok(c, " "); ! if(strncmp(toke,"Trip",4)!=0 && x->dimension==3){ ! fprintf(stderr,"Something wrong in ls matrix file\n"); ! return 0; ! } ! if(strncmp(toke,"Pair",4)!=0 && x->dimension==2){ ! fprintf(stderr,"Something wrong in ls matrix file\n"); ! return 0; ! } ! toke = (char *) strtok(NULL, " "); ! toke = (char *) strtok(NULL, " "); toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%d",&a); ! x->lstripl[i][0]=a; ! toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%d",&b); ! x->lstripl[i][1]=b; ! if (x->dimension==3){ ! toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%d",&d); ! x->lstripl[i][2]=d; ! } ! ! ! toke = (char *) strtok(NULL, " "); ! for(j=0;j<(x->dimension*x->dimension);j++){ ! toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%f",&(mx[j])); ! x->lsm[i][j]=mx[j]; ! } ! ! } ! return 1; ! } ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! --- 1,298 ---- ! /* (C) Guenter Geiger geiger@epy.co.at */ ! ! ! /* ! (C) Guenter Geiger ! ! ! based on code by: ! (c) Ville Pulkki 2.2.1999 ! Helsinki University of Technology ! Laboratory of Acoustics and Audio Signal Processing ! */ ! ! #include <m_pd.h> ! #ifdef _MSC_VER ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! ! #include <math.h> ! #include <stdio.h> ! #include <malloc.h> ! #include <string.h> /* strtok */ ! ! #define MAX_TRIPLET_AMOUNT 64 ! ! /* this is related to the number of ls .. ! ! and shoud be 3**(MAX_LS_AMOUNT / 4) ! ! */ ! ! #define MAX_LS_AMOUNT 16 ! #define MAX_DIM_SQUARE 9 ! ! ! /* ------------------------ vbap ----------------------------- */ ! ! static t_class *vbap_class; ! ! ! typedef struct _vbap ! { ! t_object x_ob; ! t_outlet* x_out2; ! t_outlet* x_out3; ! t_float lsm[MAX_TRIPLET_AMOUNT][MAX_LS_AMOUNT+1]; /* loudspeaker triplet matrices */ ! int lstripl[MAX_TRIPLET_AMOUNT][3]; /* loudspeaker triplet ldspeaker numbers */ ! int lasttrip[3]; ! int triplet_amount; ! int dimension; ! int opened; ! } t_vbap; ! ! ! ! ! t_float *angle_to_cart(t_float azi, t_float ele); ! void vbap(t_vbap* x,t_float g[3], int ls[3], t_float azi, t_float ele) ; ! int read_ls_conf(t_vbap* x,FILE *fp ); ! ! ! void vbap_list(t_vbap *x,t_symbol* s,t_int argc,t_atom* argv) ! { ! t_float azi,ele; ! t_float g[3]; ! int ls[3]; ! t_atom a[2]; ! ! if (argc != 2) ! post("vbap: list message <azimuth> <elevation> required %d",argc); ! else { ! int i; ! azi = atom_getfloat(argv++); ! ele = atom_getfloat(argv++); ! ! vbap(x,g,ls,azi,ele); ! ! for (i=0;i<x->dimension;i++) { ! if (x->lasttrip[i] != ls[i]) { ! SETFLOAT(a,(t_float)x->lasttrip[i]); ! SETFLOAT(a+1,0.0f); ! outlet_list(x->x_ob.ob_outlet, &s_list,2 ,(t_atom*)&a); ! x->lasttrip[i] = ls[i]; ! } ! } ! ! for (i=0;i<x->dimension;i++) { ! SETFLOAT(a,(t_float)ls[i]); ! SETFLOAT(a+1,g[i]); ! outlet_list(x->x_ob.ob_outlet, &s_list,2 ,(t_atom*)&a); ! ! } ! } ! ! } ! ! ! void vbap_bang(t_vbap *x) ! { ! post("vbap: bang"); ! } ! ! ! ! static void *vbap_new(t_symbol* s) ! { ! FILE *fp; ! t_vbap *x = (t_vbap *)pd_new(vbap_class); ! char fname[MAXPDSTRING]; ! ! if (s == &s_) { ! post("vbap: Using default loudspeaker setup"); ! s = gensym("ls_setup"); ! } ! ! /* opening the loudspeaker matrix file*/ ! ! canvas_makefilename(canvas_getcurrent(),s->s_name, ! fname,MAXPDSTRING); ! ! if((fp=fopen(fname,"r"))==NULL){ ! post("vbap: Could not open loudspeaker data file %s\n",fname); ! x->opened = 0; ! } ! else { ! if (!read_ls_conf(x,fp)) ! return NULL; ! x->opened = 1; ! fclose(fp); ! } ! ! x->lasttrip[0] = 0; ! x->lasttrip[1] = 1; ! x->lasttrip[2] = 2; ! ! outlet_new(&x->x_ob, &s_list); ! ! return (x); ! } ! ! void vbap_setup(void) ! { ! vbap_class = class_new(gensym("vbap"), (t_newmethod)vbap_new, 0, ! sizeof(t_vbap), 0,A_DEFSYM,0); ! /* class_addbang(vbap_class,vbap_bang);*/ ! class_addlist(vbap_class,vbap_list); ! } ! ! ! ! ! t_float *angle_to_cart(t_float azi, t_float ele) ! { ! t_float *res; ! t_float atorad = (2 * 3.1415927 / 360) ; ! res = (t_float *) malloc(3*sizeof(t_float)); ! res[0] = (float) (cos((t_float) (azi * atorad)) * cos((t_float) (ele * atorad))); ! res[1] = (float) (sin((t_float) (azi * atorad)) * cos((t_float) (ele * atorad))); ! res[2] = (float) (sin((t_float) (ele * atorad))); ! return res; ! } ! ! ! void vbap(t_vbap* x,t_float g[3], int ls[3], float azi, float ele) ! { ! /* calculates gain factors using loudspeaker setup and given direction */ ! t_float *cartdir; ! t_float power; ! int i,j,k; ! t_float small_g; ! t_float big_sm_g, gtmp[3]; ! int winner_triplet; ! ! cartdir=angle_to_cart(azi,ele); ! big_sm_g = -100000.0; ! for(i=0;i<x->triplet_amount;i++){ ! small_g = 10000000.0; ! for(j=0;j<x->dimension;j++){ ! gtmp[j]=0.0; ! for(k=0;k<x->dimension;k++) ! gtmp[j]+=cartdir[k]*x->lsm[i][k+j*x->dimension]; ! if(gtmp[j] < small_g) ! small_g = gtmp[j]; ! } ! if(small_g > big_sm_g){ ! big_sm_g = small_g; ! winner_triplet=i; ! g[0]=gtmp[0]; g[1]=gtmp[1]; ! ls[0]=x->lstripl[i][0]; ls[1]=x->lstripl[i][1]; ! if(x->dimension==3){ ! g[2]=gtmp[2]; ! ls[2]=x->lstripl[i][2]; ! } else { ! g[2]=0.0; ! ls[2]=0; ! } ! } ! } ! ! /* this should probably be optimized somehow */ ! ! power=sqrt(g[0]*g[0] + g[1]*g[1] + g[2]*g[2]); ! /* power=g[0]+g[1];*/ ! ! g[0] /= power; ! g[1] /= power; ! g[2] /= power; ! ! ! free(cartdir); ! } ! ! int read_ls_conf(t_vbap* x,FILE *fp ){ ! /* reads from specified file the loudspeaker triplet setup */ ! int amount,i,j,a,b,d=0; ! char *toke; ! char c[1000]; ! t_float mx[MAX_DIM_SQUARE]; ! fgets(c,1000,fp); ! toke = (char *) strtok(c, " "); ! toke = (char *) strtok(NULL, " "); ! toke = (char *) strtok(NULL, " "); ! if((toke = (char *) strtok(NULL, " "))==NULL){ ! fprintf(stderr,"Wrong ls matrix file?\n"); ! return 0; ! } ! sscanf(toke, "%d",&amount); ! toke = (char *) strtok(NULL, " "); ! toke = (char *) strtok(NULL, " "); ! if((toke = (char *) strtok(NULL, " "))==NULL){ ! fprintf(stderr,"Wrong ls matrix file?\n"); ! return 0; ! } ! sscanf(toke, "%d",&x->dimension); ! ! x->triplet_amount = amount; ! ! for(i=0;i<amount;i++){ ! fgets(c,1000,fp); ! toke = (char *) strtok(c, " "); ! if(strncmp(toke,"Trip",4)!=0 && x->dimension==3){ ! fprintf(stderr,"Something wrong in ls matrix file\n"); ! return 0; ! } ! if(strncmp(toke,"Pair",4)!=0 && x->dimension==2){ ! fprintf(stderr,"Something wrong in ls matrix file\n"); ! return 0; ! } ! toke = (char *) strtok(NULL, " "); ! toke = (char *) strtok(NULL, " "); toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%d",&a); ! x->lstripl[i][0]=a; ! toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%d",&b); ! x->lstripl[i][1]=b; ! if (x->dimension==3){ ! toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%d",&d); ! x->lstripl[i][2]=d; ! } ! ! ! toke = (char *) strtok(NULL, " "); ! for(j=0;j<(x->dimension*x->dimension);j++){ ! toke = (char *) strtok(NULL, " "); ! sscanf(toke, "%f",&(mx[j])); ! x->lsm[i][j]=mx[j]; ! } ! ! } ! return 1; ! } ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
Index: messages.c =================================================================== RCS file: /cvsroot/pure-data/externals/ggee/other/messages.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** messages.c 17 Jun 2002 10:13:56 -0000 1.1.1.1 --- messages.c 14 Nov 2005 21:59:09 -0000 1.2 *************** *** 1,40 **** ! /* (C) Guenter Geiger geiger@epy.co.at */ ! ! ! #include <m_pd.h> ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! /* ------------------------ messages ----------------------------- */ ! ! static t_class *messages_class; ! ! ! typedef struct _messages ! { ! t_object x_obj; ! } t_messages; ! ! ! void messages_bang(t_messages *x) ! { ! post("bang"); ! } ! ! static void *messages_new() ! { ! t_messages *x = (t_messages *)pd_new(messages_class); ! outlet_new(&x->x_obj, &s_float); ! return (x); ! } ! ! void messages_setup(void) ! { ! messages_class = class_new(gensym("messages"), (t_newmethod)messages_new, 0, ! sizeof(t_messages), 0,0); ! class_addbang(messages_class,messages_bang); ! } ! ! --- 1,40 ---- ! /* (C) Guenter Geiger geiger@epy.co.at */ ! ! ! #include <m_pd.h> ! #ifdef _MSC_VER ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! /* ------------------------ messages ----------------------------- */ ! ! static t_class *messages_class; ! ! ! typedef struct _messages ! { ! t_object x_obj; ! } t_messages; ! ! ! void messages_bang(t_messages *x) ! { ! post("bang"); ! } ! ! static void *messages_new() ! { ! t_messages *x = (t_messages *)pd_new(messages_class); ! outlet_new(&x->x_obj, &s_float); ! return (x); ! } ! ! void messages_setup(void) ! { ! messages_class = class_new(gensym("messages"), (t_newmethod)messages_new, 0, ! sizeof(t_messages), 0,0); ! class_addbang(messages_class,messages_bang); ! } ! !