Advertisement
lalatino

multitrack player

Aug 7th, 2013
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.48 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  5. <title> - jsFiddle demo</title>
  6.  
  7. <script type='text/javascript' src='http://code.jquery.com/jquery-1.10.1.js'></script>
  8.  
  9. <style type='text/css'>
  10. .mp3Player {
  11. padding:8px;
  12. margin:8px;
  13. background-color:#ddf;
  14. }
  15. </style>
  16.  
  17.  
  18.  
  19. <script type='text/javascript'>//<![CDATA[
  20.  
  21. jQuery(function (){
  22. var myAudio = document.getElementById("myAudio");
  23. var playList = [
  24. {src:'songs/loop1.mp3', t:'title 1'}, /* .ogg will be alternatives */
  25. {src:'songs/loop2.mp3', t:'title 2'},
  26. {src:'songs/loop3.mp3', t:'title 3'},
  27. {src:'songs/loop4.mp3', t:'title 4'},
  28. {src:'songs/loop5.mp3', t:'title 5'}
  29. ];
  30. var playListIndex = 0;
  31. var current = null;
  32. var playingString = "<span aria-hidden=\"true\" data-icon=\"&#xe002;\"></span><span class=\"screen-reader-text\">Pause</span>";
  33. var pausedString = "<span aria-hidden=\"true\" data-icon=\"&#xe003;\"></span><span class=\"screen-reader-text\">Play</span>";
  34. $('.btnPlayPause').click(function(e){
  35. var target = this;
  36. //console.log(target, current); //return;
  37. if (current == target) {
  38. target.innerHTML = pausedString;
  39. target.parentNode.setAttribute('data-pos', myAudio.currentTime); //start from paused
  40. myAudio.pause();
  41. current = null;
  42. } else { // current!=target
  43. if (current != null) {
  44. current.innerHTML = pausedString;
  45. current.parentNode.setAttribute('data-pos', '0'); //reset position
  46. target.parentNode.setAttribute('data-pos', myAudio.currentTime); //start from paused
  47. }
  48. current = target;
  49. target.innerHTML = playingString;
  50. var src;
  51. if (target.id && target.id == 'specialPlay') {
  52. src = playList[playListIndex].src;
  53. //console.log(playList, src);
  54. target.parentNode.parentNode.title = playList[playListIndex].t;
  55. myAudio.onended = function(){ //auto progress to next track
  56. playListIndex = (playListIndex<playList.length-1) ? playListIndex+1 :0;
  57. myAudio.src = playList[playListIndex].src;
  58. target.parentNode.setAttribute('data-pos', '0'); //reset position
  59. target.parentNode.parentNode.title = playList[playListIndex].t;
  60. myAudio.play();
  61. }
  62. } else {
  63. src = target.parentNode.getAttribute('data-src');
  64. }
  65. if(myAudio.canPlayType && myAudio.canPlayType("audio/mpeg") != "") { // MP3
  66. src = src;
  67. } else if(myAudio.canPlayType && myAudio.canPlayType("audio/ogg") != "") { // OGG
  68. src = src.replace(/.mp3$/i,'.ogg');;
  69. } else {
  70. //alert('Error: your browser doesn\'t support playing audio. Please use modern browser like Chrome, Firefox, Safari or IE9.');
  71. return;
  72. }
  73. myAudio.src = src;
  74. myAudio.play();
  75. myAudio.onloadeddata = function () {
  76. myAudio.currentTime = parseFloat(target.parentNode.getAttribute('data-pos'));
  77. };
  78. }
  79. });
  80. $('.btnMute').click(function(e){
  81. myAudio.muted = !myAudio.muted;
  82. $('.btnMute').each(function(){
  83. if (myAudio.muted) {
  84. this.innerHTML = "<span aria-hidden=\"true\" data-icon=\"&#xe001;\"></span><span class=\"screen-reader-text\">Muted</span>";
  85. } else {
  86. this.innerHTML = "<span aria-hidden=\"true\" data-icon=\"&#xe000;\"></span><span class=\"screen-reader-text\">Audible</span>";
  87. }
  88. });
  89. });
  90. });
  91.  
  92. //]]>
  93.  
  94. </script>
  95.  
  96.  
  97. </head>
  98. <body>
  99.  
  100.  
  101. <div class="custom"><!--top multitrack player-->
  102. <div class="audio-container">
  103. <div class="controls" data-pos="0">
  104. <button class="btnPlayPause" id="specialPlay">
  105. <span class="controller" aria-hidden="true" data-icon="&#xe002;"></span>
  106. <span class="screen-reader-text">Play/Pause</span>
  107. </button>
  108. <button class="btnMute">
  109. <span class="controller" aria-hidden="true" data-icon="&#xe001;"></span>
  110. <span class="screen-reader-text">Mute/Unmute</span>
  111. </button>
  112. </div><!-- /controls -->
  113. </div><!-- /audio-container -->
  114. </div>
  115.  
  116. <audio id="myAudio"></audio>
  117.  
  118. <div class="mp3Player" data-src="a.mp3" data-src2="a.ogg" data-pos="0">
  119. <button class="btnPlayPause button">►||</button>
  120. <button class="btnMute button">MUTE</button>
  121. <span class="infoLabel">Audio #1</span>
  122. </div>
  123.  
  124. <div class="mp3Player" data-src="b.mp3" data-src2="b.ogg" data-pos="0">
  125. <button class="btnPlayPause button">►||</button>
  126. <button class="btnMute button">MUTE</button>
  127. <span class="infoLabel">Audio #2</span>
  128. </div>
  129.  
  130. <!-- http://stackoverflow.com/questions/18035392/control-multiple-html5-audio-tracks-using-a-single-controller/ -->
  131. </body>
  132. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement