From ba706f249ac24686a90a6aa44ebba85bb0e41358 Mon Sep 17 00:00:00 2001 From: Paul Kaplan <pkaplan@media.mit.edu> Date: Fri, 23 Jun 2017 12:59:10 -0400 Subject: [PATCH] Refactor auto trim code --- src/lib/audio/audio-recorder.js | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/src/lib/audio/audio-recorder.js b/src/lib/audio/audio-recorder.js index 17fddb433..12f13c825 100644 --- a/src/lib/audio/audio-recorder.js +++ b/src/lib/audio/audio-recorder.js @@ -80,34 +80,16 @@ AudioRecorder.prototype.attachUserMediaStream = function (userMediaStream, onUpd }; AudioRecorder.prototype.stop = function () { - let offset = 0; - let maxRMS = 0; - const chunkLevels = []; - for (let i = 0; i < this.buffers.length; i++) { - const rms = this.calculateRMS(this.buffers[i]); - maxRMS = Math.max(maxRMS, rms); - chunkLevels.push(rms); - } - + const chunkLevels = this.buffers.map(buffer => this.calculateRMS(buffer)); + const maxRMS = Math.max.apply(null, chunkLevels); const threshold = maxRMS / 8; let firstChunkAboveThreshold = null; - let chunkIndex = 0; - while (firstChunkAboveThreshold === null && chunkIndex < chunkLevels.length - 1) { - if (chunkLevels[chunkIndex] > threshold) { - firstChunkAboveThreshold = chunkIndex; - } else { - chunkIndex += 1; - } - } - let lastChunkAboveThreshold = null; - chunkIndex = chunkLevels.length - 1; - while (lastChunkAboveThreshold === null && chunkIndex > 0) { - if (chunkLevels[chunkIndex] > threshold) { - lastChunkAboveThreshold = chunkIndex; - } else { - chunkIndex -= 1; + for (let i = 0; i < chunkLevels.length; i++) { + if (chunkLevels[i] > threshold) { + if (firstChunkAboveThreshold === null) firstChunkAboveThreshold = i; + lastChunkAboveThreshold = i; } } @@ -115,9 +97,10 @@ AudioRecorder.prototype.stop = function () { const buffer = new Float32Array(usedSamples * this.bufferLength); const usedChunkLevels = []; + + let offset = 0; for (let i = 0; i < this.buffers.length; i++) { const bufferChunk = this.buffers[i]; - if (i > firstChunkAboveThreshold - 2 && i < lastChunkAboveThreshold + 1) { usedChunkLevels.push(chunkLevels[i]); buffer.set(bufferChunk, offset); -- GitLab