Undocumented IE behavior
IE9 (and IE10?) has an internal limit of 41 simultaneous audio and video elements/objects. The 42nd won't be loaded.
It seems to me (without having tested it enough) that this is a "global" limit, affecting all open tabs, and not only a single html document. So it might be that one can load less than 41 audio/videos.
SoundJS/PreloadJS bug
PreloadJS with the SoundJS plugin creates an audio object for each loaded file. So if you load to many audio files, some will will not load - and the error event will be raised containing an valid HTMLAudioElement, which won't play.
The sound will play at random on your site (depending which loaded first). Also videos won't play after preloading sounds.
I reckon that even without preloading SoundJS will not be able to play more than 41 sounds.
I am not sure, but it seems that HTMLAudioPlugin keeps the played audio elements in memory.
Possible solution
- Don't create HTMLAudioElements when preloading (at least in IE). This would affect existing code of developers using the library.
- Reuse the max. 41 "slots" when playing sound on IE.
Further information
It took me almost a day to find this piece of information - more or less by accident :(
This is the only information i could find:
If you find an official documentation of this limit, I would be glad if you let me know.
iPad bug?
We also found a very weird behavior on the iPad (with WebAudioPlugin). At some point our sounds sounded completely distorted and also played to slow. (The sound files are fine, it also occurs with sound files from you demos.) At the beginning of the project everything was ok (we used less sounds them).
I also assume that we are preloading to many sound files, but I don't have the time to isolate the error. (If one sound is distorted, subsequently sound may also be - even in other tabs. You must then quit (not only close) Mobile Safari and delete the cache to have a "clean" state for testing.)
Sorry, but currently I have no time to create a test page. If you need one it will take some time.