/* global AudioContext, webkitAudioContext */
var chip8;
(function (chip8) {
'use strict';
var ctx = null,
oscillator = null;
/**
* Creates triangle wave with 40Hz frequency.
* @private
*/
function createOscillator() {
oscillator = ctx.createOscillator();
oscillator.type = 'triangle';
oscillator.frequency.value = 400;
oscillator.connect(ctx.destination);
}
/**
* Emits sound.
* @class chip8.Audio
*/
function Audio() {
var AudioContextClass = AudioContext || webkitAudioContext;
ctx = new AudioContextClass();
}
/**
* Starts playing.
* @function play
* @memberof chip8.Audio
* @instance
*/
Audio.prototype.play = function () {
if (!oscillator) {
createOscillator();
if (oscillator) {
oscillator.start(0);
}
}
};
/**
* Stops playing.
* @function stop
* @memberof chip8.Audio
* @instance
*/
Audio.prototype.stop = function () {
if (oscillator) {
oscillator.stop(0);
oscillator.disconnect(ctx.destination);
oscillator = null;
}
};
chip8.Audio = Audio;
})(chip8 || (chip8 = {}));