controls
[dos_auplay] / src / main.c
index 4395af6..f62fdac 100644 (file)
@@ -1,6 +1,8 @@
 #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
@@ -10,6 +12,9 @@ static int play_file(const char *fname);
 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
@@ -17,6 +22,7 @@ int main(int argc, char **argv)
        if(audio_init() == -1) {\r
                return 1;\r
        }\r
+       audio_volume(vol);\r
 \r
        for(i=1; i<argc; i++) {\r
                if(argv[i][0] == '-') {\r
@@ -29,6 +35,7 @@ int main(int argc, char **argv)
                        }\r
                } else {\r
                        play_file(argv[i]);\r
+                       if(quit) break;\r
                }\r
        }\r
        return 0;\r
@@ -40,6 +47,8 @@ static int dbg_cur_offs;
 static int play_file(const char *fname)\r
 {\r
        struct au_file *au;\r
+       int paused = 0;\r
+       unsigned long prev;\r
 \r
        if(!(au = au_open(fname))) {\r
                return -1;\r
@@ -60,8 +69,58 @@ static int play_file(const char *fname)
 #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_volume(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_volume(vol);\r
+                               printf("volume: %d%%\n", 101 * vol / 256);\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