Hi Petr,
First of all, I wonder how you figured out that synth.wav used 32-bit samples. Impressive forensic work.
Secondly, I'm surprised that anything actually uses or needs 32-bit samples. As far as I know, 24-bit is the most any music protocol uses? That's used for so-called high resolution audio, uncompressed. I mean, 16-bit, uncompressed, as used in CDs, already gives you a dynamic range of 96 dB. Human hearing can't even use 24-bit effectively, without serious damage to our ears. Even "only" 24-bit samples, uncompressed, would allow for more than 144 dB of dynamic range, and hearing loss begins to occur at about 110 dB.
Looking at your code, I wonder if it wouldn't be possible to write a generic player. For instance, it could accept anything from, say, 8 bits to 32 bits? Perhaps make all samples 32 bits, using the most significant bits only, and padding the least significant bits with zeroes? (I doubt anyone is thinking about 64-bit samples for music, but I could be wrong!)