Mercurial > hg > webaudioevaluationtool
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); |