import numpy as np
import pyfar as pf
import pyrato as ra
from pyrato.analytic import rectangular_room_rigid_walls
L = np.array([8, 5, 3])/10
source_pos = np.array([5, 3, 1.2])/10
receiver_pos = np.array([1, 1, 1.2])/10
rir, _ = rectangular_room_rigid_walls(
    L, source_pos, receiver_pos,
    reverberation_time=1, max_freq=1e3, n_samples=2**16,
    speed_of_sound=343.9)
rir = rir/np.abs(rir.time).max()
awgn = pf.signals.noise(
    rir.n_samples, rms=rir.time.max()*10**(-40/20),
    sampling_rate=rir.sampling_rate)
rir = rir + awgn
inter_time, _, noise_power = ra.edc.intersection_time_lundeby(rir)
ax = pf.plot.time(rir, dB=True, label='RIR')
ax.axvline(inter_time, c='k', linestyle='--', label='$T_i$')
ax.axhline(
    10*np.log10(noise_power), c='k', linestyle=':', label='Noise')
ax.set_ylim(-65, 5)
ax.legend()
