-
Notifications
You must be signed in to change notification settings - Fork 9
/
sound.js
61 lines (51 loc) · 1.68 KB
/
sound.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* Hey, let's be friends! http://twitter.com/pubnub */
// -----------------------------------------------------------------------
// SOUNDS
// -----------------------------------------------------------------------
var sounds = (function(){
var soundbank = {}
, p = PUBNUB;
function stop(audio) {
if (!audio) return;
audio.pause();
reset(audio);
}
function reset(audio) {
try { audio.currentTime = 0.0 }
catch (e) { }
}
return {
play : function( sound, duration ) {
var audio = soundbank[sound] || (function(){
var audio = soundbank[sound] = p.create('audio');
p.css( audio, { display : 'none' } );
p.attr( audio, 'prelaod', 'auto' );
p.attr( audio, 'autoplay', 'true' );
audio.innerHTML = p.supplant(
"<source src={file}.wav>"+
"<source src={file}.ogg>"+
"<source src={file}.mp3>",
{ file : sound }
);
p.search('body')[0].appendChild(audio);
return audio;
})();
stop(audio);
audio.load();
audio.play();
// Play a Set Portion of Audio
clearTimeout(audio.timer);
if (duration) audio.timer = setTimeout( function() {
stop(audio);
}, duration );
},
stop : function(sound) {
stop(soundbank[sound]);
},
stopAll : function() {
p.each( soundbank, function( _, audio ) {
stop(audio);
} );
}
};
})();