Changeset 130:1d082afbec7e in roaraudio
- Timestamp:
- 07/13/08 23:26:35 (16 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roarclients
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
roarclients/Makefile
r126 r130 18 18 roarmon: roarmon.o 19 19 roarfilt: roarfilt.o 20 ${CC} ${LDFLAGS} -o roarfilt roarfilt.o -lm 20 21 roarsockconnect: roarsockconnect.o 21 22 roartypes: roartypes.o -
roarclients/roarfilt.c
r128 r130 2 2 3 3 #include <roaraudio.h> 4 #include <math.h> 4 5 5 6 #define BUFSIZE 1024 … … 18 19 " --half - half the volume\n" 19 20 " --double - double the volume\n" 21 " --amp VAL - Set amplification\n" 22 " --mul VAL - Set mul\n" 23 " --div VAL - Set div\n" 20 24 ); 21 25 … … 36 40 int i; 37 41 42 for (i = 0; i < len; i++) 43 samples[i] = ((int) samples[i] * mul) / div; 44 } 45 46 void logs2 (void * data, int scale, int len) { 47 int16_t * samples = (int16_t *) data; 48 int i; 49 float div = logf(scale); 50 int scalemul = scale - 1; 51 int neg; 52 38 53 len /= 2; 39 54 40 for (i = 0; i < len; i++) 41 samples[i] = ((int) samples[i] * mul) / div; 55 printf("logs2(data=%p, scale=%i, len=%i): scalemul=%i, div=%f\n", data, scale, len, scalemul, div); 56 57 for (i = 0; i < len; i++) { 58 if ( (neg = (samples[i] < 0)) ) 59 samples[i] = abs(samples[i]); 60 61 62 samples[i] = (neg ? 32768.0 : 32767.0)*logf(1 + ((float)scalemul*samples[i]/(neg ? 32768.0 : 32767.0))) / div; 63 64 if ( neg ) 65 samples[i] *= -1; 66 } 42 67 } 43 68 … … 52 77 int i; 53 78 int mul = 1, div = 1; 79 int logscale = 0; 54 80 char buf[BUFSIZE]; 55 81 … … 69 95 } else if ( strcmp(k, "--double") == 0 ) { 70 96 mul *= 2; 97 } else if ( strcmp(k, "--amp") == 0 ) { 98 mul *= atoi(argv[++i]); 99 } else if ( strcmp(k, "--mul") == 0 ) { 100 mul = atoi(argv[++i]); 101 } else if ( strcmp(k, "--div") == 0 ) { 102 div = atoi(argv[++i]); 103 } else if ( strcmp(k, "--log") == 0 ) { 104 logscale = atoi(argv[++i]); 71 105 } else if ( strcmp(k, "--help") == 0 ) { 72 106 usage(); … … 84 118 } 85 119 86 if ( mul == div ) {120 if ( mul == div && logscale == 0 ) { 87 121 fprintf(stderr, "Error: filter is useless!\n"); 88 122 return 0; … … 91 125 if ( bits == 16 ) { 92 126 while((i = read(fh, buf, BUFSIZE))) { 93 vol2((void*)buf, mul, div, i); 127 if ( mul != div ) 128 vol2((void*)buf, mul, div, i); 129 if ( logscale ) 130 logs2((void*)buf, logscale, i); 94 131 if (write(fh, buf, i) != i) 95 132 break;
Note: See TracChangeset
for help on using the changeset viewer.