Flawless mp3 loops - switch to kepstin's mpg123.js.

master
William Toohey 9 years ago
parent 89549d4762
commit 53f4fc6f1e
  1. 2
      gulpfile.js
  2. 25
      lib/workers/audio-worker.js
  3. 7700
      src/js/audio/mp3.js
  4. 312
      src/js/audio/mpg123.js

@ -32,7 +32,7 @@ gulp.task('css', function(){
}); });
gulp.task("audio", function () { gulp.task("audio", function () {
gulp.src(["src/js/audio/aurora.js", "src/js/audio/mp3.js"]) gulp.src(["src/js/audio/aurora.js", "src/js/audio/mpg123.js"])
.pipe(concat("audio-min.js")) .pipe(concat("audio-min.js"))
.pipe(uglify()) .pipe(uglify())
.pipe(gulp.dest("lib")); .pipe(gulp.dest("lib"));

@ -1,28 +1,15 @@
var window = self; var window = self;
importScripts('../audio-min.js'); importScripts('../audio-min.js');
// Flash value var deinterleave = function(buffer, asset) {
var LAME_DELAY_START = 2258;
var LAME_DELAY_END = 0;
var deinterleaveAndTrim = function(buffer, asset) {
var channels = asset.format.channelsPerFrame, var channels = asset.format.channelsPerFrame,
len = buffer.length / channels, len = buffer.length / channels;
newLen, start;
// because MP3 is bad, we nuke silence var result = new Float32Array(len * channels);
if(asset.format.formatID == "mp3") {
newLen = len - LAME_DELAY_START - LAME_DELAY_END;
start = LAME_DELAY_START;
} else {
newLen = len;
start = 0;
}
var result = new Float32Array(newLen * channels);
for(var sample = 0; sample < newLen; sample++) { for(var sample = 0; sample < len; sample++) {
for(var channel = 0; channel < channels; channel++) { for(var channel = 0; channel < channels; channel++) {
result[channel*newLen + sample] = buffer[(sample+start)*channels + channel]; result[channel*len + sample] = buffer[(sample)*channels + channel];
} }
} }
return result; return result;
@ -51,7 +38,7 @@ self.addEventListener('message', function(e) {
}); });
asset.decodeToBuffer(function(buffer) { asset.decodeToBuffer(function(buffer) {
var fixedBuffer = deinterleaveAndTrim(buffer, asset); var fixedBuffer = deinterleave(buffer, asset);
var raw = {array: fixedBuffer, var raw = {array: fixedBuffer,
sampleRate: asset.format.sampleRate, sampleRate: asset.format.sampleRate,
channels: asset.format.channelsPerFrame} channels: asset.format.channelsPerFrame}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save