This is weighttest.c in view mode; [Download] [Up]
#include "../H/ugens.h" #include <stdio.h> #define RESIDAMP 0 #define RMSAMP 1 #define THRESH 2 #define PITCH 3 /* values in locs 0-3 of frame*/ #define MAXPOLES 32 int framsize; int fprec; int recsize; int bprec; int bpframe; int npolem1; int anal; int i; float cq,outold; float FloatJunk; float pow(); char dataset_name[80]; float thresh,randamp,randoff,unvoiced_rate; int npoles; float risetime,decaytime; lpcplay(p,n_args) float *p; { float amp,si,hn,phs,*f,srd2,magic,d,warpset(); float c[MAXPOLES+4],past[MAXPOLES*2],frames,frameno,ampmlt,errno; int frame1; float ballpole(),alpvals[2048],buzvals[2048],pchval[2048]; float *cpoint; float x,transposition,newpch; float shift_(); int jcount,seed,i,nsamps,counter; int nn,lastfr; float transp,lasttr,tranincr; float cps,tblvals[2],weight(); float rsnetc[9]; int reson_is_on; float cf_fact,bw_fact; float evals[5]; float *f1; float actualdeviation,actualcps,actualweight; float peak; int jj; float deviation(); if(anal <=0 ) { printf("%d !!!No open dataset!",anal); closesf(); } for(jj=0,i=p[3]; i<= p[4]; i++,jj++) { d = i; getfr(d,c); pchval[jj] = c[PITCH]; } printf("weight = %f\n",actualweight=weight(p[3],p[4],thresh)); printf("average deviation = %f\n",actualdeviation = deviation(p[3],p[4],actualweight,thresh)); /* adjust(actualdeviation,p[2],actualweight,pchval,p[3],p[4]); */ } getfr(frameno,c) float frameno,*c; { int frame,i,j; static float array[22*(MAXPOLES+4)]; float fraction; static int oldframe = 0; static int endframe = 0; frame = (int)frameno; fraction = frameno - (float)frame; if(!((frame >= oldframe) && (frame < endframe))) { if(lseek(anal,((long)frame*(long)bpframe),0) == -1) { fprintf(stderr,"bad lseek on analysis file \n"); return(-1); } if(read(anal,(char *)array,bprec) <= 0) { fprintf(stderr,"reached eof on analysis file \n"); return(-1); } oldframe = frame; endframe = oldframe + fprec - 1; } for(i=(frame-oldframe)*framsize,j=0; j<framsize; i++,j++) *(c+j) = *(array+i) + fraction * (*(array+i+framsize) - *(array+i)); return(0); } float weight(frame1,frame2,throsh) float frame1,frame2,throsh; { float c[MAXPOLES+4]; int i; float xweight,sum; xweight = sum = 0; for(i=(int)frame1; i<(int)frame2; i++) { getfr((float)i,c); if((c[THRESH] <= throsh) || (throsh < 0.)) { xweight += c[RMSAMP]; sum += (c[PITCH] * c[RMSAMP]); } } return(sum/xweight); } dataset(p,n_args) /* p1=dataset name, p2=npoles */ float *p; int n_args; { char *name; int i; fprec=22; if(n_args>1) { npoles=p[1]; npolem1=npoles-1; framsize=npoles+4; recsize=fprec*framsize; bprec=recsize*FLOAT; bpframe=framsize*FLOAT; } lpcinit(); i=(int)p[0]; name=(char *)i; if(strcmp(name,dataset_name)== 0) { printf("\n%s is already open.\n",name); return; } strcpy(dataset_name,name); if((anal = open(name,0)) <= 0) { printf("Can't open %s\n",name); closesf(); } printf("\nOpened dataset %s.\n",name); printf("anal is %d",anal); } lpcstuff(p,n_args) /* p0=thresh, p1=random amp, p2=unvoiced rate p3= rise, p4= dec*/ float *p; int n_args; { risetime=.01; decaytime=.1; if(n_args>0) thresh=p[0]; if(n_args>1) randamp=p[1]; if(n_args>2) unvoiced_rate=p[2]; if(n_args>3) risetime=p[3]; if(n_args>4) decaytime=p[4]; printf("\nAdjusting settings for %s.\n",dataset_name); printf(" --------------------------------------- \n"); printf("Thresh: %f Randamp: %f\n",thresh,randamp); if(unvoiced_rate == 1) printf("Unvoiced frames played at normal rate.\n\n"); else printf("Unvoiced frames played at same rate as voiced 'uns.\n\n"); } lpcinit() { recsize=framsize*fprec; bprec=recsize*FLOAT; bpframe=framsize*FLOAT; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.