![]() |
ProtoTracer
1.0
Real-time 3D rendering and animation engine
|
Provides real-time FFT analysis of microphone signals. More...
#include <MicrophoneFourier_DMA.h>
Static Public Member Functions | |
static void | Initialize (uint8_t pin, uint32_t sampleRate, float minDB, float maxDB) |
Initializes the microphone and FFT system with basic parameters. | |
static void | Initialize (uint8_t pin, uint8_t gain_pin, uint32_t sampleRate, float minDB, float maxDB, bool microphoneGain_50db) |
Initializes the microphone and FFT system with advanced parameters. | |
static void | setSamplingRate (uint32_t sampleRate) |
Sets the sampling rate for the microphone. | |
static void | setMicGain (bool is50db) |
Sets the microphone gain. | |
static void | UpdateDMA () |
Updates the DMA system to process new samples. | |
static void | Initialize (uint8_t pin, uint16_t sampleRate, float minDB, float maxDB, float refreshRate=60.0f) |
Initializes the microphone and FFT system. | |
static void | Reset () |
Resets the microphone system and clears stored data. | |
static void | Update () |
Updates the microphone system, processing new samples and performing FFT. | |
![]() | |
static float | AverageMagnitude (uint16_t binL, uint16_t binH) |
Calculates the average magnitude of the specified FFT bins. | |
static bool | IsInitialized () |
Checks if the microphone system is initialized. | |
static float | GetSampleRate () |
Retrieves the current sampling rate. | |
static float * | GetSamples () |
Retrieves the raw input samples. | |
static float * | GetFourier () |
Retrieves the FFT output data. | |
static float * | GetFourierFiltered () |
Retrieves the filtered FFT output data. | |
static float | GetCurrentMagnitude () |
Retrieves the current signal magnitude. | |
Static Private Member Functions | |
static void | window_raw_fft_data (void *buffer, const void *window) |
Applies a Hanning window to raw FFT data. | |
static void | SamplerCallback (AnalogBufferDMA *dma_buffer_instance, int8_t adc_num) |
Callback function for DMA sampling. | |
static void | SamplerCallback () |
Callback function for the sampling timer. | |
static void | StartSampler () |
Starts the sampling process using the IntervalTimer. | |
Static Private Attributes | |
static const int16_t | Hanning256 [] |
Hanning window coefficients for FFT. | |
static bool | microphoneGain_50db = false |
Flag to enable or disable 50dB microphone gain. | |
static uint8_t | gain_pin = 0 |
Pin number for gain control (if applicable). | |
static IntervalTimer | sampleTimer |
Timer for managing sampling intervals. | |
static TimeStep | timeStep = TimeStep(60) |
Time step utility for controlling updates. | |
static uint16_t | samples = 0 |
Number of samples collected in the current cycle. | |
static uint16_t | samplesStorage = 0 |
Total number of samples stored. | |
static float | refreshRate = 60.0f |
Refresh rate for processing in Hz. | |
static bool | samplesReady = false |
Flag indicating if samples are ready for processing. | |
static uint16_t | frequencyBins [OutputBins] |
Array for storing frequency bin data. | |
Additional Inherited Members | |
![]() | |
static const uint16_t | FFTSize = 256 |
Size of the FFT (number of samples). | |
static const uint16_t | OutputBins = 128 |
Number of output bins from FFT processing. | |
static uint16_t | sampleRate = 8000 |
Sampling rate in Hz. | |
static uint8_t | pin = 0 |
Pin number for microphone input. | |
static float | minDB = 50.0f |
Minimum decibel value for normalization. | |
static float | maxDB = 120.0f |
Maximum decibel value for normalization. | |
static float | threshold = 400.0f |
Threshold value for processing. | |
static float | currentValue = 0.0f |
Current magnitude of the microphone signal. | |
static bool | isInitialized = false |
Flag indicating if the system is initialized. | |
static DerivativeFilter | peakFilterRate |
Filter for peak rate detection. | |
static float | inputSamp [FFTSize *2] |
Raw input samples for FFT. | |
static float | inputStorage [FFTSize] |
Storage for processed input samples. | |
static float | outputMagn [FFTSize] |
Magnitude output from FFT. | |
static float | outputData [OutputBins] |
Processed FFT data for output bins. | |
static float | outputDataFilt [OutputBins] |
Filtered FFT data for output bins. | |
static FFTFilter | fftFilters [OutputBins] |
Array of FFT filters for post-processing. | |
static FFT< FFTSize > | fft |
FFT processor instance. | |
Provides real-time FFT analysis of microphone signals.
Provides real-time microphone analysis using FFT.
The MicrophoneFourier class leverages DMA and FFT techniques to analyze microphone input signals in real time. It supports configurable sampling rates, gain control, and signal processing.
The MicrophoneFourier class extends MicrophoneFourierBase to add capabilities for real-time sampling, signal processing, and frequency bin analysis. It enables dynamic updating and resetting of the microphone system.
Definition at line 27 of file MicrophoneFourier_DMA.h.
|
static |
Initializes the microphone and FFT system.
pin | The pin connected to the microphone. |
sampleRate | The desired sampling rate in Hz. |
minDB | Minimum dB level for normalization. |
maxDB | Maximum dB level for normalization. |
refreshRate | The desired refresh rate for processing (default is 60 Hz). |
Definition at line 35 of file MicrophoneFourier_MAX9814.cpp.
References MicrophoneFourierBase::FFTSize, frequencyBins, MicrophoneFourierBase::isInitialized, MicrophoneFourierBase::maxDB, MicrophoneFourierBase::minDB, MicrophoneFourierBase::OutputBins, MicrophoneFourierBase::pin, refreshRate, MicrophoneFourierBase::sampleRate, samples, samplesReady, TimeStep::SetFrequency(), StartSampler(), and timeStep.
Initializes the microphone and FFT system with basic parameters.
pin | Pin number connected to the microphone output. |
sampleRate | Sampling rate in Hz. |
minDB | Minimum dB level for normalization. |
maxDB | Maximum dB level for normalization. |
Definition at line 314 of file MicrophoneFourier_DMA.cpp.
References adc, adc_dma_instance(), MicrophoneFourierBase::isInitialized, MicrophoneFourierBase::maxDB, MicrophoneFourierBase::minDB, MicrophoneFourierBase::pin, and MicrophoneFourierBase::sampleRate.
Referenced by AlphaAnimation::Initialize(), ProtogenProject::Initialize(), MyntAnimation::MyntAnimation(), SergaliciousAnimation::SergaliciousAnimation(), and TechSaneAnimation::TechSaneAnimation().
|
static |
Initializes the microphone and FFT system with advanced parameters.
pin | Pin number connected to the microphone output. |
gain_pin | Pin number for gain control. |
sampleRate | Sampling rate in Hz. |
minDB | Minimum dB level for normalization. |
maxDB | Maximum dB level for normalization. |
microphoneGain_50db | Flag to enable or disable 50dB microphone gain. |
Definition at line 335 of file MicrophoneFourier_DMA.cpp.
References adc, adc_dma_instance(), gain_pin, MicrophoneFourierBase::isInitialized, MicrophoneFourierBase::maxDB, microphoneGain_50db, MicrophoneFourierBase::minDB, MicrophoneFourierBase::pin, and MicrophoneFourierBase::sampleRate.
|
static |
Resets the microphone system and clears stored data.
Definition at line 61 of file MicrophoneFourier_MAX9814.cpp.
References MicrophoneFourierBase::FFTSize, and MicrophoneFourierBase::inputSamp.
Referenced by Update().
|
staticprivate |
Callback function for the sampling timer.
This function is triggered at each sampling interval to collect microphone data.
Definition at line 14 of file MicrophoneFourier_MAX9814.cpp.
References MicrophoneFourierBase::FFTSize, MicrophoneFourierBase::inputSamp, MicrophoneFourierBase::inputStorage, MicrophoneFourierBase::pin, samples, samplesReady, samplesStorage, and sampleTimer.
Referenced by StartSampler(), and UpdateDMA().
|
staticprivate |
Callback function for DMA sampling.
dma_buffer_instance | Instance of the DMA buffer used for sampling. |
adc_num | ADC number associated with the sample. |
Definition at line 284 of file MicrophoneFourier_DMA.cpp.
References Hanning256, MicrophoneFourierBase::inputSamp, MicrophoneFourierBase::inputStorage, and window_raw_fft_data().
Sets the microphone gain.
is50db | True to enable 50dB gain, false to disable. |
Definition at line 367 of file MicrophoneFourier_DMA.cpp.
References gain_pin, and microphoneGain_50db.
Sets the sampling rate for the microphone.
sampleRate | Sampling rate in Hz. |
Definition at line 361 of file MicrophoneFourier_DMA.cpp.
References adc, and MicrophoneFourierBase::sampleRate.
|
staticprivate |
Starts the sampling process using the IntervalTimer.
Definition at line 28 of file MicrophoneFourier_MAX9814.cpp.
References MicrophoneFourierBase::sampleRate, SamplerCallback(), samples, samplesReady, samplesStorage, and sampleTimer.
Referenced by Initialize(), and Update().
|
static |
Updates the microphone system, processing new samples and performing FFT.
Definition at line 67 of file MicrophoneFourier_MAX9814.cpp.
References MicrophoneFourierBase::AverageMagnitude(), FFT< fftSize >::ComplexMagnitude(), MicrophoneFourierBase::fft, MicrophoneFourierBase::fftFilters, DerivativeFilter::Filter(), FFTFilter::Filter(), MicrophoneFourierBase::inputSamp, MicrophoneFourierBase::inputStorage, TimeStep::IsReady(), MicrophoneFourierBase::maxDB, MicrophoneFourierBase::minDB, MicrophoneFourierBase::OutputBins, MicrophoneFourierBase::outputData, MicrophoneFourierBase::outputDataFilt, MicrophoneFourierBase::outputMagn, MicrophoneFourierBase::peakFilterRate, FFT< fftSize >::Radix2FFT(), Reset(), samplesReady, StartSampler(), MicrophoneFourierBase::threshold, and timeStep.
Referenced by ArtleckAnimationV2::Update(), ElGatoAnimation::Update(), LeonHuskyAnimation::Update(), MyntAnimation::Update(), ProtobottAnimation::Update(), SergaliciousAnimation::Update(), TechSaneAnimation::Update(), VesperAnimation::Update(), WaffleDaProtoAnimation::Update(), WarzoneAnimation::Update(), AlphaAnimation::Update(), and ProtogenProject::UpdateFace().
|
static |
Updates the DMA system to process new samples.
Definition at line 373 of file MicrophoneFourier_DMA.cpp.
References adc_dma_instance(), MicrophoneFourierBase::AverageMagnitude(), FFT< fftSize >::ComplexMagnitude(), MicrophoneFourierBase::fft, MicrophoneFourierBase::fftFilters, DerivativeFilter::Filter(), FFTFilter::Filter(), MicrophoneFourierBase::inputSamp, MicrophoneFourierBase::inputStorage, MicrophoneFourierBase::maxDB, MicrophoneFourierBase::minDB, MicrophoneFourierBase::OutputBins, MicrophoneFourierBase::outputData, MicrophoneFourierBase::outputDataFilt, MicrophoneFourierBase::outputMagn, MicrophoneFourierBase::peakFilterRate, FFT< fftSize >::Radix2FFT(), SamplerCallback(), and MicrophoneFourierBase::threshold.
Applies a Hanning window to raw FFT data.
buffer | Pointer to the raw FFT data buffer. |
window | Pointer to the windowing coefficients. |
Definition at line 272 of file MicrophoneFourier_DMA.cpp.
Referenced by SamplerCallback().
|
staticprivate |
Array for storing frequency bin data.
Definition at line 41 of file MicrophoneFourier_MAX9814.h.
Referenced by Initialize().
|
staticprivate |
Pin number for gain control (if applicable).
Definition at line 32 of file MicrophoneFourier_DMA.h.
Referenced by Initialize(), and setMicGain().
Hanning window coefficients for FFT.
Definition at line 29 of file MicrophoneFourier_DMA.h.
Referenced by SamplerCallback().
Flag to enable or disable 50dB microphone gain.
Definition at line 31 of file MicrophoneFourier_DMA.h.
Referenced by Initialize(), and setMicGain().
|
staticprivate |
Refresh rate for processing in Hz.
Definition at line 38 of file MicrophoneFourier_MAX9814.h.
Referenced by Initialize().
|
staticprivate |
Number of samples collected in the current cycle.
Definition at line 36 of file MicrophoneFourier_MAX9814.h.
Referenced by Initialize(), SamplerCallback(), and StartSampler().
Flag indicating if samples are ready for processing.
Definition at line 39 of file MicrophoneFourier_MAX9814.h.
Referenced by Initialize(), SamplerCallback(), StartSampler(), and Update().
|
staticprivate |
Total number of samples stored.
Definition at line 37 of file MicrophoneFourier_MAX9814.h.
Referenced by SamplerCallback(), and StartSampler().
|
staticprivate |
Timer for managing sampling intervals.
Definition at line 33 of file MicrophoneFourier_MAX9814.h.
Referenced by SamplerCallback(), and StartSampler().
Time step utility for controlling updates.
Definition at line 34 of file MicrophoneFourier_MAX9814.h.
Referenced by Initialize(), and Update().