export AbstractRoom, RectangularRoom export AbstractRIRConfig, ISMConfig abstract type AbstractRoom end struct RectangularRoom{T<:Real} <: AbstractRoom c::T L::Tuple{T, T, T} β::Tuple{T, T, T, T, T, T} end abstract type AbstractRIRConfig end """ """ struct ISMConfig{T<:Real, I<:Integer, R<:AbstractRNG} <: AbstractRIRConfig order::Tuple{I, I} # Order of reflection [low, high] fs::T # Sampling frequency N::I # Number of samples in impulse response Wd::T # Single impulse width hp::Bool # High pass filter isd::T # Image source distortion (randomized image method) lrng::R end function ISMConfig( order=(0, -1), fs=16000.0, N=4000, Wd=8e-3, hp=true, isd=0.0, lrng=GLOBAL_RNG ) ISMConfig(order, fs, N, Wd, hp, isd, lrng) end