changeset 2672:0b1c48849b4f

#192. Actually must be at least 1 frame, even partial
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Wed, 29 Mar 2017 15:56:22 +0100
parents f734e5fa2065
children 1f529b6e2d88 b9efbbe0d829 549e2f97a401
files js/loudness.js
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/js/loudness.js	Wed Mar 29 15:52:15 2017 +0100
+++ b/js/loudness.js	Wed Mar 29 15:56:22 2017 +0100
@@ -80,7 +80,7 @@
     frame_size = Math.floor(buffer.sampleRate * frame_dur);
     step_size = Math.floor(frame_size * (1.0 - frame_overlap));
     num_frames = Math.floor((buffer.length - frame_size) / step_size);
-    num_frames = Math.max(num_frames, 0);
+    num_frames = Math.max(num_frames, 1);
 
     MS = Array(buffer.numberOfChannels);
     for (var c = 0; c < buffer.numberOfChannels; c++) {
@@ -89,7 +89,11 @@
         for (var no = 0; no < num_frames; no++) {
             MS[c][no] = 0.0;
             for (var ptr = 0; ptr < frame_size; ptr++) {
-                var sample = data[no * step_size + ptr];
+                var i = no * step_size + ptr;
+                if (i >= buffer.length) {
+                    break;
+                }
+                var sample = data[i];
                 MS[c][no] += sample * sample;
             }
             MS[c][no] /= frame_size;