annotate aux/loudness_match.m @ 9:ee22af6610a3

Sanitised user ID, end message, bug fixes.
author Brecht De Man <b.deman@qmul.ac.uk>
date Sun, 30 Nov 2014 21:44:03 +0000
parents 4fd284285159
children
rev   line source
b@0 1 function factor = loudness_match (X, fs, lkfs)
b@0 2 %LOUDNESS_MATCH
b@0 3 % LOUDNESS_MATCH (X, fs, lkfs) calculates an amplitude multiplication factor
b@0 4 % which equalizes a sound to match the specified loudness (in LKFS).
b@0 5 %
b@0 6 % 2010-02-23 by MARUI Atsushi
b@0 7
b@0 8 factor = 1.0;
b@0 9 factorHigh = 10^(+60/20);
b@0 10 factorLow = 10^(-60/20);
b@0 11 i = 1;
b@0 12
b@0 13 while i
b@0 14 s = loudness_itu(factor * X, fs);
b@0 15 k = (s - lkfs) / lkfs;
b@0 16
b@0 17 fprintf('%3d: Factor %7.5f LKFS %7.3f (%6.2f%% difference)\n', i, factor, s, k*100);
b@0 18 i = i + 1;
b@0 19
b@0 20 if abs(k) < 0.001
b@0 21 return;
b@0 22 end
b@0 23
b@0 24 if k < 0.0
b@0 25 factorOld = factor;
b@0 26 factor = (factorLow + factor) / 2.0;
b@0 27 factorHigh = factorOld;
b@0 28 elseif k > 0.0
b@0 29 factorOld = factor;
b@0 30 factor = (factorHigh + factor) / 2.0;
b@0 31 factorLow = factorOld;
b@0 32 end
b@0 33 end