![]() ![]() |
TP - Lire des tags mp3 |
Présentation. |
Dans une musique au format mp3, on peut stoker les informations suivantes, appelées tags :
Ces informations sont utilisées pour être affichées par les lecteurs de musique : winamp, lecteurs DVD de salon, balladeurs mp3, etc. Ce TP sert à faire un programme qui permet de récupérer et d'afficher les tags d'une musiques.
Etape 1 : préparation du TP. |
Vous devez :
Etape 2 : lecture séquentielle du début du fichier mp3. |
Pour faire votre première lecture de fichier mp3, vous devez (dans la procédure main) :
Si cela fonctionne, les premières valeurs en texte que vous devez voir
sont "ID3". C'est l'en-tête des fichiers mp3.
Etape 3 : lecture séquentielle de la fin du fichier mp3. |
En fait, les tags v1.0 et v1.1 se trouvent dans les 128 derniers octets du fichiers. Vous allez donc modifier le programme précédent de la façon suivante :
Lorsque vous exécutez, vous devez reconnaître facilement les tags mp3 dans la fenêtre d'exécution : nom de la chanson, de l'artiste, etc.
Etape 4 : Affectation de chaque tag à une variable. |
Sachant que (tout ceci est détaillé ici, paragraphe MPEG Audio Tag ID3v1) :
Vous devez modifier votre programme de façon à ce qu'il lise information par information, basé sur l'exemple suivant (permet de lire le tag en début de fichier) :
Tag=""
For i = 1 to 3
Get #f, , val
Tag = Tag & chr(val)
Next i
Dans cet exemple, on ne lit que les 3 premiers caractères, et on les stocke dans la variable Tag (déclarée de type string). Il faut ensuite faire la même chose pour lire les 30 caractères suivants et les mettre dans une variable nommée Title, etc.
Etape 5 : Créer un type structuré. |
Vous allez transformer votre programme en fonction dont le but est de renvoyer ces informations dans une structure appropriée. Le modèle à utiliser est le suivant :
Struct TypeTag
Tag as String
Title as String
Artist as String
Album as String
Year as String
Comment as String
TrackNumber as Byte
Genre as Byte
LibelleGenre as String
End Struct
Function GetTags(NomFichier As String) As TypeTag
... Votre programme ici ...
End Function
Votre programme doit bien sûr remplir les champs GetTags.Tag,
GetTags.Title, GetTags.Artist, etc. La variable GetTags
sera automatiquement renvoyé comme résultat de la fonction. Vous
devez faire une fonction main qui teste le bon fonctionnement de GetTags.
Pour aller plus loin : affectation du libellé du genre. |
Le genre est codé sous forme numérique, de 0 à 255. Celle valeur correspond à un libellé précis. Par exemple :
Vous devez, dans la fonction GetTags, renvoyer le libellé du type (champs GetTags.LibelleGenre). Pour ça vous devez déclarer un tableau global :
Tab_LibelleGenre(0) = "Blues"
Tab_LibelleGenre(1) = "Classic Rock"
Tab_LibelleGenre(2) = "Country"
...
Et ensuite affecter le libellé du genre très simplement :
GetTags.LibelleGenre = Tab_LibelleGenre(GetTags.Genre)
Pour aller plus loin : modification des tags. |
Vous devez maintenant écrire une procédure qui modifie les tags mp3 contenus dans un fichier. Le fonctionnement de celle-ci est très similaire à la fonction GetTags. La principale différence réside dans l'utilisation de l'instruction put (écrire dans le fichier) au lieu de get (lire dans le fichier).
Voici l'en-tête de la fonction que vous devez écrire :
Function UpdateTag(NomFichier As String, NouveauTags As TypeTag)
Quels que soient les anciens tags, UpdateTags les remplace par le contenu du paramètre NouveauTags.
Sébastien PASTORE.
|