initial commit
This commit is contained in:
58
libraries/FastLED/src/fl/fft_impl.h
Normal file
58
libraries/FastLED/src/fl/fft_impl.h
Normal file
@@ -0,0 +1,58 @@
|
||||
#pragma once
|
||||
|
||||
#include "fl/hash_map_lru.h"
|
||||
#include "fl/pair.h"
|
||||
#include "fl/unique_ptr.h"
|
||||
#include "fl/span.h"
|
||||
#include "fl/vector.h"
|
||||
|
||||
namespace fl {
|
||||
|
||||
class AudioSample;
|
||||
class FFTContext;
|
||||
struct FFT_Args;
|
||||
|
||||
// Example:
|
||||
// FFTImpl fft(512, 16);
|
||||
// auto sample = SINE WAVE OF 512 SAMPLES
|
||||
// fft.run(buffer, &out);
|
||||
// FASTLED_WARN("FFTImpl output: " << out); // 16 bands of output.
|
||||
class FFTImpl {
|
||||
public:
|
||||
// Result indicating success or failure of the FFTImpl run (in which case
|
||||
// there will be an error message).
|
||||
struct Result {
|
||||
Result(bool ok, const string &error) : ok(ok), error(error) {}
|
||||
bool ok = false;
|
||||
fl::string error;
|
||||
};
|
||||
// Default values for the FFTImpl.
|
||||
FFTImpl(const FFT_Args &args);
|
||||
~FFTImpl();
|
||||
|
||||
fl::size sampleSize() const;
|
||||
// Note that the sample sizes MUST match the samples size passed into the
|
||||
// constructor.
|
||||
Result run(const AudioSample &sample, FFTBins *out);
|
||||
Result run(span<const i16> sample, FFTBins *out);
|
||||
// Info on what the frequency the bins represent
|
||||
fl::string info() const;
|
||||
|
||||
// Detail.
|
||||
static int DefaultSamples() { return 512; }
|
||||
static int DefaultBands() { return 16; }
|
||||
static float DefaultMinFrequency() { return 174.6f; }
|
||||
static float DefaultMaxFrequency() { return 4698.3f; }
|
||||
static int DefaultSampleRate() { return 44100; }
|
||||
|
||||
// Disable copy and move constructors and assignment operators
|
||||
FFTImpl(const FFTImpl &) = delete;
|
||||
FFTImpl &operator=(const FFTImpl &) = delete;
|
||||
FFTImpl(FFTImpl &&) = delete;
|
||||
FFTImpl &operator=(FFTImpl &&) = delete;
|
||||
|
||||
private:
|
||||
fl::unique_ptr<FFTContext> mContext;
|
||||
};
|
||||
|
||||
}; // namespace fl
|
||||
Reference in New Issue
Block a user