ita_3da_binauralMixdown.m 1.03 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
function [ binOut ] = ita_3da_binauralMixdown( lsSignals, varargin )
%ITA_3DA_BINAURALMIXDOWN Produces a 2-Channel binaural stream out of
%loudspeaker signal(s) and coordinates (given as optional coordinates or
%better: encoded in the itaAudio channel coordinates
%   Detailed explanation goes here
opts.HRTF='D:\DATA\sciebo\MKOScripts\HRTFs\2015_ITA-Kunstkopf_HRIR_2ch_D186_1x1_256_v17.daff';
opts.LSPos=itaCoordinates;

if nargin>1
    opts=ita_parse_arguments(opts,varargin);
end
if ~(isa(lsSignals, 'itaAudio')&&(lsSignals.nChannels>0))
    error('First input must be itaAudio with at least one channel')
end

if opts.LSPos.nPoints<1
    opts.LSPos=lsSignals.channelCoordinates;
    if opts.LSPos.nPoints<1
        error('We need some channel coordinates!');
    end
end

hrtfSet=itaHRTF('DAFF',opts.HRTF);

binOut=itaAudio;

for k=1:lsSignals.nChannels
    hrtf=hrtfSet.findnearestHRTF(opts.LSPos.n(k));
    convolved=ita_convolve(lsSignals.ch(k),hrtf);
    if k==1
        binOut=convolved;
    else
        binOut=binOut+convolved
    end
end