47 lines
1.8 KiB
C
47 lines
1.8 KiB
C
#ifndef AUDIO_LOOPER_H
|
|
#define AUDIO_LOOPER_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Effet "repeatButton" de l'ecran Overview : tant que le bouton est maintenu, l'audio
|
|
* (apres la chaine d'effets) est enregistre ; au relachement, l'enregistrement est
|
|
* rejoue plus vite, ce qui rend aussi la voix/le son plus aigu (pas de correction de
|
|
* pitch independante : c'est un simple changement de vitesse de lecture, comme une
|
|
* bande accéléree). */
|
|
#define AUDIO_LOOPER_SAMPLE_RATE_HZ 48000U
|
|
#define AUDIO_LOOPER_MAX_SECONDS 5U
|
|
#define AUDIO_LOOPER_MAX_SAMPLES (AUDIO_LOOPER_SAMPLE_RATE_HZ * AUDIO_LOOPER_MAX_SECONDS)
|
|
|
|
/* Ratio de vitesse de lecture (>1 = plus rapide et plus aigu). 2.0 = une octave au-dessus,
|
|
* duree divisee par deux. */
|
|
#define AUDIO_LOOPER_PLAYBACK_RATIO 2.0f
|
|
|
|
/* A appeler une fois au demarrage, comme AudioEffects_Init(). */
|
|
void AudioLooper_Init(void);
|
|
|
|
/* A appeler depuis la tache IHM sur front montant du bouton (appui). Demarre une
|
|
* nouvelle capture (ecrase la precedente). */
|
|
void AudioLooper_StartRecording(void);
|
|
|
|
/* A appeler depuis la tache IHM sur front descendant du bouton (relachement). Termine
|
|
* la capture et declenche la lecture acceleree de ce qui a ete enregistre. */
|
|
void AudioLooper_StopRecordingAndPlay(void);
|
|
|
|
/* A appeler depuis le chemin audio temps reel, un echantillon a la fois, juste apres
|
|
* la chaine d'effets (AudioEffects_Process). Hors enregistrement/lecture, retourne
|
|
* sample_in inchange. Pendant l'enregistrement, retourne sample_in inchange (l'ecoute
|
|
* live continue normalement pendant la capture). Pendant la lecture, retourne
|
|
* l'echantillon rejoue a la place de sample_in, jusqu'a la fin du buffer enregistre. */
|
|
float AudioLooper_Process(float sample_in);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* AUDIO_LOOPER_H */
|