ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
MicrophoneFourier Class Reference

Provides real-time FFT analysis of microphone signals. More...

#include <MicrophoneFourier_DMA.h>

Inheritance diagram for MicrophoneFourier:
Collaboration diagram for MicrophoneFourier:

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 Public Member Functions inherited from MicrophoneFourierBase
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 floatGetSamples ()
 Retrieves the raw input samples.
 
static floatGetFourier ()
 Retrieves the FFT output data.
 
static floatGetFourierFiltered ()
 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 Protected Attributes inherited from MicrophoneFourierBase
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< FFTSizefft
 FFT processor instance.
 

Detailed Description

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.

Member Function Documentation

◆ Initialize() [1/3]

void Initialize ( uint8_t  pin,
uint16_t  sampleRate,
float  minDB,
float  maxDB,
float  refreshRate = 60.0f 
)
static

Initializes the microphone and FFT system.

Parameters
pinThe pin connected to the microphone.
sampleRateThe desired sampling rate in Hz.
minDBMinimum dB level for normalization.
maxDBMaximum dB level for normalization.
refreshRateThe 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.

◆ Initialize() [2/3]

void Initialize ( uint8_t  pin,
uint32_t  sampleRate,
float  minDB,
float  maxDB 
)
static

Initializes the microphone and FFT system with basic parameters.

Parameters
pinPin number connected to the microphone output.
sampleRateSampling rate in Hz.
minDBMinimum dB level for normalization.
maxDBMaximum 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().

◆ Initialize() [3/3]

void Initialize ( uint8_t  pin,
uint8_t  gain_pin,
uint32_t  sampleRate,
float  minDB,
float  maxDB,
bool  microphoneGain_50db 
)
static

Initializes the microphone and FFT system with advanced parameters.

Parameters
pinPin number connected to the microphone output.
gain_pinPin number for gain control.
sampleRateSampling rate in Hz.
minDBMinimum dB level for normalization.
maxDBMaximum dB level for normalization.
microphoneGain_50dbFlag 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.

◆ Reset()

void Reset ( )
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().

◆ SamplerCallback() [1/2]

void SamplerCallback ( )
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().

◆ SamplerCallback() [2/2]

void SamplerCallback ( AnalogBufferDMA dma_buffer_instance,
int8_t  adc_num 
)
staticprivate

Callback function for DMA sampling.

Parameters
dma_buffer_instanceInstance of the DMA buffer used for sampling.
adc_numADC 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().

◆ setMicGain()

void setMicGain ( bool  is50db)
static

Sets the microphone gain.

Parameters
is50dbTrue to enable 50dB gain, false to disable.

Definition at line 367 of file MicrophoneFourier_DMA.cpp.

References gain_pin, and microphoneGain_50db.

◆ setSamplingRate()

void setSamplingRate ( uint32_t  sampleRate)
static

Sets the sampling rate for the microphone.

Parameters
sampleRateSampling rate in Hz.

Definition at line 361 of file MicrophoneFourier_DMA.cpp.

References adc, and MicrophoneFourierBase::sampleRate.

◆ StartSampler()

void StartSampler ( )
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().

◆ Update()

◆ UpdateDMA()

◆ window_raw_fft_data()

void window_raw_fft_data ( void buffer,
const void window 
)
staticprivate

Applies a Hanning window to raw FFT data.

Parameters
bufferPointer to the raw FFT data buffer.
windowPointer to the windowing coefficients.

Definition at line 272 of file MicrophoneFourier_DMA.cpp.

Referenced by SamplerCallback().

Member Data Documentation

◆ frequencyBins

uint16_t frequencyBins
staticprivate

Array for storing frequency bin data.

Definition at line 41 of file MicrophoneFourier_MAX9814.h.

Referenced by Initialize().

◆ gain_pin

uint8_t gain_pin = 0
staticprivate

Pin number for gain control (if applicable).

Definition at line 32 of file MicrophoneFourier_DMA.h.

Referenced by Initialize(), and setMicGain().

◆ Hanning256

const int16_t Hanning256[]
staticprivate

Hanning window coefficients for FFT.

Definition at line 29 of file MicrophoneFourier_DMA.h.

Referenced by SamplerCallback().

◆ microphoneGain_50db

bool microphoneGain_50db = false
staticprivate

Flag to enable or disable 50dB microphone gain.

Definition at line 31 of file MicrophoneFourier_DMA.h.

Referenced by Initialize(), and setMicGain().

◆ refreshRate

float refreshRate = 60.0f
staticprivate

Refresh rate for processing in Hz.

Definition at line 38 of file MicrophoneFourier_MAX9814.h.

Referenced by Initialize().

◆ samples

uint16_t samples = 0
staticprivate

Number of samples collected in the current cycle.

Definition at line 36 of file MicrophoneFourier_MAX9814.h.

Referenced by Initialize(), SamplerCallback(), and StartSampler().

◆ samplesReady

bool samplesReady = false
staticprivate

Flag indicating if samples are ready for processing.

Definition at line 39 of file MicrophoneFourier_MAX9814.h.

Referenced by Initialize(), SamplerCallback(), StartSampler(), and Update().

◆ samplesStorage

uint16_t samplesStorage = 0
staticprivate

Total number of samples stored.

Definition at line 37 of file MicrophoneFourier_MAX9814.h.

Referenced by SamplerCallback(), and StartSampler().

◆ sampleTimer

IntervalTimer sampleTimer
staticprivate

Timer for managing sampling intervals.

Definition at line 33 of file MicrophoneFourier_MAX9814.h.

Referenced by SamplerCallback(), and StartSampler().

◆ timeStep

TimeStep timeStep = TimeStep(60)
staticprivate

Time step utility for controlling updates.

Definition at line 34 of file MicrophoneFourier_MAX9814.h.

Referenced by Initialize(), and Update().


The documentation for this class was generated from the following files: