Short Sounds dont play on ipad/iphone, but long sound files do

edited December 2013 in JavaScript Mode

I'm exactly copying an example from the IBM site on how to have a button play sound on my iphone under javascript control. But I cant figure out what I'm doing wrong.

The following works fine on a desktop for both "audio" and "audio2" sounds. But on an iphone it only works for sound "audio" but not for sound "audio2". The only difference between these two sounds that I can see is that "audio" is a song that lasts a minute and audio2 is a sound that lasts 0.25 seconds.

    <body>

    // a short audio file (0.24 seconds long).
    <audio id="audio2">
        <source src="audio2/zbing.m4a" type="audio/mpeg" />
    </audio>

    // this is the original example from the IBM jsfiddle site
    <audio id="audio">
        <source src='http://dl.dropbox.com/u/1538714/article_resources/song.m4a' type="audio/mpeg" />
    </audio>

    <button id="button">Play1</button>

     <script type="text/javascript">

           var button = document.getElementById('button');
           var audio1 = document.getElementById("audio2");  // works for "audio" but not "audio2" on iphones.

           var onClick = function() {
                       audio1.play(); // audio will load and then play
             };

           button.addEventListener('click', onClick, false);      // ties button press to audio play.

    </script>
    </body>

Ultimately I want my game to have lots of short sounds so I'm not wedded to the above method if you have a better one. the reason for this convoluted process is to figure out how to work around the iphone's need to have user input before it will load/play sounds. To work that out, I was following the example for this trick to have the user intiate a sound load by a button press.

PS: the anchor tag that appears in the src= listing above is not really there. this web forum inserts that automagically!

Answers

  • edited December 2013

    ??

  • I suggest using the Audio API if you dare to take the long way. Here is a good tutorial that helpmed me tremendously http://www.html5rocks.com/en/tutorials/webaudio/intro/

    As far as I know, the audio element in html5 is still a bit buggy. Looping sounds seamlessly is a problem, something you may eventualy need for a game. As far as I know there still is no bulletproof solution you can use without having a fallback to flash.

    But your bug with short sounds not getting played is very intresting^^ If you don't mind telling what you found out about it in the meantime, I would appreciate it :)

Sign In or Register to comment.