mathieu@14: function s = maxWindowEBR(fg, bg, offset, fgScale) mathieu@14: % Computes the maximum EBR on 1/4s windows of a FG relative to a BG when mathieu@14: % that FG is at a given position in time. mathieu@14: % Optional argument fgScale allows to compute what the EBR would be if FG mathieu@14: % was scaled by that much. mathieu@14: mathieu@14: % This program was written by Mathias Rossignol & Grégoire Lafay mathieu@14: % is Copyright (C) 2015 IRCAM mathieu@14: % mathieu@14: % This program is free software: you can redistribute it and/or modify it mathieu@14: % under the terms of the GNU General Public License as published by the Free mathieu@14: % Software Foundation, either version 3 of the License, or (at your option) mathieu@14: % any later version. mathieu@14: % mathieu@14: % This program is distributed in the hope that it will be useful, but mathieu@14: % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY mathieu@14: % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License mathieu@14: % for more details. mathieu@14: % mathieu@14: % You should have received a copy of the GNU General Public License along mathieu@14: % with this program. If not, see . mathieu@14: mathieu@14: if (nargin==3) fgScale=1; end mathieu@14: len=10000; mathieu@14: for k=1:floor(2*length(fg)/len) mathieu@14: t1 = (len/2)*(k-1)+1; mathieu@14: t2 = min(t1+len-1, length(fg)); mathieu@14: if (t2-t1>10) snrs(k) = snr(fg(t1:t2), bg, offset+t1, fgScale); end mathieu@14: end mathieu@14: s = max(snrs); mathieu@14: end