#include #include #include #include #include #include #include int audio_pid; void owari(); void do_audio(); main(int argc, char **argv) { Widget toplevel, button; audio_pid = sproc( do_audio, PR_SALL ); if (audio_pid == -1) exit(-1); toplevel = XtInitialize( argv[0], "", NULL, 0, &argc, argv ); button = XtCreateManagedWidget( " Stop Audio ", xmPushButtonWidgetClass, toplevel, NULL, 0 ); XtAddCallback( button, XmNactivateCallback, owari, NULL ); XtRealizeWidget(toplevel); XtMainLoop(); } void do_audio() { ALconfig config; ALport input_port, output_port; short *buff[48000]; int i; config = ALnewconfig(); ALsetqueuesize( config, 48000 ); input_port = ALopenport( "input", "r", config ); output_port = ALopenport( "output", "w", config ); if (input_port == NULL || output_port == NULL) exit(-1); while (1) { ALreadsamps( input_port, buff, 256 ); for(i=0;i<256;i++) ALwritesamps( output_port, buff, 1 ); } } void owari(Widget w, caddr_t d1, caddr_t d2) { kill(audio_pid, SIGKILL); exit(0); }