Le guide

Le forum de support du shield Tune, décodeurs MP3 DiY pour Arduino

Le guide

Message non lude Laetitia » Ven 25 Juil 2014 19:00

Bibliothèque pour Tune - MP3 decoder shield

Transformez votre Arduino en lecteur MP3 !

    Description
Cette bibliothèque permet de lire les fichiers MP3 contenus sur la carte SD du shield Tune en indiquant simplement leur titre.
Elle facilite aussi le réglage du volume, des basses et des aigus, et la récupération des tags MP3.

    Organisation
Tune.h : Fichier d'en-tête à inclure dans le sketch
Tune.cpp : Définition de l'objet global Tune et des fonctions associées
/examples : Dossier contenant les exemples d'utilisation du shield Tune
- OperationalTest : sketch de mise en route du shield Tune, teste l'écriture/la lecture dans les registres du codec et les sorties audio
- RemoteMP3 : sketch permettant de contrôler son shield Tune avec une télécommande IR
- TagDeuligne : Lecture d'un fichier et affichage des tags MP3 correspondants sur l'écran LCD du shield Deuligne
- TagPrint : Lecture d'un fichier et affichage des tags MP3 sur le moniteur série

UPDATE : à partir de la version 1.1, la librairie est basée sur la librairie SdFat plutôt que sur la librairie SD de l'IDE. Vous pourrez trouver la dernière version de SdFat ici, le cas échéant la version ayant servi au développement est incluse dans la librairie Tune. Il faut la télécharger, l'installer, et l'inclure au début de votre sketch. La librairie Tune inclut toujours les fichiers SPI.h et SPI.cpp, mais dans une version plus récente.

    Utilisation
- Initialisation -

Pour utiliser la bibliothèque Tune, il faut commencer par l'inclure dans le sketch :

Code: Tout sélectionner
#include <Tune.h>
#include <SdFat.h> // à partir de la version 1.1 de la lib

Puis déclarer l'objet Tune à partir duquel on va pouvoir appeler les fonctions nécessaires. Par exemple :

Code: Tout sélectionner
Tune player;

Enfin, avant toute manipulation, il faut initialiser le shield avec la fonction begin() :

Code: Tout sélectionner
void setup()
{
  player.begin();
}

Note : la fonction begin() renvoie un 1 si tout s'est bien passé et un 0 en cas d'échec d'initialisation de la carte SD.

- Paramétrage du codec -

Fiche technique du codec VS1011e pour mieux comprendre sa structure interne.

readSCI(registerAddress)
Lit un registre du codec et retourne sa valeur courante sous la forme d'un entier non signé (unsigned int). Les registres sont désignés par leurs noms ou leurs adresses respectives, voir fiche technique p. 28.

writeSCI(registerAddress, highbyte, lowbyte)
Écrit dans un registre du codec, deux octets en commençant par celui de poids fort. Il est également possible de combiner les deux octets en un int et d'appeler writeSCI(registerAddress, data).

setBit(registerAddress, bitAddress)
Met un bit à 1 dans un registre du codec. Se référer à Tune.h et à la documentation technique pour la définition des registres et des bits.

clearBit(registerAddress, bitAddress)
Met un bit à 0 dans un registre du codec. Se référer à Tune.h et à la documentation technique pour la définition des registres et des bits.

writeSDI(data)
Envoie des données au codec via son interface SDI.

checkRegisters()
Lit l'intégralité des registres du codec et affiche leurs valeurs courantes sur moniteur série. Nécessite l'appel de Serial.begin() avant utilisation.

sineTest(freq)
Générateur de sinusoïdes : génère une note à une fréquence donnée pendant 2 secondes (@ 1 KHz sans argument, sinon se référer à Tune.h pour les autres constantes disponibles). Permet de tester le bon fonctionnement des sorties audio, dont le volume est réglable séparément, voir ci-dessous.

- Lecture de fichiers -

setVolume(leftChannel, rightChannel)
Règle le volume pour les sorties audio gauche et droite séparément, de 0 à 254.
UPDATE : depuis la version 1.2, lors de l'initialisation du shield le volume est réglé automatiquement à un volume raisonnable pour les tympans ;)

setVolume(volume)
Règle le volume en attribuant la même valeur (0 à 254) aux deux sorties audio.

play(trackName)
Joue un fichier MP3 dont trackName est le nom, qui ne doit pas excéder 8 caractères + l'extension .mp3, par exemple :

Code: Tout sélectionner
player.play("Chanson1.mp3"); // 8 caractères
player.play("Tune.mp3"); // 4 caractères, valide aussi

playTrack(trackNo)
Joue un fichier MP3 dont le nom est "trackXXX.mp3", où XXX est un nombre compris entre 0 et 999. Vous n'avez qu'à renseigner le numéro de la piste :

Code: Tout sélectionner
player.playTrack(5); // joue le morceau track005.mp3

playPlaylist(start, end)
Joue une liste de fichiers MP3 dont le nom est "trackXXX.mp3", comme ci-dessus. Vous n'avez qu'à renseigner le numéro de début et de fin :

Code: Tout sélectionner
player.playPlaylist(0,5); // joue les morceaux track000.mp3 à track005.mp3

Attention, la playlist ne s'arrêtera qu'une fois tous les morceaux sélectionnés joués.

playNext()
Joue le morceau suivant disponible sur la carte SD.

playPrev()
Joue le morceau précédent disponible sur la carte SD.

setBass(bassAmp, bassFreq)
Amplifie les basses : les fréquences en-dessous de bassFreq (2 à 15, par pas de 10 Hz) seront amplifiées de bassAmp (0 à 15 dB).

Code: Tout sélectionner
player.setBass(10, 8); // amplifie de 8 dB les basses en-dessous de 100 Hz

setTreble(trebAmp, trebFreq)
Amplifie/atténue les aigus : les fréquences au-dessus de trebFreq (0 à 15 KHz) seront amplifiées de trebAmp (-8 à 7, par pas de 1.5 dB).

Code: Tout sélectionner
player.setTreble(3, 12); // amplifie de 4.5 dB les aigus au-dessus de 12 KHz

pauseMusic()
Met en pause la lecture de la musique.

resumeMusic()
Reprend la lecture en cours.

stopTrack()
Arrête la lecture en cours, ferme le fichier et permet de passer à un autre. Renvoie 1 en cas de succès et 0 si le fichier n'a pas pu être fermé.

- Récupération des tags MP3 -

NOTE : suivant la version des tags MP3 la lecture de ceux-ci peut être plus ou moins longue. Sur les tags ID3v2 (voir ici pour plus d'infos sur les tags MP3), le temps de recherche peut délayer la mise en route du morceau. Vous êtes prévenus !

getTrackInfo(frame, infobuffer)
Récupère un tag MP3 sur la piste en cours de lecture, en précisant le champ souhaité (TITLE, ARTIST ou ALBUM) et un tableau (char) où stocker le résultat de la lecture. Voir les exemples "TagPrint" et "TagDeuligne" inclus dans le dossier /examples pour un affichage sur moniteur série, ou sur shield Deuligne, respectivement.

getTrackTitle(infobuffer)
Récupère le tag "titre" de la piste en cours de lecture, en précisant un tableau où stocker le résultat de la lecture.

getTrackArtist(infobuffer)
Récupère le tag "artiste" de la piste en cours de lecture, en précisant un tableau où stocker le résultat de la lecture.

getTrackAlbum(infobuffer)
Récupère le tag "album" de la piste en cours de lecture, en précisant un tableau où stocker le résultat de la lecture.
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Retourner vers Tune

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron