annotate src/libvorbis-1.3.3/lib/tone.c @ 141:1b5b6dfd0d0e

Add updated build of PortAudio for OSX
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 03 Jan 2017 15:10:52 +0000
parents 98c1576536ae
children
rev   line source
cannam@86 1 #include <stdlib.h>
cannam@86 2 #include <stdio.h>
cannam@86 3 #include <math.h>
cannam@86 4 #include <string.h>
cannam@86 5
cannam@86 6 void usage(){
cannam@86 7 fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n");
cannam@86 8 exit(1);
cannam@86 9 }
cannam@86 10
cannam@86 11 int main (int argc,char *argv[]){
cannam@86 12 int i,j;
cannam@86 13 double *f;
cannam@86 14 double *amp;
cannam@86 15
cannam@86 16 if(argc<2)usage();
cannam@86 17
cannam@86 18 f=alloca(sizeof(*f)*(argc-1));
cannam@86 19 amp=alloca(sizeof(*amp)*(argc-1));
cannam@86 20
cannam@86 21 i=0;
cannam@86 22 while(argv[i+1]){
cannam@86 23 char *pos=strchr(argv[i+1],',');
cannam@86 24
cannam@86 25 f[i]=atof(argv[i+1]);
cannam@86 26 if(pos)
cannam@86 27 amp[i]=atof(pos+1)*32767.f;
cannam@86 28 else
cannam@86 29 amp[i]=32767.f;
cannam@86 30
cannam@86 31 fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]);
cannam@86 32
cannam@86 33 i++;
cannam@86 34 }
cannam@86 35
cannam@86 36 for(i=0;i<44100*10;i++){
cannam@86 37 float val=0;
cannam@86 38 int ival;
cannam@86 39 for(j=0;j<argc-1;j++)
cannam@86 40 val+=amp[j]*sin(i/44100.f*f[j]*2*M_PI);
cannam@86 41 ival=rint(val);
cannam@86 42
cannam@86 43 if(ival>32767.f)ival=32767.f;
cannam@86 44 if(ival<-32768.f)ival=-32768.f;
cannam@86 45
cannam@86 46 fprintf(stdout,"%c%c%c%c",
cannam@86 47 (char)(ival&0xff),
cannam@86 48 (char)((ival>>8)&0xff),
cannam@86 49 (char)(ival&0xff),
cannam@86 50 (char)((ival>>8)&0xff));
cannam@86 51 }
cannam@86 52 return(0);
cannam@86 53 }
cannam@86 54