3#ifndef FL_AUDIO_AUDIO_PROCESSOR_H
4#define FL_AUDIO_AUDIO_PROCESSOR_H
fl::UIAudio audio("Audio Input")
float rms(fl::span< const int16_t > data)
NoiseFloorTracker maintains an adaptive estimate of the background noise floor for audio signals,...
Get current statistics (for monitoring/debugging)
void update(const Sample &sample) FL_NO_EXCEPT
void onVoiced(function< void(u8 voiced)> callback) FL_NO_EXCEPT
float getEqVolumeNormFactor() FL_NO_EXCEPT
float getEqVolumeDb() FL_NO_EXCEPT
Volume in approximate dB.
void onNoteChange(function< void(u8 note, u8 velocity)> callback) FL_NO_EXCEPT
void onBuildupProgress(function< void(float progress)> callback) FL_NO_EXCEPT
void onKick(function< void()> callback) FL_NO_EXCEPT
float getBPM() FL_NO_EXCEPT
void onChordChange(function< void(const detector::Chord &chord)> callback) FL_NO_EXCEPT
void onBuildupEnd(function< void()> callback) FL_NO_EXCEPT
float getChordConfidence() FL_NO_EXCEPT
void onAverageEnergy(function< void(float avgEnergy)> callback) FL_NO_EXCEPT
shared_ptr< detector::Vocal > mVocalDetector
void onBeat(function< void()> callback) FL_NO_EXCEPT
void onTempoStable(function< void()> callback) FL_NO_EXCEPT
float getVocalConfidence() FL_NO_EXCEPT
shared_ptr< detector::Vocal > getVocalDetector() FL_NO_EXCEPT
shared_ptr< detector::EnergyAnalyzer > getEnergyAnalyzer() FL_NO_EXCEPT
~Processor() FL_NO_EXCEPT
float getEqAutoGain() FL_NO_EXCEPT
float getPitch() FL_NO_EXCEPT
shared_ptr< detector::Transient > getTransientDetector() FL_NO_EXCEPT
shared_ptr< detector::DynamicsAnalyzer > mDynamicsAnalyzer
float getEqDominantMagnitude() FL_NO_EXCEPT
Magnitude of strongest bin (0.0-1.0)
void registerDetector(shared_ptr< Detector > detector) FL_NO_EXCEPT
float getEqBass() FL_NO_EXCEPT
void onEqualizer(function< void(const detector::Equalizer &)> callback) FL_NO_EXCEPT
shared_ptr< detector::TempoAnalyzer > mTempoAnalyzer
bool getEqIsSilence() FL_NO_EXCEPT
void onTempoWithConfidence(function< void(float bpm, float confidence)> callback) FL_NO_EXCEPT
shared_ptr< detector::Backbeat > getBackbeatDetector() FL_NO_EXCEPT
float getMoodArousal() FL_NO_EXCEPT
void configureNoiseFloorTracker(const NoiseFloorTrackerConfig &config) FL_NO_EXCEPT
Configure noise floor tracker.
void onVibeMidSpike(function< void()> callback) FL_NO_EXCEPT
float getTrebleRaw() FL_NO_EXCEPT
void onBeatPhase(function< void(float phase)> callback) FL_NO_EXCEPT
float getVibeMidAtt() FL_NO_EXCEPT
void onMood(function< void(const detector::Mood &mood)> callback) FL_NO_EXCEPT
void configureEqualizer(const detector::EqualizerConfig &config) FL_NO_EXCEPT
Configure equalizer detector tuning parameters.
shared_ptr< detector::DropDetector > getDropDetector() FL_NO_EXCEPT
fl::shared_ptr< IInput > mAudioInput
void onEnergy(function< void(float rms)> callback) FL_NO_EXCEPT
float getPitchConfidence() FL_NO_EXCEPT
void onTransientWithStrength(function< void(float strength)> callback) FL_NO_EXCEPT
void onDynamicTrend(function< void(float trend)> callback) FL_NO_EXCEPT
void onBackbeat(function< void(u8 beatNumber, float confidence, float strength)> callback) FL_NO_EXCEPT
void onTempo(function< void(float bpm)> callback) FL_NO_EXCEPT
float getNoteVelocity() FL_NO_EXCEPT
void onOnset(function< void(float strength)> callback) FL_NO_EXCEPT
void onDropImpact(function< void(float impact)> callback) FL_NO_EXCEPT
float getMidLevel() FL_NO_EXCEPT
void onTreble(function< void(float level)> callback) FL_NO_EXCEPT
float getVibeBass() FL_NO_EXCEPT
SignalConditioner mSignalConditioner
float getTempoBPM() FL_NO_EXCEPT
void onMid(function< void(float level)> callback) FL_NO_EXCEPT
void setNoiseFloorTrackingEnabled(bool enabled) FL_NO_EXCEPT
Enable/disable noise floor tracking.
shared_ptr< detector::Downbeat > mDownbeatDetector
shared_ptr< detector::Percussion > mPercussionDetector
void onCompressionRatio(function< void(float compression)> callback) FL_NO_EXCEPT
float getEqDominantFreqHz() FL_NO_EXCEPT
Frequency of strongest bin (Hz)
void onTempoUnstable(function< void()> callback) FL_NO_EXCEPT
fl::task::Handle mAutoTask
float getDropImpact() FL_NO_EXCEPT
float getDownbeatConfidence() FL_NO_EXCEPT
shared_ptr< detector::ChordDetector > mChordDetector
float getDynamicTrend() FL_NO_EXCEPT
bool isSnare() FL_NO_EXCEPT
void onVocalStart(function< void()> callback) FL_NO_EXCEPT
void onAttack(function< void(float strength)> callback) FL_NO_EXCEPT
shared_ptr< detector::Note > mNoteDetector
float getVibeTreb() FL_NO_EXCEPT
void onNoteOff(function< void(u8 note)> callback) FL_NO_EXCEPT
void onNormalizedEnergy(function< void(float normalizedRms)> callback) FL_NO_EXCEPT
float getGain() const FL_NO_EXCEPT
void onTempoChange(function< void(float bpm, float confidence)> callback) FL_NO_EXCEPT
void onMeasureBeat(function< void(u8 beatNumber)> callback) FL_NO_EXCEPT
void setGain(float gain) FL_NO_EXCEPT
Set a simple digital gain multiplier applied to each sample before detector.
shared_ptr< detector::FrequencyBands > getFrequencyBands() FL_NO_EXCEPT
float getBassRaw() FL_NO_EXCEPT
void configureSignalConditioner(const SignalConditionerConfig &config) FL_NO_EXCEPT
Configure signal conditioner.
float getTrebleLevel() FL_NO_EXCEPT
shared_ptr< detector::EqualizerDetector > mEqualizerDetector
shared_ptr< detector::Beat > mBeatDetector
bool isDiminuendo() FL_NO_EXCEPT
void onSilence(function< void(u8 silent)> callback) FL_NO_EXCEPT
float getMeasurePhase() FL_NO_EXCEPT
float getTransientStrength() FL_NO_EXCEPT
shared_ptr< Context > mContext
float getEqVolume() FL_NO_EXCEPT
shared_ptr< detector::Backbeat > mBackbeatDetector
shared_ptr< detector::EqualizerDetector > getEqualizerDetector() FL_NO_EXCEPT
float getVibeVol() FL_NO_EXCEPT
void onDownbeat(function< void()> callback) FL_NO_EXCEPT
void onTransient(function< void()> callback) FL_NO_EXCEPT
float getNoteConfidence() FL_NO_EXCEPT
const NoiseFloorTracker::Stats & getNoiseFloorStats() const FL_NO_EXCEPT
shared_ptr< detector::Percussion > getPercussionDetector() FL_NO_EXCEPT
void onVibeBassSpike(function< void()> callback) FL_NO_EXCEPT
shared_ptr< detector::Beat > getBeatDetector() FL_NO_EXCEPT
void onBuildupStart(function< void()> callback) FL_NO_EXCEPT
void setSampleRate(int sampleRate) FL_NO_EXCEPT
Set the sample rate for all frequency-based calculations.
shared_ptr< detector::KeyDetector > mKeyDetector
float getBassLevel() FL_NO_EXCEPT
shared_ptr< detector::Downbeat > getDownbeatDetector() FL_NO_EXCEPT
void onMoodChange(function< void(const detector::Mood &mood)> callback) FL_NO_EXCEPT
bool isVibeMidSpike() FL_NO_EXCEPT
void onHiHat(function< void()> callback) FL_NO_EXCEPT
void onMeterChange(function< void(u8 beatsPerMeasure)> callback) FL_NO_EXCEPT
shared_ptr< detector::Silence > getSilenceDetector() FL_NO_EXCEPT
const SignalConditioner::Stats & getSignalConditionerStats() const FL_NO_EXCEPT
Access signal conditioning statistics.
shared_ptr< detector::Note > getNoteDetector() FL_NO_EXCEPT
friend class AudioManager
shared_ptr< detector::Vibe > mVibeDetector
bool isVibeBassSpike() FL_NO_EXCEPT
void onFrequencyBands(function< void(float bass, float mid, float treble)> callback) FL_NO_EXCEPT
bool isKick() FL_NO_EXCEPT
float getKeyConfidence() FL_NO_EXCEPT
const Sample & getSample() const FL_NO_EXCEPT
float getVibeVolAtt() FL_NO_EXCEPT
float getBackbeatConfidence() FL_NO_EXCEPT
shared_ptr< detector::TempoAnalyzer > getTempoAnalyzer() FL_NO_EXCEPT
shared_ptr< detector::MoodAnalyzer > getMoodAnalyzer() FL_NO_EXCEPT
shared_ptr< detector::BuildupDetector > mBuildupDetector
void onPitchWithConfidence(function< void(float hz, float confidence)> callback) FL_NO_EXCEPT
float getMidRaw() FL_NO_EXCEPT
float getEqMid() FL_NO_EXCEPT
void setSignalConditioningEnabled(bool enabled) FL_NO_EXCEPT
Enable/disable signal conditioning pipeline (DC removal, spike filter, noise gate)
void onPitchChange(function< void(float hz)> callback) FL_NO_EXCEPT
bool mNoiseFloorTrackingEnabled
shared_ptr< detector::DynamicsAnalyzer > getDynamicsAnalyzer() FL_NO_EXCEPT
float getPeakLevel() FL_NO_EXCEPT
void onPitch(function< void(float hz)> callback) FL_NO_EXCEPT
float getVibeMid() FL_NO_EXCEPT
void onMeasurePhase(function< void(float phase)> callback) FL_NO_EXCEPT
void reset() FL_NO_EXCEPT
void onBuildup(function< void(const detector::Buildup &)> callback) FL_NO_EXCEPT
shared_ptr< detector::Vibe > getVibeDetector() FL_NO_EXCEPT
u32 getSilenceDuration() FL_NO_EXCEPT
float getEqZcf() FL_NO_EXCEPT
u8 getCurrentBeatNumber() FL_NO_EXCEPT
shared_ptr< detector::Transient > mTransientDetector
bool isCrescendo() FL_NO_EXCEPT
float getTempoConfidence() FL_NO_EXCEPT
void updateFromContext(shared_ptr< Context > externalContext) FL_NO_EXCEPT
void onChordEnd(function< void()> callback) FL_NO_EXCEPT
void onVibeLevels(function< void(const detector::VibeLevels &)> callback) FL_NO_EXCEPT
void onBass(function< void(float level)> callback) FL_NO_EXCEPT
float getEqBin(int index) FL_NO_EXCEPT
float getEqTreble() FL_NO_EXCEPT
void onCrescendo(function< void()> callback) FL_NO_EXCEPT
float getEnergy() FL_NO_EXCEPT
shared_ptr< detector::ChordDetector > getChordDetector() FL_NO_EXCEPT
vector< shared_ptr< Detector > > mActiveDetectors
shared_ptr< detector::EnergyAnalyzer > mEnergyAnalyzer
void onPercussion(function< void(detector::PercussionType type)> callback) FL_NO_EXCEPT
void onVocal(function< void(u8 active)> callback) FL_NO_EXCEPT
static fl::shared_ptr< Processor > createWithAutoInput(fl::shared_ptr< IInput > input) FL_NO_EXCEPT
void onKeyEnd(function< void()> callback) FL_NO_EXCEPT
float getBuildupProgress() FL_NO_EXCEPT
void setMicProfile(MicProfile profile) FL_NO_EXCEPT
Set microphone correction profile for frequency response compensation.
void onDropEvent(function< void(const detector::Drop &)> callback) FL_NO_EXCEPT
void onPeak(function< void(float peak)> callback) FL_NO_EXCEPT
shared_ptr< detector::KeyDetector > getKeyDetector() FL_NO_EXCEPT
NoiseFloorTracker mNoiseFloorTracker
MicProfile getMicProfile() const FL_NO_EXCEPT
shared_ptr< detector::Pitch > mPitchDetector
void onValenceArousal(function< void(float valence, float arousal)> callback) FL_NO_EXCEPT
void onSilenceDuration(function< void(u32 durationMs)> callback) FL_NO_EXCEPT
void onSnare(function< void()> callback) FL_NO_EXCEPT
shared_ptr< detector::Pitch > getPitchDetector() FL_NO_EXCEPT
float getVibeBassAtt() FL_NO_EXCEPT
void onTom(function< void()> callback) FL_NO_EXCEPT
bool mSignalConditioningEnabled
void onKeyChange(function< void(const detector::Key &key)> callback) FL_NO_EXCEPT
void onVocalEnd(function< void()> callback) FL_NO_EXCEPT
shared_ptr< detector::FrequencyBands > mFrequencyBands
void onDrop(function< void()> callback) FL_NO_EXCEPT
void onDiminuendo(function< void()> callback) FL_NO_EXCEPT
float getVibeTrebAtt() FL_NO_EXCEPT
shared_ptr< detector::BuildupDetector > getBuildupDetector() FL_NO_EXCEPT
shared_ptr< detector::Silence > mSilenceDetector
void onVibeTrebSpike(function< void()> callback) FL_NO_EXCEPT
shared_ptr< detector::DropDetector > mDropDetector
void onChord(function< void(const detector::Chord &chord)> callback) FL_NO_EXCEPT
int getSampleRate() const FL_NO_EXCEPT
bool isSilent() FL_NO_EXCEPT
void onKey(function< void(const detector::Key &key)> callback) FL_NO_EXCEPT
bool isTom() FL_NO_EXCEPT
float getBackbeatStrength() FL_NO_EXCEPT
shared_ptr< Context > getContext() const FL_NO_EXCEPT
float getBeatConfidence() FL_NO_EXCEPT
void onSilenceStart(function< void()> callback) FL_NO_EXCEPT
void onBuildupPeak(function< void()> callback) FL_NO_EXCEPT
bool isVibeTrebSpike() FL_NO_EXCEPT
void onSilenceEnd(function< void()> callback) FL_NO_EXCEPT
float getMoodValence() FL_NO_EXCEPT
shared_ptr< detector::MoodAnalyzer > mMoodAnalyzer
void onNoteOn(function< void(u8 note, u8 velocity)> callback) FL_NO_EXCEPT
bool isHiHat() FL_NO_EXCEPT
float getBuildupIntensity() FL_NO_EXCEPT
void onVocalConfidence(function< void(float confidence)> callback) FL_NO_EXCEPT
u8 getCurrentNote() FL_NO_EXCEPT
SignalConditioner performs low-level audio preprocessing to clean raw PCM samples before FFT analysis...
Get current statistics (for debugging/monitoring)
Detects backbeats (beats 2 and 4 in 4/4 time) in music.
Detects downbeats (first beat of each measure) in music.
WLED-style equalizer detector that provides a 16-bin frequency spectrum normalized to 0....
Note - Musical note detection with MIDI output.
Pitch - Continuous pitch tracking using autocorrelation.
Transient - Detects sharp attack transients in audio.
Configuration for the equalizer detector.
MicProfile
Microphone frequency response correction profile.
@ None
No correction (flat response assumed)
Configuration for signal conditioning pipeline.
Configuration for noise floor tracking.
u8 u8 fract8 blur_amount FL_NO_EXCEPT
CRGB sample(const CRGB *grid, const XYMap &xyMap, float x, float y, SampleMode mode) FL_NO_EXCEPT
Sample a pixel from a 2D CRGB grid at floating-point coordinates.
Base definition for an LED controller.
Snapshot of self-normalizing MilkDrop-style vibe levels.
Snapshot of equalizer state, passed to onEqualizer callbacks.