21 for (fl::size i = 0; i <
mPool.size(); ++i) {
22 if (
mPool[i].capacity() >= capacity) {
73 for (fl::size i = 0; i <
mBinsRaw.size(); ++i) {
89 for (fl::size i = 0; i <
mBinsRaw.size(); ++i) {
105 int nbands =
static_cast<int>(
mBinsRaw.size());
106 if (nbands <= 1)
return mFmin;
108 return mFmin *
fl::expf(m *
static_cast<float>(i) /
static_cast<float>(nbands - 1));
112 int nbands =
static_cast<int>(
mBinsRaw.size());
113 if (nbands <= 1)
return 0;
114 if (freq <=
mFmin)
return 0;
115 if (freq >=
mFmax)
return nbands - 1;
117 float bin =
fl::logf(freq /
mFmin) / m *
static_cast<float>(nbands - 1);
118 int result =
static_cast<int>(bin + 0.5f);
120 if (
result >= nbands)
return nbands - 1;
162 for (fl::size i = 0; i < factors.
size(); ++i) {
197 h ^=
static_cast<fl::u32
>(key.mode) * 374761393u;
198 h ^=
static_cast<fl::u32
>(key.window) * 2246822519u;
213 fl::lock_guard<fl::mutex> lock(
mMutex);
224 fl::lock_guard<fl::mutex> lock(
mMutex);
229 fl::lock_guard<fl::mutex> lock(
mMutex);
234 fl::lock_guard<fl::mutex> lock(
mMutex);
275 int winMin =
static_cast<int>(
fl::UIAudio audio("Audio Input")
static T & instance() FL_NOEXCEPT
float binBoundary(int i) const FL_NOEXCEPT
fl::vector< float > & raw_mut() FL_NOEXCEPT
void setParams(float fmin, float fmax, int sampleRate) FL_NOEXCEPT
fl::vector< float > & linear_mut() FL_NOEXCEPT
static FloatVectorPool & pool() FL_NOEXCEPT
fl::vector< float > mBinsRawNormalized
fl::vector< float > mBinsLinear
fl::vector< float > mNormFactors
void setNormFactors(const fl::vector< float > &factors) FL_NOEXCEPT
float linearFmin() const FL_NOEXCEPT
fl::span< const float > db() const FL_NOEXCEPT
fl::span< const float > raw() const FL_NOEXCEPT
int sampleRate() const FL_NOEXCEPT
float fmin() const FL_NOEXCEPT
fl::vector< float > mBinsDb
int freqToBin(float freq) const FL_NOEXCEPT
fl::vector< float > mBinsRaw
fl::size bands() const FL_NOEXCEPT
float linearFmax() const FL_NOEXCEPT
float fmax() const FL_NOEXCEPT
fl::span< const float > rawNormalized() const FL_NOEXCEPT
Bins(fl::size n) FL_NOEXCEPT
float binToFreq(int i) const FL_NOEXCEPT
fl::span< const float > linear() const FL_NOEXCEPT
void setLinearParams(float linearFmin, float linearFmax) FL_NOEXCEPT
fl::size size() const FL_NOEXCEPT
void run(const span< const i16 > &sample, Bins *out, const Args &args=Args()) FL_NOEXCEPT
static ImplCache & globalCache() FL_NOEXCEPT
static void setFFTCacheSize(fl::size size) FL_NOEXCEPT
fl::vector< fl::vector< float > > mPool
void releaseIfNotEmpty(fl::vector< float > &&v)
void release(fl::vector< float > &&v)
fl::vector< float > acquire(fl::size capacity)
static const fl::size kMaxPoolSize
fl::size size() const FL_NOEXCEPT
void reserve(fl::size n) FL_NOEXCEPT
Platform-independent mutex interface.
constexpr remove_reference< T >::type && move(T &&t) FL_NOEXCEPT
float sqrtf(float value) FL_NOEXCEPT
float expf(float value) FL_NOEXCEPT
float log10f(float value) FL_NOEXCEPT
bool equal(Iterator1 first1, Iterator1 last1, Iterator2 first2) FL_NOEXCEPT
CRGB sample(const CRGB *grid, const XYMap &xyMap, float x, float y, SampleMode mode)
Sample a pixel from a 2D CRGB grid at floating-point coordinates.
shared_ptr< T > make_shared(Args &&... args) FL_NOEXCEPT
static u32 MurmurHash3_x86_32(const void *key, fl::size len, u32 seed=0)
expected< T, E > result
Alias for expected (Rust-style naming)
fl::platforms::mutex mutex
float logf(float value) FL_NOEXCEPT
Base definition for an LED controller.
#define FL_DISABLE_WARNING(warning)
#define FL_DISABLE_WARNING_PUSH
#define FL_DISABLE_WARNING_POP
fl::u32 operator()(const audio::fft::Args &key) const FL_NOEXCEPT
bool operator==(const Args &other) const FL_NOEXCEPT
Args(int samples=DefaultSamples(), int bands=DefaultBands(), float fmin=DefaultMinFrequency(), float fmax=DefaultMaxFrequency(), int sample_rate=DefaultSampleRate(), Mode mode=Mode::AUTO, Window window=Window::AUTO) FL_NOEXCEPT
static void resolveModeEnums(Mode &mode, Window &window, int bands, int samples, float fmin, float fmax) FL_NOEXCEPT
void setMaxSize(fl::size max_size)
static constexpr fl::size kDefaultMaxSize
fl::shared_ptr< Impl > get_or_create(const Args &args)
HashMapLru< Args, fl::shared_ptr< Impl > > LruMap