Created
November 3, 2014 16:59
-
-
Save FutureMedia/7f9abfff8065c56f39b6 to your computer and use it in GitHub Desktop.
HTML5 Audio functions from http://www.kalliogladiators.fi/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Audio = function() | |
{ | |
var audioVolume = 0; | |
var audioLibrary = new Array(); | |
//audioLibrary['music'] = {"src": "audio/whativebecome.mp3", "defaultVolume": 1, "loop": true}; | |
audioLibrary['music'] = {"src": "audio/theway.mp3", "defaultVolume": 1, "loop": true}; | |
var init = function() | |
{ | |
if (!Utils.isMobile()) | |
{ | |
audioVolume = 1; | |
for (var key in audioLibrary) | |
{ | |
$("#audio").append('<audio id="sound-' + key + '"></audio>'); | |
$("#sound-"+key).attr('src', audioLibrary[key].src); | |
$("#sound-"+key).data('volume', audioLibrary[key].defaultVolume); | |
$("#sound-"+key)[0].addEventListener('playing', soundHandler); | |
$("#sound-"+key)[0].addEventListener('ended', soundHandler); | |
$("#sound-"+key)[0].load(); | |
soundVolume(key, audioLibrary[key].defaultVolume, 0); | |
} | |
} | |
else | |
{ | |
kill(); | |
} | |
} | |
var soundHandler = function(e) | |
{ | |
var key = e.target.id.substr(6, 32); | |
switch(e.type) | |
{ | |
case "ended": | |
if (audioLibrary[key].loop) | |
seek(key, 0); | |
break; | |
case "playing": | |
break; | |
} | |
}; | |
var seek = function(audioKey, timeCode) | |
{ | |
$("#sound-"+audioKey)[0].currentTime = timeCode; | |
$("#sound-"+audioKey)[0].play(); | |
}; | |
var soundPlay = function(audioKey) | |
{ | |
if (!Utils.isMobile()) | |
{ | |
$("#sound-"+audioKey)[0].play(); | |
} | |
} | |
var soundCreateAndPlay = function(audioKey) | |
{ | |
if (audioVolume > 0 && !Utils.isMobile()) | |
{ | |
var time = new Date().getTime(); | |
$("#audio").append('<audio id="sound-' + time + '"></audio>'); | |
$("#sound-"+time).attr('src', audioLibrary[audioKey].src); | |
$("#sound-"+time)[0].addEventListener('ended', soundRemove); | |
$("#sound-"+time)[0].load(); | |
soundVolume(time, audioLibrary[audioKey].defaultVolume, 0); | |
$("#sound-"+time)[0].play(); | |
} | |
} | |
function soundRemove(e) | |
{ | |
var key = e.target.id.substr(6, 32); | |
$("#sound-" + key).remove(); | |
} | |
var soundStop = function(audioKey, duration) | |
{ | |
if (!Utils.isMobile()) | |
{ | |
TweenMax.to($("#sound-"+audioKey), duration, {volume: 0, ease: Linear.easeNone, onComplete: function() | |
{ | |
$("#sound-"+audioKey)[0].pause(); | |
}}); | |
} | |
} | |
var soundVolume = function(audioKey, volumeTo, duration) | |
{ | |
TweenMax.to($("#sound-"+audioKey), (duration > 0 ? duration : 0), {volume: volumeTo, ease: Linear.easeNone}); | |
}; | |
var mute = function() | |
{ | |
TweenMax.to($("audio"), 1, {volume: 0, ease: Linear.easeNone}); | |
} | |
var unMute = function() | |
{ | |
$.each($("audio"), function() | |
{ | |
TweenMax.to($(this), 1, {volume: $(this).data("volume"), ease: Linear.easeNone}); | |
}); | |
} | |
var getVolume = function() | |
{ | |
return audioVolume; | |
} | |
var kill = function() | |
{ | |
audioVolume = 0; | |
mute(); | |
} | |
var unKill = function() | |
{ | |
audioVolume = 1; | |
unMute(); | |
} | |
return { | |
init:init, | |
soundPlay:soundPlay, | |
soundCreateAndPlay:soundCreateAndPlay, | |
soundStop:soundStop, | |
soundVolume:soundVolume, | |
mute:mute, | |
unMute:unMute, | |
kill:kill, | |
unKill:unKill, | |
getVolume:getVolume | |
}; | |
}(); | |
$(document).ready(function() | |
{ | |
Audio.init(); | |
}); | |
$(window).blur(function() | |
{ | |
Audio.kill(); | |
}); | |
$(window).focus(function() | |
{ | |
if (!$("body").hasClass("audio-killed")) | |
Audio.unKill(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment