From 648ecd95f935613e43931a9fd0bc7c0280027bfd Mon Sep 17 00:00:00 2001 From: William Toohey Date: Fri, 16 Oct 2015 22:38:51 +1000 Subject: [PATCH] Add ogg support --- js/ResourcePack.js | 19 ++++++++++++++++--- js/SoundManager.js | 11 ++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/js/ResourcePack.js b/js/ResourcePack.js index f1921ac..dc94f48 100644 --- a/js/ResourcePack.js +++ b/js/ResourcePack.js @@ -60,7 +60,7 @@ function Respack(url) { this.loadFromURL(url); } -Respack.prototype.audioExtensions = new RegExp("\\.(mp3)$", "i"); +Respack.prototype.audioExtensions = new RegExp("\\.(mp3|ogg)$", "i"); Respack.prototype.imageExtensions = new RegExp("\\.(png|gif|jpg|jpeg)$", "i"); Respack.prototype.animRegex = new RegExp("(.*?)_\\d+$"); @@ -429,7 +429,20 @@ Respack.prototype.parseSongQueue = function() { "enabled":true, "filename":songFile.name, "charsPerBeat": null}; - songFile.getBlob("audio/mpeg3", function(sound) { + var extension = songFile.name.split('.').pop().toLowerCase(); + var mime = ""; + switch(extension) { + case "mp3": + mime = "audio/mpeg3"; + break; + case "ogg": + mime = "audio/ogg"; + newSong.noTrim = true; + break; + default: + mime = "application/octet-stream"; + } + songFile.getBlob(mime, function(sound) { // Because blobs are crap var fr = new FileReader(); fr.onload = function() { @@ -485,7 +498,7 @@ Respack.prototype.parseImageQueue = function() { Respack.prototype.imageLoadStart = function(imgFile, imageObj) { var that = this; var extension = imgFile.name.split('.').pop().toLowerCase(); - var mime; + var mime = ""; switch(extension) { case "png": mime = "image/png"; diff --git a/js/SoundManager.js b/js/SoundManager.js index 04da799..16199c7 100644 --- a/js/SoundManager.js +++ b/js/SoundManager.js @@ -82,7 +82,7 @@ function SoundManager(core) { source.connect( that.context.destination); // play the file - source.noteOn(0); + source.start(0); }, false); } @@ -217,9 +217,9 @@ SoundManager.prototype.getAudioCallback = function(song, isBuild) { return; } if(isBuild) { - that.tmpBuild = that.trimMP3(buffer, song.forceTrim); + that.tmpBuild = that.trimMP3(buffer, song.forceTrim, song.noTrim); } else { - that.tmpBuffer = that.trimMP3(buffer, song.forceTrim); + that.tmpBuffer = that.trimMP3(buffer, song.forceTrim, song.noTrim); } that.onSongLoad(song); }; @@ -246,11 +246,12 @@ SoundManager.prototype.onSongLoad = function(song) { } // because MP3 is bad, we nuke silence -SoundManager.prototype.trimMP3 = function(buffer, forceTrim) { +SoundManager.prototype.trimMP3 = function(buffer, forceTrim, noTrim) { // Firefox has to trim always, Chrome only on PackShit var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; // forceTrim is because PackShit breaks everything - if(!(isFirefox || forceTrim)) { + // noTrim is for oggs + if((!isFirefox && !forceTrim) || noTrim) { return buffer; } var start = LAME_DELAY_START;