% SUpDEq - Spatial Upsampling by Directional Equalization script get_sparse_HRTF_set_Lebedev Just a small script to show how to get a sparse HRTF dataset based on the reference HRTF dataset 'HRIRs_sfd_Nx' or 'HRIRs_NF150_sfd_Nx'. Field sourceDistance is used if available. Important for DVF (distance variation function) processing with 'HRIRs_NFxxx' as reference. (C) 2018 by JMA, Johannes M. Arend TH Köln - University of Applied Sciences Institute of Communications Engineering Department of Acoustics and Audio Signal Processing
0001 %% SUpDEq - Spatial Upsampling by Directional Equalization 0002 % 0003 % script get_sparse_HRTF_set_Lebedev 0004 % 0005 % Just a small script to show how to get a sparse HRTF dataset based on the 0006 % reference HRTF dataset 'HRIRs_sfd_Nx' or 'HRIRs_NF150_sfd_Nx'. 0007 % Field sourceDistance is used if available. Important for DVF (distance 0008 % variation function) processing with 'HRIRs_NFxxx' as reference. 0009 % 0010 % (C) 2018 by JMA, Johannes M. Arend 0011 % TH Köln - University of Applied Sciences 0012 % Institute of Communications Engineering 0013 % Department of Acoustics and Audio Signal Processing 0014 0015 %% 0016 clear all; 0017 %Load reference dataset 0018 referenceHRTFdataset = importdata('HRIRs_sfd_N35.mat'); 0019 0020 %Simply do subsampling of the referenceHRTFdataset 0021 %Define number of nodes of sparse grid. Options for lebedev grid: 0022 %6, 14, 26, 38, 50, 74, 86, 110, 146, 170, 194, 230, 266, 302, 0023 %350, 434, 590, 770, 974, 1202, 1454, 1730, 2030, 2354, 2702, 0024 nSparse=38; 0025 %Get sparse sampling grid 0026 [sparseGrid, ~, NmaxSparse] = supdeq_lebedev(nSparse); 0027 0028 %% Create HRTF dataset as mat file (for internal use) 0029 %Get HRTFs from referenceHRTFdataset 0030 [sparseHRTFdataset.HRTF_L, sparseHRTFdataset.HRTF_R] = supdeq_getArbHRTF(referenceHRTFdataset,sparseGrid); 0031 %Fill struct with additional info 0032 sparseHRTFdataset.f = referenceHRTFdataset.f; 0033 sparseHRTFdataset.Nmax = NmaxSparse; 0034 sparseHRTFdataset.FFToversize = referenceHRTFdataset.FFToversize; 0035 sparseHRTFdataset.samplingGrid = sparseGrid; 0036 if isfield(referenceHRTFdataset,'sourceDistance') 0037 sparseHRTFdataset.sourceDistance = referenceHRTFdataset.sourceDistance; 0038 end 0039 0040 % Save as mat file 0041 fileName = ['sparseHRTFdataset_L',num2str(nSparse)]; 0042 save(fileName,'sparseHRTFdataset') 0043 0044 %% Create HRIR dataset in SOFA format (for standardized input format) 0045 %Get HRIRs from referenceHRTFdataset 0046 [sparseHRIRdataset.HRIR_L, sparseHRIRdataset.HRIR_R] = supdeq_getArbHRIR(referenceHRTFdataset,sparseGrid); 0047 % Write SOFA object 0048 if isfield(referenceHRTFdataset,'sourceDistance') 0049 %Get source distance if is field 0050 sparseHRIRdataset_SOFA = supdeq_writeSOFAobj(sparseHRIRdataset.HRIR_L',sparseHRIRdataset.HRIR_R',sparseGrid(:,1:2),[],[],referenceHRTFdataset.sourceDistance); 0051 else 0052 % %Use defaults: fs = 48000, earDistance = 0.165m, sourceDistance = 3.0m 0053 sparseHRIRdataset_SOFA = supdeq_writeSOFAobj(sparseHRIRdataset.HRIR_L',sparseHRIRdataset.HRIR_R',sparseGrid(:,1:2)); 0054 end 0055 0056 % Save as SOFA file 0057 fileName = ['sparseHRIRdataset_L',num2str(nSparse),'.sofa']; 0058 SOFAsave(fileName,sparseHRIRdataset_SOFA)