#include <stdio.h>\r
#include <stdlib.h>\r
#include <string.h>\r
+#include <dos.h>\r
+#include <conio.h>\r
#include "aufile.h"\r
#include "audio.h"\r
\r
static int cbfunc(void *buf, int size, void *cls);\r
static void print_usage(const char *argv0);\r
\r
+static int vol = 220;\r
+static int quit;\r
+\r
int main(int argc, char **argv)\r
{\r
- int i;\r
+ int i, vol;\r
\r
if(audio_init() == -1) {\r
return 1;\r
}\r
+ audio_setvolume(AUDIO_MASTER, 255);\r
+ audio_setvolume(AUDIO_PCM, 255);\r
\r
for(i=1; i<argc; i++) {\r
if(argv[i][0] == '-') {\r
- if(strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0) {\r
+ if(strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "-volume") == 0) {\r
+ if(!argv[++i] || (vol = atoi(argv[i])) <= 0 || vol > 100) {\r
+ fprintf(stderr, "%s must be followed by a number 1-100\n", argv[-1]);\r
+ return 1;\r
+ }\r
+ audio_setvolume(AUDIO_MASTER, vol * 255 / 100);\r
+\r
+ } else if(strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0) {\r
print_usage(argv[0]);\r
return 0;\r
} else {\r
}\r
} else {\r
play_file(argv[i]);\r
+ if(quit) break;\r
}\r
}\r
return 0;\r
static int play_file(const char *fname)\r
{\r
struct au_file *au;\r
+ int paused = 0, muted = 0;\r
+ unsigned long prev;\r
\r
if(!(au = au_open(fname))) {\r
return -1;\r
#endif\r
\r
audio_play(au->rate, au->bits, au->chan);\r
- while(audio_isplaying());\r
+ while(audio_isplaying()) {\r
+ if(kbhit()) {\r
+ int c = getch();\r
+ switch(c) {\r
+ case 27:\r
+ audio_stop();\r
+ quit = 1;\r
+ goto end;\r
+\r
+ case ' ':\r
+ paused = !paused;\r
+ if(paused) {\r
+ audio_pause();\r
+ printf("pause\n");\r
+ } else {\r
+ audio_resume();\r
+ printf("resume\n");\r
+ }\r
+ break;\r
+\r
+ case '=':\r
+ vol += 32;\r
+ if(vol > 255) vol = 255;\r
+ audio_setvolume(AUDIO_DEFAULT, vol);\r
+ printf("volume: %d%%\n", 101 * vol / 256);\r
+ break;\r
+\r
+ case '-':\r
+ vol -= 32;\r
+ if(vol < 0) vol = 0;\r
+ audio_setvolume(AUDIO_DEFAULT, vol);\r
+ printf("volume: %d%%\n", 101 * vol / 256);\r
+ break;\r
+\r
+ case 'm':\r
+ muted = !muted;\r
+ if(muted) {\r
+ audio_setvolume(AUDIO_DEFAULT, 0);\r
+ } else {\r
+ audio_setvolume(AUDIO_DEFAULT, vol);\r
+ }\r
+ break;\r
+\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+\r
+ _disable();\r
+ if(dbg_cur_offs != prev) {\r
+ prev = dbg_cur_offs;\r
+ _enable();\r
+\r
+ printf("%3d%% - offs: %lu/%lu\n", 100 * prev / au->size, prev, au->size);\r
+ } else {\r
+ _enable();\r
+ }\r
+\r
+ }\r
\r
+end:\r
au_close(au);\r
#ifdef DBG_PRELOAD\r
free(dbg_samples);\r
{\r
printf("Usage: %s [options] <file1> <file2> ... <filen>\n", argv0);\r
printf("options:\n");\r
+ printf(" -v,-volume <percent>: set audio volume (1-100)\n");\r
printf(" -h,-help: print usage and exit\n");\r
}\r