# Desired RT per octave band, and time to truncate the responses rt60 = np.array([1., 0.8, 0.7, 0.6, 0.5, 0.4]) nBands = len(rt60) # Generate octave bands band_centerfreqs = np.empty(nBands) band_centerfreqs[0] = 125 for nb in range(1, nBands): band_centerfreqs[nb] = 2 * band_centerfreqs[nb-1] # Absorption for approximately achieving the RT60 above - row per band abs_wall = srs.find_abs_coeffs_from_rt(room, rt60)[0] # Critical distance for the room _, d_critical, _ = srs.room_stats(room, abs_wall) # Receiver position rec = np.array([ [4.5, 3.4, 1.5], [2.0, 3.1, 1.4] ]) nRec = rec.shape[0] # Source positions src = np.array([ [6.2, 2.0, 1.8], [7.9, 3.3, 1.75], [5.8, 5.0, 1.9] ]) nSrc = src.shape[0] # SH orders for receivers rec_orders = np.array([1, 3]) # rec1: first order(4ch), rec2: 3rd order (16ch) # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # RUN SIMULATOR
L = 2 N = 10 H = np.zeros((len(rt60_vector), nBands, N, dimM * L, dimM * L), dtype=complex) Hj = np.zeros((len(rt60_vector), nBands, N, dimM * L, dimM * L), dtype=complex) for rt60_idx, rt60_0 in enumerate(rt60_vector): room = np.array([10.2, 7.1, 3.2]) rt60 = rt60_bands(rt60_0, nBands, rt60_decay) abs_wall = srs.find_abs_coeffs_from_rt(room, rt60)[0] # Critical distance for the room _, d_critical, _ = srs.room_stats(room, abs_wall, verbose=False) # Receiver position rec = (room / 2)[np.newaxis] # center of the room nRec = rec.shape[0] # d_critical distance with defined angular position azi = azi + np.pi # TODO: fix in srs library!!! src_sph = np.array([azi, np.pi / 2 - incl, d_critical.mean()]) src_cart = masp.sph2cart(src_sph) src = rec + src_cart nSrc = src.shape[0] # SH orders for receivers rec_orders = np.array([1])