cannam@86: #include cannam@86: #include cannam@86: #include cannam@86: #include cannam@86: cannam@86: void usage(){ cannam@86: fprintf(stderr,"tone ,[] [,[]...]\n"); cannam@86: exit(1); cannam@86: } cannam@86: cannam@86: int main (int argc,char *argv[]){ cannam@86: int i,j; cannam@86: double *f; cannam@86: double *amp; cannam@86: cannam@86: if(argc<2)usage(); cannam@86: cannam@86: f=alloca(sizeof(*f)*(argc-1)); cannam@86: amp=alloca(sizeof(*amp)*(argc-1)); cannam@86: cannam@86: i=0; cannam@86: while(argv[i+1]){ cannam@86: char *pos=strchr(argv[i+1],','); cannam@86: cannam@86: f[i]=atof(argv[i+1]); cannam@86: if(pos) cannam@86: amp[i]=atof(pos+1)*32767.f; cannam@86: else cannam@86: amp[i]=32767.f; cannam@86: cannam@86: fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]); cannam@86: cannam@86: i++; cannam@86: } cannam@86: cannam@86: for(i=0;i<44100*10;i++){ cannam@86: float val=0; cannam@86: int ival; cannam@86: for(j=0;j32767.f)ival=32767.f; cannam@86: if(ival<-32768.f)ival=-32768.f; cannam@86: cannam@86: fprintf(stdout,"%c%c%c%c", cannam@86: (char)(ival&0xff), cannam@86: (char)((ival>>8)&0xff), cannam@86: (char)(ival&0xff), cannam@86: (char)((ival>>8)&0xff)); cannam@86: } cannam@86: return(0); cannam@86: } cannam@86: