+\r
+ audio_set_callback(cbfunc, au);\r
+\r
+#ifdef DBG_PRELOAD\r
+ if(!(dbg_samples = malloc(au->size))) {\r
+ perror("failed to preload samples into memory");\r
+ return -1;\r
+ }\r
+ dbg_cur_offs = 0;\r
+ if(au_read(au, dbg_samples, au->size) < au->size) {\r
+ perror("failed to preload samples into memory");\r
+ return -1;\r
+ }\r
+#endif\r
+\r
+ audio_play(au->rate, au->bits, au->chan);\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