Loading scripts/reverb/acousting_environment_renderer.cfg 0 → 100644 +33 −0 Original line number Diff line number Diff line [frequencyGrid:0] method = individualFrequencies frequencies = [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, 20000.0] [acousticEnvironment:0] id = 0 frequencyGridIndex = 0 predelay = 0.1 rt60 = [ 1.3622, 1.4486, 1.3168, 1.5787, 1.4766, 1.3954, 1.2889, 1.3462, 1.0759, 1.0401, 1.0970, 1.0850, 1.0910, 1.0404, 1.0499, 1.0699, 1.1028, 1.1714, 1.1027, 1.0666, 1.0550, 1.0553, 1.0521, 1.0569, 1.0421, 0.97822, 0.80487, 0.75944, 0.71945, 0.61682, 0.60031] dsr = [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, 2.511887e-08] scripts/reverb/generate_acoustic_environments_metadata.py +33 −31 Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ def get_frequency_code(f): def get_frequency_hop_code(index): assert 0 <= index < 7 assert 0 <= index <= 6 return [ '0010', # 2^(1/12) '0011', # 2^(1/6) Loading Loading @@ -243,7 +243,7 @@ def get_default_grid_nr_bands(code): return [10, 10, 31, 5, 6, 3, 41, 21, 25][code] def get_distance_code(distance, isSmallScene = True): def get_distance_code(distance, isSmallScene): # 0, 1, ... 99 metersCode = [ '111101', '110010', '110011', '110000', '110001', '110110', '110111', '110100', '110101', '001010', Loading Loading @@ -336,7 +336,8 @@ def concatenate(function, data): def test(): # generate binary output which can be compared with the Matlab implementation output # exercise encoding functions over their supported ranges # save binary output to file so it can be compared against Matlab / C implementations string = '' # count or index encoding Loading Loading @@ -380,7 +381,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg(): # based on config_renderer.cfg # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values data = bitarray( '1' # hasAcEnv '1' # hasAcEnv (see IVAS acoustic environment payload syntax document) + get_count_or_index_code(1) # fgdNrGrids + fgdMethod.Individual_Frequencies.value # fgdMethod + get_count_or_index_code(31) # fgdNrBands Loading Loading @@ -439,7 +440,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re + get_count_or_index_code(1) # AcousticEnvCount + get_id_code(0) # ID + get_count_or_index_code(1) # FreqGridID + get_count_or_index_code(0) # FreqGridID + get_duration_code(0.1) # (input)Predelay + concatenate(get_duration_code, # RT60 Loading @@ -449,20 +450,20 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re 0.60031 ]) + concatenate(get_dsr_code, # DSR [ 1.8811e-08, 2.1428e-08, 1.3972e-08, 1.51e-08, 1.287e-08, 1.8747e-08, 2.413e-08, 3.9927e-08, 8.9719e-08, 1.902e-07, 3.702e-07, 6.1341e-07, 7.1432e-07, 6.5331e-07, 4.6094e-07, 5.4683e-07, 7.0134e-07, 6.856e-07, 7.114e-07, 6.9604e-07, 5.2939e-07, 5.699e-07, 6.1773e-07, 5.7488e-07, 4.7748e-07, 2.7213e-07, 1.3681e-07, 1.0941e-07, 6.2001e-08, 2.8483e-08, 2.6267e-08 ]) [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, 2.511887e-08 ]) + '1' # hasEarlyReflections + concatenate(lambda d : get_distance_code(d, True), [ 3.0, 4.0, 2.5 ]) # room dimensions [ 3.0, 4.0, 2.5 ]) # erSize (room dimensions) + get_count_or_index_code(0) # FreqGridID + concatenate(get_absorption_code, # absorptionCode + get_count_or_index_code(0) # erFreqGridIdx + concatenate(get_absorption_code, # erAbsCoeff [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ]) + '0' # listener origin flag + '0' # hasListenerOrigin , endian='big') Loading Loading @@ -496,7 +497,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re + get_count_or_index_code(1) # AcousticEnvCount + get_id_code(0) # ID + get_count_or_index_code(1) # FreqGridID + get_count_or_index_code(0) # FreqGridID + get_duration_code(0.1) # (input)Predelay + concatenate(get_duration_code, # RT60 Loading @@ -506,24 +507,24 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re 0.60031 ]) + concatenate(get_dsr_code, # DSR [ 1.8811e-08, 2.1428e-08, 1.3972e-08, 1.51e-08, 1.287e-08, 1.8747e-08, 2.413e-08, 3.9927e-08, 8.9719e-08, 1.902e-07, 3.702e-07, 6.1341e-07, 7.1432e-07, 6.5331e-07, 4.6094e-07, 5.4683e-07, 7.0134e-07, 6.856e-07, 7.114e-07, 6.9604e-07, 5.2939e-07, 5.699e-07, 6.1773e-07, 5.7488e-07, 4.7748e-07, 2.7213e-07, 1.3681e-07, 1.0941e-07, 6.2001e-08, 2.8483e-08, 2.6267e-08 ]) [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, 2.511887e-08 ]) + '1' # hasEarlyReflections + concatenate(lambda code : get_distance_code(code, True), [ 3.0, 4.0, 2.5 ]) # room dimensions [ 3.0, 4.0, 2.5 ]) # erSize (room dimensions) + get_count_or_index_code(0) # FreqGridID + concatenate(get_absorption_code, # absorptionCode + get_count_or_index_code(0) # erFreqGridIdx + concatenate(get_absorption_code, # erAbsCoeff [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ]) + '1' # listener origin flag + '1' # is possitive x + '0' # is possitive y + '1' # hasListenerOrigin + '1' # isPositiveX + '0' # isPositiveY + concatenate(lambda d : get_distance_code(d, True), [ 0.5, 0.5, 1.5 ]) # listener origin (x, y, z) [ 0.5, 0.5, 1.5 ]) # erListenerOrigin (x, y, z) , endian='big') Loading Loading @@ -614,10 +615,11 @@ def generate_reverb_payload_equivalent_to_rend_config_recreation_cfg(): file.close() if __name__ == "__main__": #test() generate_reverb_payload_equivalent_to_rend_config_renderer_cfg() generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg() generate_reverb_payload_equivalent_to_rend_config_recreation_cfg() #generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin() #generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_no_listener_origin() #generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin() scripts/reverb/text_to_binary_payload.py +6 −5 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file): # parse frequency grids nr_bands = [] data = bitarray( '1' # hasAcEnv '1' # hasAcEnv (see IVAS acoustic environment payload syntax document) + get_count_or_index_code(len(sections['frequencyGrid'])), # fgdNrGrids endian='big') for _, fg in sections['frequencyGrid'].items(): Loading @@ -107,7 +107,7 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file): + get_bool_code('defaultGridOffset' in fg)) # fgdIsSubGrid if 'defaultGridOffset' in fg: data += bitarray( format(eval_option(fg['defaultGridOffset']), '03b') # fgdDefaultGridOffset ## only 3 bits used iso 6 (to offset into max 41 bands), correct? format(eval_option(fg['defaultGridOffset']), '03b') # fgdDefaultGridOffset + format(eval_option(fg['defaultGridNrBands']), '06b')) # fgdDefaultGridNrBands else: assert False, 'unknow frequency grid method' Loading @@ -132,10 +132,11 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file): if 'listenerOrigin' in ae: xyz = eval_option(ae['listenerOrigin']) assert len(xyz) == 3, 'wrong number of listener origin coordinates' assert xyz[2] >= 0, 'listener origin Z >= 0' data += bitarray( '1' if xyz[0] >= 0 else '0' # isPositiveX + '1' if xyz[1] >= 0 else '0' # isPositiveY + concatenate(get_distance_code, xyz)) # erListenerOrigin get_bool_code(xyz[0] >= 0) # isPositiveX + get_bool_code(xyz[1] >= 0) # isPositiveY + concatenate(lambda d : get_distance_code(d, True), [abs(v) for v in xyz])) # erListenerOrigin # generate binary file data.tofile(open(file.split('.')[0] + '.dat', 'wb')) Loading Loading
scripts/reverb/acousting_environment_renderer.cfg 0 → 100644 +33 −0 Original line number Diff line number Diff line [frequencyGrid:0] method = individualFrequencies frequencies = [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, 20000.0] [acousticEnvironment:0] id = 0 frequencyGridIndex = 0 predelay = 0.1 rt60 = [ 1.3622, 1.4486, 1.3168, 1.5787, 1.4766, 1.3954, 1.2889, 1.3462, 1.0759, 1.0401, 1.0970, 1.0850, 1.0910, 1.0404, 1.0499, 1.0699, 1.1028, 1.1714, 1.1027, 1.0666, 1.0550, 1.0553, 1.0521, 1.0569, 1.0421, 0.97822, 0.80487, 0.75944, 0.71945, 0.61682, 0.60031] dsr = [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, 2.511887e-08]
scripts/reverb/generate_acoustic_environments_metadata.py +33 −31 Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ def get_frequency_code(f): def get_frequency_hop_code(index): assert 0 <= index < 7 assert 0 <= index <= 6 return [ '0010', # 2^(1/12) '0011', # 2^(1/6) Loading Loading @@ -243,7 +243,7 @@ def get_default_grid_nr_bands(code): return [10, 10, 31, 5, 6, 3, 41, 21, 25][code] def get_distance_code(distance, isSmallScene = True): def get_distance_code(distance, isSmallScene): # 0, 1, ... 99 metersCode = [ '111101', '110010', '110011', '110000', '110001', '110110', '110111', '110100', '110101', '001010', Loading Loading @@ -336,7 +336,8 @@ def concatenate(function, data): def test(): # generate binary output which can be compared with the Matlab implementation output # exercise encoding functions over their supported ranges # save binary output to file so it can be compared against Matlab / C implementations string = '' # count or index encoding Loading Loading @@ -380,7 +381,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg(): # based on config_renderer.cfg # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values data = bitarray( '1' # hasAcEnv '1' # hasAcEnv (see IVAS acoustic environment payload syntax document) + get_count_or_index_code(1) # fgdNrGrids + fgdMethod.Individual_Frequencies.value # fgdMethod + get_count_or_index_code(31) # fgdNrBands Loading Loading @@ -439,7 +440,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re + get_count_or_index_code(1) # AcousticEnvCount + get_id_code(0) # ID + get_count_or_index_code(1) # FreqGridID + get_count_or_index_code(0) # FreqGridID + get_duration_code(0.1) # (input)Predelay + concatenate(get_duration_code, # RT60 Loading @@ -449,20 +450,20 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re 0.60031 ]) + concatenate(get_dsr_code, # DSR [ 1.8811e-08, 2.1428e-08, 1.3972e-08, 1.51e-08, 1.287e-08, 1.8747e-08, 2.413e-08, 3.9927e-08, 8.9719e-08, 1.902e-07, 3.702e-07, 6.1341e-07, 7.1432e-07, 6.5331e-07, 4.6094e-07, 5.4683e-07, 7.0134e-07, 6.856e-07, 7.114e-07, 6.9604e-07, 5.2939e-07, 5.699e-07, 6.1773e-07, 5.7488e-07, 4.7748e-07, 2.7213e-07, 1.3681e-07, 1.0941e-07, 6.2001e-08, 2.8483e-08, 2.6267e-08 ]) [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, 2.511887e-08 ]) + '1' # hasEarlyReflections + concatenate(lambda d : get_distance_code(d, True), [ 3.0, 4.0, 2.5 ]) # room dimensions [ 3.0, 4.0, 2.5 ]) # erSize (room dimensions) + get_count_or_index_code(0) # FreqGridID + concatenate(get_absorption_code, # absorptionCode + get_count_or_index_code(0) # erFreqGridIdx + concatenate(get_absorption_code, # erAbsCoeff [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ]) + '0' # listener origin flag + '0' # hasListenerOrigin , endian='big') Loading Loading @@ -496,7 +497,7 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re + get_count_or_index_code(1) # AcousticEnvCount + get_id_code(0) # ID + get_count_or_index_code(1) # FreqGridID + get_count_or_index_code(0) # FreqGridID + get_duration_code(0.1) # (input)Predelay + concatenate(get_duration_code, # RT60 Loading @@ -506,24 +507,24 @@ def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_re 0.60031 ]) + concatenate(get_dsr_code, # DSR [ 1.8811e-08, 2.1428e-08, 1.3972e-08, 1.51e-08, 1.287e-08, 1.8747e-08, 2.413e-08, 3.9927e-08, 8.9719e-08, 1.902e-07, 3.702e-07, 6.1341e-07, 7.1432e-07, 6.5331e-07, 4.6094e-07, 5.4683e-07, 7.0134e-07, 6.856e-07, 7.114e-07, 6.9604e-07, 5.2939e-07, 5.699e-07, 6.1773e-07, 5.7488e-07, 4.7748e-07, 2.7213e-07, 1.3681e-07, 1.0941e-07, 6.2001e-08, 2.8483e-08, 2.6267e-08 ]) [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, 2.511887e-08 ]) + '1' # hasEarlyReflections + concatenate(lambda code : get_distance_code(code, True), [ 3.0, 4.0, 2.5 ]) # room dimensions [ 3.0, 4.0, 2.5 ]) # erSize (room dimensions) + get_count_or_index_code(0) # FreqGridID + concatenate(get_absorption_code, # absorptionCode + get_count_or_index_code(0) # erFreqGridIdx + concatenate(get_absorption_code, # erAbsCoeff [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ]) + '1' # listener origin flag + '1' # is possitive x + '0' # is possitive y + '1' # hasListenerOrigin + '1' # isPositiveX + '0' # isPositiveY + concatenate(lambda d : get_distance_code(d, True), [ 0.5, 0.5, 1.5 ]) # listener origin (x, y, z) [ 0.5, 0.5, 1.5 ]) # erListenerOrigin (x, y, z) , endian='big') Loading Loading @@ -614,10 +615,11 @@ def generate_reverb_payload_equivalent_to_rend_config_recreation_cfg(): file.close() if __name__ == "__main__": #test() generate_reverb_payload_equivalent_to_rend_config_renderer_cfg() generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg() generate_reverb_payload_equivalent_to_rend_config_recreation_cfg() #generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin() #generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_no_listener_origin() #generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin()
scripts/reverb/text_to_binary_payload.py +6 −5 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file): # parse frequency grids nr_bands = [] data = bitarray( '1' # hasAcEnv '1' # hasAcEnv (see IVAS acoustic environment payload syntax document) + get_count_or_index_code(len(sections['frequencyGrid'])), # fgdNrGrids endian='big') for _, fg in sections['frequencyGrid'].items(): Loading @@ -107,7 +107,7 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file): + get_bool_code('defaultGridOffset' in fg)) # fgdIsSubGrid if 'defaultGridOffset' in fg: data += bitarray( format(eval_option(fg['defaultGridOffset']), '03b') # fgdDefaultGridOffset ## only 3 bits used iso 6 (to offset into max 41 bands), correct? format(eval_option(fg['defaultGridOffset']), '03b') # fgdDefaultGridOffset + format(eval_option(fg['defaultGridNrBands']), '06b')) # fgdDefaultGridNrBands else: assert False, 'unknow frequency grid method' Loading @@ -132,10 +132,11 @@ def parse_reverb_text_configuration_and_generate_binary_payload(file): if 'listenerOrigin' in ae: xyz = eval_option(ae['listenerOrigin']) assert len(xyz) == 3, 'wrong number of listener origin coordinates' assert xyz[2] >= 0, 'listener origin Z >= 0' data += bitarray( '1' if xyz[0] >= 0 else '0' # isPositiveX + '1' if xyz[1] >= 0 else '0' # isPositiveY + concatenate(get_distance_code, xyz)) # erListenerOrigin get_bool_code(xyz[0] >= 0) # isPositiveX + get_bool_code(xyz[1] >= 0) # isPositiveY + concatenate(lambda d : get_distance_code(d, True), [abs(v) for v in xyz])) # erListenerOrigin # generate binary file data.tofile(open(file.split('.')[0] + '.dat', 'wb')) Loading