2022-10-13 15:50:42 +02:00
|
|
|
|
2023-02-17 13:24:19 +01:00
|
|
|
export AbstractRoom, RectangularRoom
|
|
|
|
export AbstractRIRConfig, ISMConfig
|
2022-10-13 15:50:42 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-17 13:24:19 +01:00
|
|
|
abstract type AbstractRoom end
|
2022-10-13 15:50:42 +02:00
|
|
|
|
2023-02-17 13:24:19 +01:00
|
|
|
struct RectangularRoom{T<:Real} <: AbstractRoom
|
2022-10-13 15:50:42 +02:00
|
|
|
c::T
|
2023-05-16 11:55:55 +02:00
|
|
|
L::Tuple{T,T,T}
|
|
|
|
β::Tuple{T,T,T,T,T,T}
|
2022-10-13 15:50:42 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-17 13:24:19 +01:00
|
|
|
abstract type AbstractRIRConfig end
|
2022-10-13 15:50:42 +02:00
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
"""
|
2023-05-16 11:55:55 +02:00
|
|
|
struct ISMConfig{T<:Real,I<:Integer,R<:AbstractRNG} <: AbstractRIRConfig
|
|
|
|
order::Tuple{I,I} # Order of reflection [low, high]
|
2022-10-13 15:50:42 +02:00
|
|
|
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)
|
2022-12-23 10:41:22 +01:00
|
|
|
lrng::R
|
2022-10-13 15:50:42 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function ISMConfig(
|
|
|
|
order=(0, -1),
|
2022-12-23 10:41:22 +01:00
|
|
|
fs=16000.0,
|
2022-10-13 15:50:42 +02:00
|
|
|
N=4000,
|
|
|
|
Wd=8e-3,
|
|
|
|
hp=true,
|
|
|
|
isd=0.0,
|
|
|
|
lrng=GLOBAL_RNG
|
|
|
|
)
|
|
|
|
ISMConfig(order, fs, N, Wd, hp, isd, lrng)
|
|
|
|
end
|
|
|
|
|
|
|
|
|