Commit 2d20a09f authored by emerit's avatar emerit
Browse files

add generateCustomBinaryFile

parent 8fe966ac
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
version https://git-lfs.github.com/spec/v1
oid sha256:4faf67d1d6d4999a73add5c6f84df8cad348cbf10dfd66b5d6f7e8c3c769a28e
size 23769349
+98 −0
Original line number Diff line number Diff line
%function [ hrir ] = ComputeDeconvolutionFilterGeneric( hrirHp_Mic,lHir,lFadeOut,tailleFFT,clipDB_LF,clipDB_HF, freqLow, freqHigh, Fs, HFFreqCut, retard )
function [ hrir tmp_phanmin_inv] = ComputeDeconvolutionFilterGeneric( Half_TF_Hp_Mic,lHir,lFadeOut,clipDB_LF,clipDB_HF, freqLow, freqHigh, Fs, HFFreqCut )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here

%if (nargin ~= 11)
if (nargin ~= 9)
    disp ('Bad arguments');
    return;
end
Meth = 'phamin_inv_mod_cutoff_phamin';
%Meth = 'phamin_inv_mod_cutoff_phalin';
%Meth = 'inv_phamin_mod';
%Meth = 'inv_cutoff_phalin';
%Meth = 'inv_cutoff_phamin';
Meth = '';

nhp = size(Half_TF_Hp_Mic,2);
tailleFFT = (size(Half_TF_Hp_Mic,1)-1) * 2;

if (isreal(Half_TF_Hp_Mic))
    Meth = '';
end

%hrtfMic(:,1:nhp) = fft(hrirHp_Mic(:,1:nhp),tailleFFT);

freq = (0:1:tailleFFT/2);
freq = freq*Fs/tailleFFT;

% if retard<= 0
%     Delay_l = exp((sqrt(-1) * 2 * pi * retard) * freq) ;
% else
%     Delay_l = ones(tailleFFT/2+1,1);
% end

freq = freq(1:end-1);



    
tmp = hann(2*lFadeOut)';
win = [ones(1,lHir-lFadeOut,1) tmp(end/2+1:end)];

indLow = zeros(1,nhp);

d=fdesign.lowpass('Fp,Fst,Ap,Ast',HFFreqCut*0.95/(Fs/2),HFFreqCut/(Fs/2),0.01,96); % Filtre passe bas a partir de 20kHz (gain de -96dB a partir de 21.6kHz)
Hd = design(d,'equiripple');
lowPassFilter = Hd.getnumerator;
HD = (fft(lowPassFilter,tailleFFT));
HD = HD (:,1:end/2+1);

if ((strcmp(Meth,'phamin_inv_mod_cutoff_phamin')) || (strcmp(Meth,'inv_cutoff_phamin')))
HD_pm = mps(abs(HD),-96);
end

clear d;
clear Hd;
clear lowPassFilter;


for ind = 1 :nhp
tmp = find(freq < freqLow(ind) );
indLow(ind) = tmp(end);
tmp = find(freq > freqHigh(ind));
indHigh(ind) = tmp(1);
end

hrir = zeros(lHir,nhp);

for ind = 1:nhp
clear('tmp');
        tmp = zeros(1,tailleFFT/2+1);
        tmp = abs(Half_TF_Hp_Mic(1:end,ind)');
        tmpLow = clipdb(tmp,clipDB_LF(ind));
        tmpHigh = clipdb(tmp,clipDB_HF(ind));
        tmp(1:end) = [tmpLow(1:indLow(ind)) tmpHigh(indLow(ind)+1:end)];    

    if (strcmp(Meth,'phamin_inv_mod_cutoff_phalin'))
        tmp_phanmin_inv = HD./mps(tmp,-96);
    elseif (strcmp(Meth,'phamin_inv_mod_cutoff_phamin'))  
        tmp_phanmin_inv = HD_pm./mps(tmp,-96);
%     elseif (strcmp(Meth,'inv_cutoff_phalin'))
%         tmp_phanmin_inv = HD./transpose(hrtfMic(1:end/2+1,ind));
%         tmp_phanmin_inv = HD.*tmp_phanmin_inv;
%     elseif (strcmp(Meth,'inv_cutoff_phamin'))
%         tmp = Delay_l.*mps(tmp,-96);
%         tmp_phanmin_inv = [tmp(1:indLow(ind)) transpose(hrtfMic(indLow(ind)+1:indHigh(ind),ind)) tmp(indHigh(ind)+1:end)];
%         tmp_phanmin_inv = HD_pm./tmp_phanmin_inv;
    else
        tmp_phanmin_inv = mps(abs(HD)./tmp,-96);
    end
    tmp_phanmin_inv_all = [tmp_phanmin_inv(1:end)  conj(tmp_phanmin_inv( end-1:-1:2))] ;
    tmp_ri = real(ifft(tmp_phanmin_inv_all)) ;
    hrir(:,ind) = tmp_ri(1:lHir) .* win;
 end


+30 −0
Original line number Diff line number Diff line
%function [ hrir HRTF] = ComputeDiffuseEQFilters( DTF,Fs,lHir,lFadeOut, clipValLF,clipValHF,freqLowLimit,freqLowBandWidth, freqHighLimit,HFFreqCut )
function [ hrir HRTF] = ComputeDiffuseEQFilters( DTF,Fs,lHir,lFadeOut, clipValLF,clipValHF,freqLowLimit, freqHighLimit,HFFreqCut )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here

valmax = max(DTF);

% tailleFFT = (size(DTF,1)-1) * 2;
% 
% freq = (0:1:tailleFFT/2);
% freq = freq*Fs/tailleFFT;
% 
% freq = freq(1:end-1);
% 
% 
% tmp = find(freq < freqLowLimit );
% indLow1 = tmp(end);
% 
% tmp = find(freq < freqLowLimit+freqLowBandWidth );
% indLow2 = tmp(end);
% 
% meanBF = mean(DTF(indLow1:indLow2));
% 
% clipValLF = 20*log10(meanBF/valmax);


[hrir HRTF]= ComputeDeconvolutionFilterGeneric(DTF,lHir,lFadeOut,clipValLF,clipValHF, freqLowLimit, HFFreqCut,Fs,HFFreqCut);
  
end
+3 −0
Original line number Diff line number Diff line
version https://git-lfs.github.com/spec/v1
oid sha256:e35e6a84a30511614a95d067cae7632f0f2e905ee01ecb8f6f9cadd49ec6211b
size 43968723
Loading