Apparently Alsa changed at some point -- I don't immediately find any mention of it, but I think snd_pcm_hw_params_set_rate_near now takes a pointer to the srate and returns the new value through that pointer, so the old code thought an error had occurred when in fact none had. I'll update the various versions of audio.c.