Skip to content

Commit

Permalink
add button to turn volume on and off
Browse files Browse the repository at this point in the history
  • Loading branch information
orsi committed May 31, 2020
1 parent 1d84e5f commit 8db47ce
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 21 deletions.
58 changes: 39 additions & 19 deletions script/audio.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ var AudioEngine = {
currentBackgroundChannel: 'bg1',
currentBackgroundAudio: null,
currentEventAudio: null,
init: function(options) {
init: function (options) {
// for legacy browsers
AudioEngine.audioContext = new (window.AudioContext || window.webkitAudioContext);
audioLog('starting audio engine');
Expand Down Expand Up @@ -50,27 +50,27 @@ var AudioEngine = {
AudioEngine.tracks['sfx'].gain.setValueAtTime(1.0, AudioEngine.audioContext.currentTime);
},
options: {}, // Nothing for now,
_canPlayAudio: function() {
_canPlayAudio: function () {
if (AudioEngine.audioContext.state === 'suspended') {
audioLog('can\'t play audio');
return false;
}
return true;
},
_playSound: function(buffer) {
_playSound: function (buffer) {
if (!AudioEngine._canPlayAudio()) return;

var source = AudioEngine.audioContext.createBufferSource();
source.buffer = buffer;
source.connect(AudioEngine.tracks['sfx']);
source.start(AudioEngine.audioContext.currentTime);
},
_fadeTrack: function(buffer) {
_fadeTrack: function (buffer) {
if (!AudioEngine._canPlayAudio()) return;

audioLog('_fadeMusic');
console.log(buffer);

var bufferSource = AudioEngine.audioContext.createBufferSource();
bufferSource.buffer = buffer;
bufferSource.loop = true;
Expand All @@ -83,7 +83,7 @@ var AudioEngine = {
} else {
nextBackgroundChannel = 'bg1';
}

// fade in new track
var fadeTime = AudioEngine.audioContext.currentTime + AudioEngine.FADE_TIME;
bufferSource.connect(AudioEngine.tracks[nextBackgroundChannel]);
Expand All @@ -101,19 +101,19 @@ var AudioEngine = {
AudioEngine.currentBackgroundChannel = nextBackgroundChannel;
AudioEngine.currentBackgroundAudio = bufferSource;
},
_playEvent: function(buffer) {
_playEvent: function (buffer) {
if (!AudioEngine._canPlayAudio()) return;

var bufferSource = AudioEngine.audioContext.createBufferSource();
bufferSource.buffer = buffer;
bufferSource.loop = true;

var fadeTime = AudioEngine.audioContext.currentTime + AudioEngine.FADE_TIME * 2;

// turn down background music
AudioEngine.tracks['bg1'].gain.linearRampToValueAtTime(0.2, fadeTime);
AudioEngine.tracks['bg2'].gain.linearRampToValueAtTime(0.2, fadeTime);

// fade in event music
bufferSource.connect(AudioEngine.tracks['events']);
bufferSource.start(0);
Expand All @@ -122,7 +122,7 @@ var AudioEngine = {
AudioEngine.tracks['events'].gain.setValueAtTime(0.0, AudioEngine.audioContext.currentTime);
AudioEngine.tracks['events'].gain.linearRampToValueAtTime(1.0, fadeTime);
},
_stopEventMusic: function() {
_stopEventMusic: function () {
var fadeTime = AudioEngine.audioContext.currentTime + AudioEngine.FADE_TIME * 2;

// fade out event music and stop
Expand All @@ -135,25 +135,25 @@ var AudioEngine = {
// turn up background music
AudioEngine.tracks[AudioEngine.currentBackgroundChannel].gain.linearRampToValueAtTime(1.0, fadeTime);
},
changeMusic: function(src) {
changeMusic: function (src) {
AudioEngine.loadAudioFile(src)
.then(function (buffer) {
audioLog('changeMusic: ' + src);
AudioEngine._fadeTrack(buffer);
});
},
playEventMusic: function(src) {
playEventMusic: function (src) {
AudioEngine.loadAudioFile(src)
.then(function (buffer) {
audioLog('playEventMusic: ' + src);
AudioEngine._playEvent(buffer);
});
},
stopEventMusic: function() {
stopEventMusic: function () {
audioLog('stopEventMusic');
AudioEngine._stopEventMusic();
},
playSound: function(src) {
playSound: function (src) {
AudioEngine.loadAudioFile(src)
.then(function (buffer) {
audioLog('playSound: ' + src);
Expand All @@ -167,16 +167,36 @@ var AudioEngine = {
});
} else {
var request = new Request(src);
return fetch(request).then(function(response) {
return fetch(request).then(function (response) {
return response.arrayBuffer();
}).then(function(buffer) {
return AudioEngine.audioContext.decodeAudioData(buffer, function(decodedData) {
}).then(function (buffer) {
return AudioEngine.audioContext.decodeAudioData(buffer, function (decodedData) {
AudioEngine.AUDIO_BUFFER_CACHE[src] = decodedData;
return AudioEngine.AUDIO_BUFFER_CACHE[src];
});
});
});
}
},
mute: function () {
AudioEngine.master.gain.linearRampToValueAtTime(
0.0,
AudioEngine.audioContext.currentTime + AudioEngine.FADE_TIME
);
},
setVolume: function (volume) {
if (!AudioEngine.master) return; // master may not be ready yet
if (!volume) {
volume = 1.0;
}
}
AudioEngine.master.gain.setValueAtTime(
AudioEngine.master.gain.value,
AudioEngine.audioContext.currentTime
);
AudioEngine.master.gain.linearRampToValueAtTime(
volume,
AudioEngine.audioContext.currentTime + AudioEngine.FADE_TIME / 2
);
}
};

function audioLog(message) {
Expand Down
26 changes: 24 additions & 2 deletions script/engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@
});
}

$('<span>')
.addClass('volume menuBtn')
.text(_('sound off.'))
.click(Engine.toggleVolume)
.appendTo(menu);

$('<span>')
.addClass('appStore menuBtn')
.text(_('get the app.'))
Expand Down Expand Up @@ -215,12 +221,16 @@
Ship.init();
}

if(!$SM.get('config.soundOn')){
Engine.toggleVolume();
}

if($SM.get('config.lightsOff', true)){
Engine.turnLightsOff();
Engine.turnLightsOff();
}

if($SM.get('config.hyperMode', true)){
Engine.triggerHyperMode();
Engine.triggerHyperMode();
}

Engine.saveLanguage();
Expand Down Expand Up @@ -782,6 +792,18 @@
}
},

toggleVolume: function() {
if ($SM.get('config.soundOn')) {
$('.volume').text(_('sound on.'));
$SM.set('config.soundOn', false);
AudioEngine.mute();
} else {
$('.volume').text(_('sound off.'));
$SM.set('config.soundOn', true);
AudioEngine.setVolume(1.0);
}
},

setInterval: function(callback, interval, skipDouble){
if( Engine.options.doubleTime && !skipDouble ){
Engine.log('Double time, cutting interval in half');
Expand Down

0 comments on commit 8db47ce

Please sign in to comment.