Hi,
I had this problem with the AO backend : -openDevice is not called for
every song, even when the playback rate or others parameters change,
only -prepareDeviceWithChannels:andRate:withEndianness: is called.
But for AO and apparently ALSA, some parameters are passed when opening
the device, that's why in AO's -prepareDeviceWithChannels I close and
reopen the device. I think the same thing should be done with ALSA.
Ultimately the nice thing to do would be to reorganise the Player to
close and reopen the device when some parameter changes but the code in
there is kind of hairy and I didn't want to touch it.
I'll try to test cvs head tomorrow.