Hi, I've just installed libao-1.1.0 on a new Debian install. I also have alsa 1.0.27.1 installed. Debian is running under VirtualBox 4.2.12 under OSX 10.6.8, on a MacBookPro. libao does not work in stereo for the sampling rate of 44100, but it does for 8000, 11025, 22050and 48000. When I send it two channel output at a sampling rate of 44100, the result includes what sounds like skips, sudden changes from left to right speakers, an other incongruities. Question: Does anyone know why this one sampling rate does not work? I've included a copy of the code that I've used to test the sound output. I compiled it with: gcc -W -Wall -g -o sound sound.c -lao -lasound -lm Thanks very much for any help on this. Arun Chandra #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <ao/ao.h> int main(void) { int sr = 44100 ; // samples per second int nchan = 1 ; // number of channels of sound double dur = 3 ; // duration in seconds char *sound ; int nBytes ; extern char *Sine(int sr, int nchan, double dur, int *nBytes) ; int r, id ; ao_device *device ; ao_sample_format fmt ; sound = Sine(sr, nchan, dur, &nBytes) ; // create sine tone(s) ao_initialize() ; if ( ( id = ao_default_driver_id() < 0 ) ) { fprintf(stderr,"Error in ao_default_driver(): id = %d\n", id) ; exit(EXIT_FAILURE) ; } fmt.bits = 16 ; // bits per sample fmt.rate = sr ; // sampling rate fmt.channels = nchan ; // channel count fmt.byte_format = AO_FMT_NATIVE ; fmt.matrix = "L,R" ; if ( ( device = ao_open_live(id, &fmt, NULL) ) == NULL ) { fprintf(stderr,"Error in ao_open_live()\n") ; exit(EXIT_FAILURE) ; } if ( ( r = ao_play(device, sound, nBytes) ) == 0 ) { fprintf(stderr,"Error in ao_play()\n") ; exit(EXIT_FAILURE) ; } if ( ( r = ao_close(device) ) != 1 ) { fprintf(stderr,"Error in ao_close()\n") ; exit(EXIT_FAILURE) ; } ao_shutdown() ; return 0 ; } char *Sine(int sr, int nchan, double dur, int *nBytes) { double f1, f2 ; double db, A ; double ph1, ph2, phInc1, phInc2 ; int frames, i ; short *sbuffer ; char *cbuffer ; f1 = 1000 ; // frequency in Hertz f2 = 1.5 * f1 ; // perfect fifth higher ph1 = ph2 = 0 ; phInc1 = ( 2 * M_PI * f1 ) / sr ; // phase increments phInc2 = ( 2 * M_PI * f2 ) / sr ; db = 90 ; // amplitude in decibels A = pow(10.0, db/20.0) / 2 ; // linear amplitude frames = dur * sr ; *nBytes = frames * nchan * sizeof(short) ; sbuffer = (short *)malloc(*nBytes) ; if ( nchan == 1 ) { // mono sound for ( i = 0 ; i < frames ; i++ ) { sbuffer[i] = (short)(A * sin(ph1)) ; ph1 += phInc1 ; } } else { // stereo sound for ( i = 0 ; i < frames ; i++ ) { sbuffer[2*i] = (short)(A * sin(ph1)) ; sbuffer[2*i+1] = (short)(A * sin(ph2)) ; ph1 += phInc1 ; ph2 += phInc2 ; } } cbuffer = (char *)malloc(*nBytes) ; memcpy(cbuffer, (char *)sbuffer, *nBytes) ; free(sbuffer) ; return cbuffer ; }