ajout oscillo
This commit is contained in:
1 parent
5cf2212fc0
commit
f01d3213c0
18 files changed
+741
-12
No files matched your search
@@ -0,0 +1,50 @@
|
||||
#ifndef AUDIO_ANALYSIS_H
|
||||
#define AUDIO_ANALYSIS_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* FFT calculee sur 2048 points : le spectre d'un signal reel est symetrique, donc
|
||||
* seule la moitie (0 a Fe/2) est utile -> exactement 1024 points affichables,
|
||||
* correspondant a la capacite du widget Graph cote IHM. */
|
||||
#define AUDIO_ANALYSIS_SAMPLE_RATE_HZ 48000U
|
||||
#define AUDIO_ANALYSIS_FFT_SIZE 2048U
|
||||
#define AUDIO_ANALYSIS_NUM_BINS (AUDIO_ANALYSIS_FFT_SIZE / 2U) /* 1024 : 0 a Fe/2 */
|
||||
|
||||
/* A appeler une fois au demarrage, comme AudioEffects_Init(). */
|
||||
void AudioAnalysis_Init(void);
|
||||
|
||||
/* A appeler depuis le chemin audio temps reel (ex: push_to_fifo), un echantillon
|
||||
* a la fois. Ne fait rien (cout quasi nul) tant que l'analyse n'est pas activee. */
|
||||
void AudioAnalysis_PushSample(float sample);
|
||||
|
||||
/* A appeler depuis la tache IHM (jamais depuis le contexte audio) : si un bloc de
|
||||
* AUDIO_ANALYSIS_FFT_SIZE echantillons est pret, calcule son spectre (fenetrage +
|
||||
* FFT + magnitude en dB). Retourne true si un nouveau spectre vient d'etre calcule. */
|
||||
bool AudioAnalysis_Update(void);
|
||||
|
||||
/* Spectre courant, AUDIO_ANALYSIS_NUM_BINS valeurs en dB (echelle approximative,
|
||||
* pour affichage uniquement), du bin 0 (continu) au bin NUM_BINS-1 (~Fe/2). Le
|
||||
* pas entre deux bins vaut AUDIO_ANALYSIS_SAMPLE_RATE_HZ / AUDIO_ANALYSIS_FFT_SIZE
|
||||
* (23.4375 Hz ici). Valide apres un AudioAnalysis_Update() ayant retourne true ;
|
||||
* inchange sinon (dernier spectre calcule). */
|
||||
const float *AudioAnalysis_GetMagnitudesDb(void);
|
||||
|
||||
/* Frequence (en Hz) du bin de plus forte magnitude dans le dernier spectre calcule
|
||||
* (frequence dominante / pic). Valide dans les memes conditions que
|
||||
* AudioAnalysis_GetMagnitudesDb(). */
|
||||
float AudioAnalysis_GetPeakFrequencyHz(void);
|
||||
|
||||
/* Active/desactive la capture et le calcul (pilote par le toggle de l'ecran Oscillo). */
|
||||
void AudioAnalysis_SetEnabled(bool enabled);
|
||||
bool AudioAnalysis_IsEnabled(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* AUDIO_ANALYSIS_H */
|
||||
Reference in new issue
Block a user