diff --git a/testao.cpp b/testao.cpp new file mode 100644 index 0000000..2397fc6 --- /dev/null +++ b/testao.cpp @@ -0,0 +1,87 @@ +/* + * + * ao_example.c + * + * Written by Stan Seibert - July 2001 + * + * Legal Terms: + * + * This source file is released into the public domain. It is + * distributed without any warranty; without even the implied + * warranty * of merchantability or fitness for a particular + * purpose. + * + * Function: + * + * This program opens the default driver and plays a 440 Hz tone for + * one second. + * + * Compilation command line (for Linux systems): + * + * gcc -o ao_example ao_example.c -lao -ldl -lm + * + */ + +#include +#include +#include +#include + +#define BUF_SIZE 4096 + +int main(int argc, char **argv) +{ + ao_device *device; + ao_sample_format format; + int default_driver; + char *buffer; + int buf_size; + int sample; + float freq = 440.0; + int i; + + /* -- Initialize -- */ + + fprintf(stderr, "libao example program\n"); + + ao_initialize(); + + /* -- Setup for default driver -- */ + + default_driver = ao_default_driver_id(); + + memset(&format, 0, sizeof(format)); + format.bits = 8; + format.channels = 1; + format.rate = 44100; + format.byte_format = AO_FMT_LITTLE; + + /* -- Open driver -- */ + device = ao_open_live(default_driver, &format, NULL /* no options */); + if (device == NULL) { + fprintf(stderr, "Error opening device.\n"); + return 1; + } + + /* -- Play some stuff -- */ + buf_size = format.bits/8 * format.channels * format.rate; + buffer = (char*)calloc(buf_size, + sizeof(char)); + + for (i = 0; i < format.rate; i++) { + sample = 128 - (int)(0.75 * 128.0 * + sin(2 * M_PI * freq * ((float) i/format.rate))); + + /* Put the same stuff in left and right channel */ + buffer[i] = sample; + printf("%d\n", sample); + } + ao_play(device, buffer, buf_size); + + /* -- Close and shutdown -- */ + ao_close(device); + + ao_shutdown(); + + return (0); +}