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