| window.org_eclipse_osbp_utils_vaadin_beeper_Beeper = function() { |
| var audioCtx = new (window.AudioContext || window.webkitAudioContext || window.audioContext); |
| var soundBuffer = null; |
| var bufferLoader; |
| this.beepSound = function(duration, frequency) { |
| var oscillator = audioCtx.createOscillator(); |
| var gainNode = audioCtx.createGain(); |
| oscillator.connect(gainNode); |
| gainNode.connect(audioCtx.destination); |
| if (frequency){ |
| oscillator.frequency.value = frequency; |
| } |
| setTimeout(function(){ |
| oscillator.stop(); |
| oscillator.disconnect(); |
| gainNode.disconnect(); |
| }, (duration ? duration : 1500)); |
| oscillator.start(); |
| }; |
| function loadSound(url) { |
| var request = new XMLHttpRequest(); |
| request.open('GET', url, true); |
| request.responseType = 'arraybuffer'; |
| // Decode asynchronously |
| request.onload = function() { |
| audioCtx.decodeAudioData(request.response, function(buffer) { |
| var source = audioCtx.createBufferSource(); // creates a sound source |
| source.buffer = buffer; // tell the source which sound to play |
| source.connect(audioCtx.destination); // connect the source to the context's destination (the speakers) |
| source.start(0); // play the source now |
| }, |
| function(e){"Error with decoding audio data" + e.err} |
| ); |
| } |
| request.send(); |
| } |
| this.playSound = function playSound(url) { |
| loadSound(url); |
| // soundInit(); |
| } |
| function soundInit() { |
| bufferLoader = new BufferLoader(audioCtx, [ |
| 'sounds/baby-babble-1.mp3', |
| 'sounds/people-cheering.mp3', |
| 'sounds/y1.mp3', |
| 'sounds/applause-4.mp3', ], |
| finishedLoading); |
| bufferLoader.load(); |
| } |
| function finishedLoading(bufferList) { |
| // Create two sources and play them both together. |
| var source1 = audioCtx.createBufferSource(); |
| var source2 = audioCtx.createBufferSource(); |
| source1.buffer = bufferList[0]; |
| source2.buffer = bufferList[1]; |
| |
| source1.connect(audioCtx.destination); |
| source2.connect(audioCtx.destination); |
| source1.start(0); |
| source2.start(0); |
| } |
| }; |