#ifndef AUDIO_LOOPER_H #define AUDIO_LOOPER_H #include #include #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 */