annotate src/libvorbis-1.3.3/lib/tone.c @ 4:e13257ea84a4
Add bzip2, zlib, liblo, portaudio sources
author |
Chris Cannam |
date |
Wed, 20 Mar 2013 13:59:52 +0000 |
parents |
05aa0afa9217 |
children |
|
rev |
line source |
Chris@1
|
1 #include <stdlib.h>
|
Chris@1
|
2 #include <stdio.h>
|
Chris@1
|
3 #include <math.h>
|
Chris@1
|
4 #include <string.h>
|
Chris@1
|
5
|
Chris@1
|
6 void usage(){
|
Chris@1
|
7 fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n");
|
Chris@1
|
8 exit(1);
|
Chris@1
|
9 }
|
Chris@1
|
10
|
Chris@1
|
11 int main (int argc,char *argv[]){
|
Chris@1
|
12 int i,j;
|
Chris@1
|
13 double *f;
|
Chris@1
|
14 double *amp;
|
Chris@1
|
15
|
Chris@1
|
16 if(argc<2)usage();
|
Chris@1
|
17
|
Chris@1
|
18 f=alloca(sizeof(*f)*(argc-1));
|
Chris@1
|
19 amp=alloca(sizeof(*amp)*(argc-1));
|
Chris@1
|
20
|
Chris@1
|
21 i=0;
|
Chris@1
|
22 while(argv[i+1]){
|
Chris@1
|
23 char *pos=strchr(argv[i+1],',');
|
Chris@1
|
24
|
Chris@1
|
25 f[i]=atof(argv[i+1]);
|
Chris@1
|
26 if(pos)
|
Chris@1
|
27 amp[i]=atof(pos+1)*32767.f;
|
Chris@1
|
28 else
|
Chris@1
|
29 amp[i]=32767.f;
|
Chris@1
|
30
|
Chris@1
|
31 fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]);
|
Chris@1
|
32
|
Chris@1
|
33 i++;
|
Chris@1
|
34 }
|
Chris@1
|
35
|
Chris@1
|
36 for(i=0;i<44100*10;i++){
|
Chris@1
|
37 float val=0;
|
Chris@1
|
38 int ival;
|
Chris@1
|
39 for(j=0;j<argc-1;j++)
|
Chris@1
|
40 val+=amp[j]*sin(i/44100.f*f[j]*2*M_PI);
|
Chris@1
|
41 ival=rint(val);
|
Chris@1
|
42
|
Chris@1
|
43 if(ival>32767.f)ival=32767.f;
|
Chris@1
|
44 if(ival<-32768.f)ival=-32768.f;
|
Chris@1
|
45
|
Chris@1
|
46 fprintf(stdout,"%c%c%c%c",
|
Chris@1
|
47 (char)(ival&0xff),
|
Chris@1
|
48 (char)((ival>>8)&0xff),
|
Chris@1
|
49 (char)(ival&0xff),
|
Chris@1
|
50 (char)((ival>>8)&0xff));
|
Chris@1
|
51 }
|
Chris@1
|
52 return(0);
|
Chris@1
|
53 }
|
Chris@1
|
54
|