I'm not sure how to fix it but I can provide some information.
The exception is thrown in shared_lib/sources/sound/ds8/sound_player_ds8.cpp , StrSoundBuffer::fillDsBuffer()
Some information on the method that failed:
http://msdn.microsoft.com/en-us/library/ms897826.aspxI think Glest should have also specified the error that is returned but doesn't, here are possible errors:
DSERR_BUFFERLOST The buffer memory has been lost and must be restored.
DSERR_INVALIDCALL This function is not valid for the current state of this object.
DSERR_INVALIDPARAM An invalid parameter was passed to the returning function.
DSERR_PRIOLEVELNEEDED The caller does not have the priority level required for the function to succeed.