comparison js/loudness.js @ 2925:21d548eb40f1

Fix for #226
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 06 Sep 2017 14:07:14 +0100
parents 549e2f97a401
children
comparison
equal deleted inserted replaced
2924:4ae62d4c5c6d 2925:21d548eb40f1
29 } 29 }
30 if (target === undefined) { 30 if (target === undefined) {
31 target = -23; 31 target = -23;
32 } 32 }
33 if (offlineContext === undefined) { 33 if (offlineContext === undefined) {
34 offlineContext = new OfflineAudioContext(audioContext.destination.channelCount, buffer.buffer.duration * audioContext.sampleRate, audioContext.sampleRate); 34 offlineContext = new OfflineAudioContext(audioContext.destination.channelCount, Math.max(0.4, buffer.buffer.duration) * audioContext.sampleRate, audioContext.sampleRate);
35 } 35 }
36 // Create the required filters 36 // Create the required filters
37 var KFilter = offlineContext.createBiquadFilter(); 37 var KFilter = offlineContext.createBiquadFilter();
38 KFilter.type = "highshelf"; 38 KFilter.type = "highshelf";
39 KFilter.gain.value = 4; 39 KFilter.gain.value = 4;
78 78
79 function calculateMeanSquared(buffer, frame_dur, frame_overlap) { 79 function calculateMeanSquared(buffer, frame_dur, frame_overlap) {
80 var frame_size = Math.floor(buffer.sampleRate * frame_dur); 80 var frame_size = Math.floor(buffer.sampleRate * frame_dur);
81 var step_size = Math.floor(frame_size * (1.0 - frame_overlap)); 81 var step_size = Math.floor(frame_size * (1.0 - frame_overlap));
82 var num_frames = Math.floor((buffer.length - frame_size) / step_size); 82 var num_frames = Math.floor((buffer.length - frame_size) / step_size);
83 num_frames = Math.max(num_frames, 0); 83 num_frames = Math.max(num_frames, 1);
84 84
85 var MS = Array(buffer.numberOfChannels); 85 var MS = Array(buffer.numberOfChannels);
86 for (var c = 0; c < buffer.numberOfChannels; c++) { 86 for (var c = 0; c < buffer.numberOfChannels; c++) {
87 MS[c] = new Float32Array(num_frames); 87 MS[c] = new Float32Array(num_frames);
88 var data = buffer.getChannelData(c); 88 var data = buffer.getChannelData(c);