AudioPlayer
audio
audio/AudioPlayer.h
audio
tool
beta
tool
beta
Tool: AudioPlayer Lecture de fichiers audio MP3/WAV depuis une carte SD, via une sortie I2S (DAC externe type PCM5102 ou équivalent). Fonctionnalités : /
Méthodes publiques
| Méthode | Description | Paramètres | Retour |
|---|---|---|---|
|
AudioPlayer()
AudioPlayer(uint8_t dinPin = 26,
uint8_t bckPin = 27,
uint8_t lckPin = 28);
|
|||
|
AudioPlayer()
AudioPlayer();
|
|||
|
begin()
begin(float volume = 0.5f);
|
Initialise la sortie I2S avec un volume de départ. / | volume: Volume initial, de 0.0 (muet) à 1.0 (maximum) | truetrue si l'initialisation a réussi / |
|
load()
load(const String &filename);
|
Charge un fichier audio depuis la carte SD (sans démarrer la lecture). / | filename: Chemin du fichier sur la carte SD (.mp3 ou .wav) | truetrue si le fichier a été trouvé et chargé avec succès / |
|
play()
play();
|
Démarre (ou reprend) la lecture du fichier chargé. / | ||
|
pause()
pause();
|
Met en pause la lecture en cours. / | ||
|
toggle()
toggle();
|
Bascule entre lecture et pause selon l'état courant. / | ||
|
stop()
stop();
|
Arrête la lecture et libère les ressources associées. / | ||
|
setVolume()
setVolume(float volume);
|
Modifie le volume de lecture. / | volume: Nouveau volume, de 0.0 (muet) à 1.0 (maximum) / | |
|
loop()
loop();
|
Fait progresser la lecture en cours. A appeler régulièrement (dans loop()) tant qu'un morceau est en lecture. / | ||
|
isPlaying()
isPlaying() const {
|
|||
|
isLoaded()
isLoaded() const {
|
Méthodes privées
_isWav() const {;
endsWith(".WAV");;
_freeResources();;
Variables membres
return _playing;
return _loaded;
uint8_t _dinPin;
uint8_t _bckPin;
uint8_t _lckPin;
Code source
#pragma once
#include <Arduino.h>
#include <SD.h>
#include <AudioOutputI2S.h>
#include <AudioFileSourceSD.h>
#include <AudioGeneratorMP3.h>
#include <AudioGeneratorWAV.h>
namespace crepp::audio {
/*
* =========================
* Tool: AudioPlayer
* -------------------------
* Lecture de fichiers audio MP3/WAV depuis une carte SD, via une sortie I2S
* (DAC externe type PCM5102 ou équivalent).
*
* @badge tool
* @badge beta
*
* Fonctionnalités :
* - Lecture/pause/arrêt d'un fichier MP3 ou WAV
* - Réglage du volume
* - Détection automatique du format (extension .wav vs autre = mp3)
* =========================
*/
class AudioPlayer {
public:
/**
* @brief Construit le lecteur audio en spécifiant les broches I2S utilisées.
* @param dinPin Broche de données I2S (DIN / DOUT vers le DAC)
* @param bckPin Broche d'horloge bit I2S (BCK)
* @param lckPin Broche d'horloge word/LR I2S (LRCK / WS)
*/
AudioPlayer(uint8_t dinPin = 26,
uint8_t bckPin = 27,
uint8_t lckPin = 28);
~AudioPlayer();
/**
* @brief Initialise la sortie I2S avec un volume de départ.
* @param volume Volume initial, de 0.0 (muet) à 1.0 (maximum)
* @return true si l'initialisation a réussi
*/
bool begin(float volume = 0.5f);
/**
* @brief Charge un fichier audio depuis la carte SD (sans démarrer la lecture).
* @param filename Chemin du fichier sur la carte SD (.mp3 ou .wav)
* @return true si le fichier a été trouvé et chargé avec succès
*/
bool load(const String &filename);
/**
* @brief Démarre (ou reprend) la lecture du fichier chargé.
*/
void play();
/**
* @brief Met en pause la lecture en cours.
*/
void pause();
/**
* @brief Bascule entre lecture et pause selon l'état courant.
*/
void toggle();
/**
* @brief Arrête la lecture et libère les ressources associées.
*/
void stop();
/**
* @brief Modifie le volume de lecture.
* @param volume Nouveau volume, de 0.0 (muet) à 1.0 (maximum)
*/
void setVolume(float volume);
/**
* @brief Fait progresser la lecture en cours. A appeler régulièrement
* (dans loop()) tant qu'un morceau est en lecture.
*/
void loop();
/// Indique si un morceau est actuellement en cours de lecture
bool isPlaying() const { return _playing; }
/// Indique si un fichier a été chargé avec succès via load()
bool isLoaded() const { return _loaded; }
private:
uint8_t _dinPin;
uint8_t _bckPin;
uint8_t _lckPin;
float _volume = 0.5f;
bool _playing = false;
bool _loaded = false;
String _filename = "";
AudioOutputI2S *_i2s = nullptr;
AudioFileSourceSD *_source = nullptr;
AudioGeneratorMP3 *_mp3 = nullptr;
AudioGeneratorWAV *_wav = nullptr;
/// Déduit le format du fichier chargé à partir de son extension (.wav vs mp3)
bool _isWav() const {
return _filename.endsWith(".wav") || _filename.endsWith(".WAV");
}
/// Libère les générateurs/source audio actuellement alloués
void _freeResources();
};
} // namespace crepp::audio