JPL Spatial
Sound spatialization and propagation library
Loading...
Searching...
No Matches
JPL::Detail Namespace Reference

Functions

JPL_INLINE uint32 CeilToPrime (uint32 number)
 
template<class Sample >
constexpr Sample GenRandomSign (uint32 outChannel, uint32 fdnChannel)
 

Variables

constexpr auto cPrimes
 
constexpr uint32 cMaxFDNOrder = 64
 
constexpr uint32 cMaxDelayInSamples = cPrimes.back()
 
template<uint32 FDNOrder>
constexpr bool cValidFDNOrder = FDNOrder > 0 and FDNOrder <= cMaxFDNOrder
 

Detailed Description

Reverb design components & utilities. Largely inspired by wonderful article by Geraint Luff "Let's Write A Reverb"

(example of usage is at the very end of the file)

Function Documentation

◆ CeilToPrime()

JPL_INLINE uint32 JPL::Detail::CeilToPrime ( uint32  number)

◆ GenRandomSign()

template<class Sample >
constexpr Sample JPL::Detail::GenRandomSign ( uint32  outChannel,
uint32  fdnChannel 
)
constexpr

Variable Documentation

◆ cMaxDelayInSamples

constexpr uint32 JPL::Detail::cMaxDelayInSamples = cPrimes.back()
constexpr

◆ cMaxFDNOrder

constexpr uint32 JPL::Detail::cMaxFDNOrder = 64
constexpr

◆ cPrimes

constexpr auto JPL::Detail::cPrimes
inlineconstexpr
Initial value:
=[]() -> std::array<uint32, 2'000>
{
constexpr uint32 N = 2'000;
auto isPrime = [](uint32 num)
{
if (num <= 1) return false;
if (num == 2 || num == 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (uint32 i = 5; i * i <= num; i += 6)
if (num % i == 0 || num % (i + 2) == 0) return false;
return true;
};
std::array<uint32, N> primes{};
std::size_t count = 0;
uint32 candidate = 2;
while (count < N)
{
if (isPrime(candidate))
{
primes[count] = candidate;
count++;
}
candidate++;
}
return primes;
}()
std::uint32_t uint32
Definition Core.h:287

◆ cValidFDNOrder

template<uint32 FDNOrder>
constexpr bool JPL::Detail::cValidFDNOrder = FDNOrder > 0 and FDNOrder <= cMaxFDNOrder
constexpr