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 onBuildupProgress(function< void(float progress)> callback) FL_NOEXCEPT
void onBuildupPeak(function< void()> callback) FL_NOEXCEPT
void onTempoUnstable(function< void()> callback) FL_NOEXCEPT
void onKeyChange(function< void(const detector::Key &key)> callback) FL_NOEXCEPT
float getEqDominantFreqHz() FL_NOEXCEPT
Frequency of strongest bin (Hz)
void onBuildup(function< void(const detector::Buildup &)> callback) FL_NOEXCEPT
float getMoodArousal() FL_NOEXCEPT
shared_ptr< detector::Vocal > mVocalDetector
float getVibeVol() FL_NOEXCEPT
void onVibeBassSpike(function< void()> callback) FL_NOEXCEPT
float getMidLevel() FL_NOEXCEPT
shared_ptr< detector::Percussion > getPercussionDetector() FL_NOEXCEPT
static fl::shared_ptr< Processor > createWithAutoInput(fl::shared_ptr< IInput > input) FL_NOEXCEPT
bool isSilent() FL_NOEXCEPT
shared_ptr< detector::DropDetector > getDropDetector() FL_NOEXCEPT
float getVibeBassAtt() FL_NOEXCEPT
shared_ptr< detector::DynamicsAnalyzer > mDynamicsAnalyzer
void onAverageEnergy(function< void(float avgEnergy)> callback) FL_NOEXCEPT
void onSnare(function< void()> callback) FL_NOEXCEPT
shared_ptr< detector::FrequencyBands > getFrequencyBands() FL_NOEXCEPT
void onVocalEnd(function< void()> callback) FL_NOEXCEPT
int getSampleRate() const FL_NOEXCEPT
shared_ptr< detector::BuildupDetector > getBuildupDetector() FL_NOEXCEPT
shared_ptr< detector::TempoAnalyzer > mTempoAnalyzer
u32 getSilenceDuration() FL_NOEXCEPT
void onTransientWithStrength(function< void(float strength)> callback) FL_NOEXCEPT
void onTreble(function< void(float level)> callback) FL_NOEXCEPT
fl::shared_ptr< IInput > mAudioInput
float getNoteVelocity() FL_NOEXCEPT
void onNoteChange(function< void(u8 note, u8 velocity)> callback) FL_NOEXCEPT
void onPitch(function< void(float hz)> callback) FL_NOEXCEPT
float getEqTreble() FL_NOEXCEPT
void onKick(function< void()> callback) FL_NOEXCEPT
void onChordChange(function< void(const detector::Chord &chord)> callback) FL_NOEXCEPT
float getEqBass() FL_NOEXCEPT
void updateFromContext(shared_ptr< Context > externalContext) FL_NOEXCEPT
float getEqVolumeNormFactor() FL_NOEXCEPT
void onMid(function< void(float level)> callback) FL_NOEXCEPT
float getBassRaw() FL_NOEXCEPT
bool isVibeBassSpike() FL_NOEXCEPT
SignalConditioner mSignalConditioner
void onMeterChange(function< void(u8 beatsPerMeasure)> callback) FL_NOEXCEPT
shared_ptr< detector::Downbeat > mDownbeatDetector
shared_ptr< detector::Percussion > mPercussionDetector
shared_ptr< detector::Note > getNoteDetector() FL_NOEXCEPT
void onChordEnd(function< void()> callback) FL_NOEXCEPT
shared_ptr< detector::EqualizerDetector > getEqualizerDetector() FL_NOEXCEPT
bool isVibeTrebSpike() FL_NOEXCEPT
float getEnergy() FL_NOEXCEPT
fl::task::Handle mAutoTask
float getDownbeatConfidence() FL_NOEXCEPT
float getTrebleRaw() FL_NOEXCEPT
shared_ptr< detector::ChordDetector > mChordDetector
float getChordConfidence() FL_NOEXCEPT
void onMoodChange(function< void(const detector::Mood &mood)> callback) FL_NOEXCEPT
void onDropImpact(function< void(float impact)> callback) FL_NOEXCEPT
const NoiseFloorTracker::Stats & getNoiseFloorStats() const FL_NOEXCEPT
shared_ptr< detector::Note > mNoteDetector
void onBass(function< void(float level)> callback) FL_NOEXCEPT
void onSilenceDuration(function< void(u32 durationMs)> callback) FL_NOEXCEPT
void onBackbeat(function< void(u8 beatNumber, float confidence, float strength)> callback) FL_NOEXCEPT
void onEqualizer(function< void(const detector::Equalizer &)> callback) FL_NOEXCEPT
void onTempoWithConfidence(function< void(float bpm, float confidence)> callback) FL_NOEXCEPT
void onBuildupStart(function< void()> callback) FL_NOEXCEPT
void onVocal(function< void(u8 active)> callback) FL_NOEXCEPT
void onDropEvent(function< void(const detector::Drop &)> callback) FL_NOEXCEPT
shared_ptr< detector::Vibe > getVibeDetector() FL_NOEXCEPT
bool isHiHat() FL_NOEXCEPT
shared_ptr< detector::EnergyAnalyzer > getEnergyAnalyzer() FL_NOEXCEPT
float getEqBin(int index) FL_NOEXCEPT
void onPeak(function< void(float peak)> callback) FL_NOEXCEPT
void onSilenceStart(function< void()> callback) FL_NOEXCEPT
void onBeat(function< void()> callback) FL_NOEXCEPT
u8 getCurrentNote() FL_NOEXCEPT
void setNoiseFloorTrackingEnabled(bool enabled) FL_NOEXCEPT
Enable/disable noise floor tracking.
shared_ptr< detector::EqualizerDetector > mEqualizerDetector
shared_ptr< detector::Beat > mBeatDetector
float getNoteConfidence() FL_NOEXCEPT
float getEqZcf() FL_NOEXCEPT
u8 getCurrentBeatNumber() FL_NOEXCEPT
float getBackbeatStrength() FL_NOEXCEPT
shared_ptr< Context > mContext
shared_ptr< detector::Backbeat > mBackbeatDetector
bool getEqIsSilence() FL_NOEXCEPT
void onAttack(function< void(float strength)> callback) FL_NOEXCEPT
bool isCrescendo() FL_NOEXCEPT
void onVibeTrebSpike(function< void()> callback) FL_NOEXCEPT
void onTempo(function< void(float bpm)> callback) FL_NOEXCEPT
shared_ptr< detector::Silence > getSilenceDetector() FL_NOEXCEPT
void onTempoStable(function< void()> callback) FL_NOEXCEPT
void onDiminuendo(function< void()> callback) FL_NOEXCEPT
float getVibeMid() FL_NOEXCEPT
float getBassLevel() FL_NOEXCEPT
float getMoodValence() FL_NOEXCEPT
void onFrequencyBands(function< void(float bass, float mid, float treble)> callback) FL_NOEXCEPT
shared_ptr< detector::KeyDetector > mKeyDetector
float getDropImpact() FL_NOEXCEPT
bool isDiminuendo() FL_NOEXCEPT
float getTrebleLevel() FL_NOEXCEPT
void onDrop(function< void()> callback) FL_NOEXCEPT
void onCrescendo(function< void()> callback) FL_NOEXCEPT
const SignalConditioner::Stats & getSignalConditionerStats() const FL_NOEXCEPT
Access signal conditioning statistics.
void setMicProfile(MicProfile profile) FL_NOEXCEPT
Set microphone correction profile for frequency response compensation.
void setGain(float gain) FL_NOEXCEPT
Set a simple digital gain multiplier applied to each sample before detector.
void onEnergy(function< void(float rms)> callback) FL_NOEXCEPT
float getEqMid() FL_NOEXCEPT
float getEqVolume() FL_NOEXCEPT
friend class AudioManager
shared_ptr< detector::Vibe > mVibeDetector
shared_ptr< detector::Transient > getTransientDetector() FL_NOEXCEPT
MicProfile getMicProfile() const FL_NOEXCEPT
void onCompressionRatio(function< void(float compression)> callback) FL_NOEXCEPT
void onBuildupEnd(function< void()> callback) FL_NOEXCEPT
float getDynamicTrend() FL_NOEXCEPT
shared_ptr< detector::TempoAnalyzer > getTempoAnalyzer() FL_NOEXCEPT
float getKeyConfidence() FL_NOEXCEPT
void setSampleRate(int sampleRate) FL_NOEXCEPT
Set the sample rate for all frequency-based calculations.
shared_ptr< Context > getContext() const FL_NOEXCEPT
shared_ptr< detector::Downbeat > getDownbeatDetector() FL_NOEXCEPT
shared_ptr< detector::BuildupDetector > mBuildupDetector
void onKey(function< void(const detector::Key &key)> callback) FL_NOEXCEPT
bool mNoiseFloorTrackingEnabled
void onVoiced(function< void(u8 voiced)> callback) FL_NOEXCEPT
void onOnset(function< void(float strength)> callback) FL_NOEXCEPT
void onBeatPhase(function< void(float phase)> callback) FL_NOEXCEPT
void onNoteOn(function< void(u8 note, u8 velocity)> callback) FL_NOEXCEPT
shared_ptr< detector::KeyDetector > getKeyDetector() FL_NOEXCEPT
float getTransientStrength() FL_NOEXCEPT
void onChord(function< void(const detector::Chord &chord)> callback) FL_NOEXCEPT
void onPercussion(function< void(detector::PercussionType type)> callback) FL_NOEXCEPT
float getTempoConfidence() FL_NOEXCEPT
float getEqVolumeDb() FL_NOEXCEPT
Volume in approximate dB.
const Sample & getSample() const FL_NOEXCEPT
void configureNoiseFloorTracker(const NoiseFloorTrackerConfig &config) FL_NOEXCEPT
Configure noise floor tracker.
void onSilenceEnd(function< void()> callback) FL_NOEXCEPT
void onKeyEnd(function< void()> callback) FL_NOEXCEPT
float getGain() const FL_NOEXCEPT
float getPitch() FL_NOEXCEPT
shared_ptr< detector::Transient > mTransientDetector
float getMidRaw() FL_NOEXCEPT
void onHiHat(function< void()> callback) FL_NOEXCEPT
void onSilence(function< void(u8 silent)> callback) FL_NOEXCEPT
void onVocalStart(function< void()> callback) FL_NOEXCEPT
float getBPM() FL_NOEXCEPT
void onDynamicTrend(function< void(float trend)> callback) FL_NOEXCEPT
float getMeasurePhase() FL_NOEXCEPT
bool isVibeMidSpike() FL_NOEXCEPT
float getVibeTreb() FL_NOEXCEPT
void onVibeLevels(function< void(const detector::VibeLevels &)> callback) FL_NOEXCEPT
void onVocalConfidence(function< void(float confidence)> callback) FL_NOEXCEPT
float getTempoBPM() FL_NOEXCEPT
void onPitchChange(function< void(float hz)> callback) FL_NOEXCEPT
void onNoteOff(function< void(u8 note)> callback) FL_NOEXCEPT
shared_ptr< detector::Pitch > getPitchDetector() FL_NOEXCEPT
float getEqAutoGain() FL_NOEXCEPT
vector< shared_ptr< Detector > > mActiveDetectors
void setSignalConditioningEnabled(bool enabled) FL_NOEXCEPT
Enable/disable signal conditioning pipeline (DC removal, spike filter, noise gate)
void onTransient(function< void()> callback) FL_NOEXCEPT
shared_ptr< detector::EnergyAnalyzer > mEnergyAnalyzer
shared_ptr< detector::Beat > getBeatDetector() FL_NOEXCEPT
NoiseFloorTracker mNoiseFloorTracker
float getBuildupIntensity() FL_NOEXCEPT
void onMeasurePhase(function< void(float phase)> callback) FL_NOEXCEPT
shared_ptr< detector::Pitch > mPitchDetector
void update(const Sample &sample) FL_NOEXCEPT
float getVibeTrebAtt() FL_NOEXCEPT
void onPitchWithConfidence(function< void(float hz, float confidence)> callback) FL_NOEXCEPT
void configureSignalConditioner(const SignalConditionerConfig &config) FL_NOEXCEPT
Configure signal conditioner.
float getEqDominantMagnitude() FL_NOEXCEPT
Magnitude of strongest bin (0.0-1.0)
void onTom(function< void()> callback) FL_NOEXCEPT
float getBuildupProgress() FL_NOEXCEPT
void onMood(function< void(const detector::Mood &mood)> callback) FL_NOEXCEPT
void onDownbeat(function< void()> callback) FL_NOEXCEPT
bool mSignalConditioningEnabled
shared_ptr< detector::Vocal > getVocalDetector() FL_NOEXCEPT
void onTempoChange(function< void(float bpm, float confidence)> callback) FL_NOEXCEPT
shared_ptr< detector::MoodAnalyzer > getMoodAnalyzer() FL_NOEXCEPT
shared_ptr< detector::FrequencyBands > mFrequencyBands
bool isSnare() FL_NOEXCEPT
float getBeatConfidence() FL_NOEXCEPT
float getVibeBass() FL_NOEXCEPT
bool isKick() FL_NOEXCEPT
shared_ptr< detector::Silence > mSilenceDetector
shared_ptr< detector::ChordDetector > getChordDetector() FL_NOEXCEPT
void registerDetector(shared_ptr< Detector > detector) FL_NOEXCEPT
shared_ptr< detector::DropDetector > mDropDetector
float getBackbeatConfidence() FL_NOEXCEPT
float getPitchConfidence() FL_NOEXCEPT
void onMeasureBeat(function< void(u8 beatNumber)> callback) FL_NOEXCEPT
void onNormalizedEnergy(function< void(float normalizedRms)> callback) FL_NOEXCEPT
float getVibeMidAtt() FL_NOEXCEPT
float getVibeVolAtt() FL_NOEXCEPT
float getPeakLevel() FL_NOEXCEPT
void onValenceArousal(function< void(float valence, float arousal)> callback) FL_NOEXCEPT
shared_ptr< detector::MoodAnalyzer > mMoodAnalyzer
shared_ptr< detector::Backbeat > getBackbeatDetector() FL_NOEXCEPT
void onVibeMidSpike(function< void()> callback) FL_NOEXCEPT
float getVocalConfidence() FL_NOEXCEPT
void configureEqualizer(const detector::EqualizerConfig &config) FL_NOEXCEPT
Configure equalizer detector tuning parameters.
shared_ptr< detector::DynamicsAnalyzer > getDynamicsAnalyzer() FL_NOEXCEPT
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.
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.
Base definition for an LED controller.
Snapshot of self-normalizing MilkDrop-style vibe levels.
Snapshot of equalizer state, passed to onEqualizer callbacks.