Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Mp3 et Winamp... [ Archives Visual Basic / Multimedia ] (fred.toto)

vendredi 26 août 2005 à 18:19:33 | Mp3 et Winamp...

fred.toto

Bonjour,
Je voudrais écrire un bout de code qui récupère le nom et éventuellement prénom de l'artiste et le titre d'un mp3.
Je ne comprends pas comment Winamp fait pour reconnaitre le nom du mp3 et de l'artiste quand ils ne sont pas accessible dans les propriétés du mp3?
Si quelqu'un a une piste ou une id, je l'en remercie d'avance.
Fred.

vendredi 26 août 2005 à 22:01:29 | Re : Mp3 et Winamp...

violent_ken

Membre Club


Violent Ken

Winamp lit tout simplement les tags de tes mp3.
Tiens, un code :


Global ReadOnly As Boolean
Dim FF
Dim txt1 As String * 30
Dim txt2 As String * 4
Global sngG As Byte
Public Enum Mp3GenreConv
    VersTexte = 0
    VersByte = 1
End Enum
Option Explicit

Public Function GetTitre(fichier As String) As String
If CheckTag(fichier, False) = False Then
    MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
    Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 124, txt1
Close FF
GetTitre = Trim$(txt1)
End Function

Public Function GetAuteur(fichier As String) As String
If CheckTag(fichier, False) = False Then
    MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
    Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 94, txt1
Close FF
GetAuteur = Trim$(txt1)
End Function

Public Function GetAlbum(fichier As String) As String
If CheckTag(fichier, False) = False Then
    MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
    Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 64, txt1
Close FF
GetAlbum = Trim$(txt1)
End Function

Public Function GetCommentaire(fichier As String) As String
If CheckTag(fichier, False) = False Then
    MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
    Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 30, txt1
Close FF
GetCommentaire = Trim$(txt1)
End Function

Public Function GetAnnee(fichier As String) As String
If CheckTag(fichier, False) = False Then
    MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
    Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 34, txt2
Close FF
GetAnnee = Trim$(txt2)
End Function

Public Function GetGenre(fichier As String) As String
If CheckTag(fichier, False) = False Then
    MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
    Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier), sngG
Close FF
If sngG > 79 Then sngG = 12
GetGenre = GenreConv(VersTexte, sngG)
End Function

Public Function PutTitre(fichier As String, Titre As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Titre
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 124, txt1
Close FF
End Function

Public Function PutAuteur(fichier As String, Auteur As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Auteur
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 94, txt1
Close FF
End Function

Public Function PutAlbum(fichier As String, Album As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Album
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 64, txt1
Close FF
End Function

Public Function PutCommentaire(fichier As String, Commentaire As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Commentaire
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 30, txt1
Close FF
End Function

Public Function PutAnnee(fichier As String, Annee As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt2 = Annee
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 34, txt2
Close FF
End Function

Public Function PutGenre(fichier As String, Genre As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
sngG = GenreConv(VersByte, Genre)
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier), sngG
Close FF
End Function

Public Function GenreConv(Sens As Mp3GenreConv, Genre As Variant) As Variant
Dim G As Variant
If Sens = VersByte Then
    If VarType(Genre) <> vbString Then
    MsgBox "Le genre doit être du texte !", vbExclamation + vbOKOnly
    GenreConv = -1
    Exit Function
    End If
    Select Case Genre
    Case "Blues"
        G = 0
    Case "Classic Rock"
        G = 1
    Case "Country"
        G = 2
    Case "Dance"
        G = 3
    Case "Disco"
        G = 4
    Case "Funk"
        G = 5
    Case "Grunge"
        G = 6
    Case "Hip-Hop"
        G = 7
    Case "Jazz"
        G = 8
    Case "Metal"
        G = 9
    Case "New Age"
        G = 10
    Case "Oldies"
        G = 11
    Case "Other"
        G = 12
    Case "Pop"
        G = 13
    Case "R&B"
        G = 14
    Case "Rap"
        G = 15
    Case "Reggae"
        G = 16
    Case "Rock"
        G = 17
    Case "Techno"
        G = 18
    Case "Industrial"
        G = 19
    Case "Alternative"
        G = 20
    Case "Ska"
        G = 21
    Case "Death Metal"
        G = 22
    Case "Pranks"
        G = 23
    Case "Soundtrack"
        G = 24
    Case "Euro-Techno"
        G = 25
    Case "Ambient"
        G = 26
    Case "Trip-Hop"
        G = 27
    Case "Vocal"
        G = 28
    Case "Jazz+Funk"
        G = 29
    Case "Fusion"
        G = 30
    Case "Trance"
        G = 31
    Case "Classical"
        G = 32
    Case "Instrumental"
        G = 33
    Case "Acid"
        G = 34
    Case "House"
        G = 35
    Case "Game"
        G = 36
    Case "Sound Clip"
        G = 37
    Case "Gospel"
        G = 38
    Case "Noise"
        G = 39
    Case "AlternRock"
        G = 40
    Case "Bass"
        G = 41
    Case "Soul"
        G = 42
    Case "Punk"
        G = 43
    Case "Space"
        G = 44
    Case "Meditative"
        G = 45
    Case "Instrumental Pop"
        G = 46
    Case "Instrumental Rock"
        G = 47
    Case "Ethnic"
        G = 48
    Case "Gothic"
        G = 49
    Case "Darkwave"
        G = 50
    Case "Techno-Industrial"
        G = 51
    Case "Electronic"
        G = 52
    Case "Pop-Folk"
        G = 53
    Case "Eurodance"
        G = 54
    Case "Dream"
        G = 55
    Case "Southern Rock"
        G = 56
    Case "Comedy"
        G = 57
    Case "Cult"
        G = 58
    Case "Gangsta"
        G = 59
    Case "Top 40"
        G = 60
    Case "Christian Rap"
        G = 61
    Case "Pop/Funk"
        G = 62
    Case "Jungle"
        G = 63
    Case "Native American"
        G = 64
    Case "Cabaret"
        G = 65
    Case "New Wave"
        G = 66
    Case "Psychadelic"
        G = 67
    Case "Rave"
        G = 68
    Case "Showtunes"
        G = 69
    Case "Trailer"
        G = 70
    Case "Lo-Fi"
        G = 71
    Case "Tribal"
        G = 72
    Case "Acid Punk"
        G = 73
    Case "Acid Jazz"
        G = 74
    Case "Polka"
        G = 75
    Case "Retro"
        G = 76
    Case "Musical"
        G = 77
    Case "Rock & Roll"
        G = 78
    Case "Hard Rock"
        G = 79
    End Select
End If
If Sens = VersTexte Then
    If VarType(Genre) <> vbByte Then
    MsgBox "Le genre doit être de type Byte !", vbExclamation + vbOKOnly
    GenreConv = -1
    Exit Function
    End If
    Select Case Genre
    Case 0
        G = "Blues"
    Case 1
        G = "Classic Rock"
    Case 2
        G = "Country"
    Case 3
        G = "Dance"
    Case 4
        G = "Disco"
    Case 5
        G = "Funk"
    Case 6
        G = "Grunge"
    Case 7
        G = "Hip-Hop"
    Case 8
        G = "Jazz"
    Case 9
        G = "Metal"
    Case 10
        G = "New Age"
    Case 11
        G = "Oldies"
    Case 12
        G = "Other"
    Case 13
        G = "Pop"
    Case 14
        G = "R&B"
    Case 15
        G = "Rap"
    Case 16
        G = "Reggae"
    Case 17
        G = "Rock"
    Case 18
        G = "Techno"
    Case 19
        G = "Industrial"
    Case 20
        G = "Alternative"
    Case 21
        G = "Ska"
    Case 22
        G = "Death Metal"
    Case 23
        G = "Pranks"
    Case 24
        G = "Soundtrack"
    Case 25
        G = "Euro-Techno"
    Case 26
        G = "Ambient"
    Case 27
        G = "Trip-Hop"
    Case 28
        G = "Vocal"
    Case 29
        G = "Jazz+Funk"
    Case 30
        G = "Fusion"
    Case 31
        G = "Trance"
    Case 32
        G = "Classical"
    Case 33
        G = "Instrumental"
    Case 34
        G = "Acid"
    Case 35
        G = "House"
    Case 36
        G = "Game"
    Case 37
        G = "Sound Clip"
    Case 38
        G = "Gospel"
    Case 39
        G = "Noise"
    Case 40
        G = "AlternRock"
    Case 41
        G = "Bass"
    Case 42
        G = "Soul"
    Case 43
        G = "Punk"
    Case 44
        G = "Space"
    Case 45
        G = "Meditative"
    Case 46
        G = "Instrumental Pop"
    Case 47
        G = "Instrumental Rock"
    Case 48
        G = "Ethnic"
    Case 49
        G = "Gothic"
    Case 50
        G = "Darkwave"
    Case 51
        G = "Techno-Industrial"
    Case 52
        G = "Electronic"
    Case 53
        G = "Pop-Folk"
    Case 54
        G = "Eurodance"
    Case 55
        G = "Dream"
    Case 56
        G = "Southern Rock"
    Case 57
        G = "Comedy"
    Case 58
        G = "Cult"
    Case 59
        G = "Gangsta"
    Case 60
        G = "Top 40"
    Case 61
        G = "Christian Rap"
    Case 62
        G = "Pop/Funk"
    Case 63
        G = "Jungle"
    Case 64
        G = "Native American"
    Case 65
        G = "Cabaret"
    Case 66
        G = "New Wave"
    Case 67
        G = "Psychadelic"
    Case 68
        G = "Rave"
    Case 69
        G = "Showtunes"
    Case 70
        G = "Trailer"
    Case 71
        G = "Lo-Fi"
    Case 72
        G = "Tribal"
    Case 73
        G = "Acid Punk"
    Case 74
        G = "Acid Jazz"
    Case 75
        G = "Polka"
    Case 76
        G = "Retro"
    Case 77
        G = "Musical"
    Case 78
        G = "Rock & Roll"
    Case 79
        G = "Hard Rock"
    End Select
End If
GenreConv = G
End Function

Private Function CheckTag(fichier As String, Ecrire As Boolean) As Boolean
ReadOnly = False
If (GetAttr(fichier) = 1 Or GetAttr(fichier) = 33) And Ecrire = True Then
    MsgBox "Le fichier est en lecture seule !", vbExclamation + vbOKOnly, "Tag"
    ReadOnly = True
    Exit Function
End If
CheckTag = True
Dim Tag As String * 3
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 127, Tag
If Tag <> "TAG" Then CheckTag = False
If Ecrire = True And CheckTag = False Then
    Dim TagSpace As String * 128
    TagSpace = "TAG"
    Put FF, FileLen(fichier), TagSpace
End If
Close FF
End Function

@+


vendredi 26 août 2005 à 22:12:40 | Re : Mp3 et Winamp...

Tilois

Précise que ton code n'est valide que pour les tag V1



samedi 27 août 2005 à 08:37:12 | Re : Mp3 et Winamp...

fred.toto

Merci beaucoup pour le code, juste pour info, quelle est la différence entre Tag1, Tag2, Tag3 etc.... ?

samedi 27 août 2005 à 10:22:05 | Re : Mp3 et Winamp...

Tilois

Il existe que deux versions de tags en fait. La V1 et la V2. Chacune ayant des variante. La V3 et la V4 ne sont que des variantes de la V2.
Bon globalement, la V1 a des informations qui sont stockées à la fin du fichier MP3 sur les 125 derniers octets. La taille de chaque champ est fixe, et il y a un nombre prédéfini de champs.
Par contre dans la V2, les informations sont stockées en début de fichier. Le nombre de champs n'est pas connus d'avance, et la taille des champs non plus. On trouve bien sur toute ces informations dans l'entete du fichier.
Pour reperer maintenant à quelle version tu as a faire:
-Les fichiers de la V1 contiennent 128 caracteres avant la fin les trois lettre TAG
-Les fichiers de la V2 quand a eux fons que ton fichier MP3 va commencer avec les trois lettres ID3
Les deux versions peuventy bien sur cohabiter dans un fichier MP3, et il va s'en dire que comme la longueur des champs est fixe en V1, alors, elle est bien plus simple à mettre en oeuvre.
Voila, en espérant d'avoir un peu aidé, bonne chance!



jeudi 1 septembre 2005 à 11:34:23 | Re : Mp3 et Winamp...

fred.toto

Merci beaucoup pour toutes ces précisions fortes utiles!



Cette discussion est classé dans : mp3, winamp, artiste


Répondre à ce message

Sujets en rapport avec ce message

MP3...WINAMP.......ahahahahhahahahahahhahaha [ par ophidian ] salut ! j'ai un big prob a cause de boss WINAMPben voila, t'as un Mp3 normal.je voudrais que winamp ne puissent pas le lire. J'ai tout essaye (en sach Lecteur MP3 qui fait pas chier comme winamp !!! [ par hereticus ] Je voudrais faire un prog qui montre dans une filelistbox les fichier MP3 contenu dans le dossier de l'application,jusque la pas de problemes,mais là Son des mp3 [ par machto ] Bonjour, j'essaie differents composants de lecture car j'ai un problème audio que je n'arrive pas à régler pour les mp3:Tous les formats (mid, wav...) Récupérer les infos d'un Mp3 [ par z980x ] SalutJe voudrais une méthode SIMPLE, TRES SIMPLE pour pouvoir lire les infos d'un mp3 (que ce soit l'artiste et tout, ou le bitrate et tout...)Je m'ex envoyer plusieur mp3 dans la playlist de winamp (sans *.m3u!) [ par dolgon ] Bonjour, je galère depuis pas mal de temps... J'ai fais un petit programme qui permet d'ouvrir un fichier mp3 avec winamp. Mais j'aimerai pouvoir l'ou DCC du morceau (.mp3) joué par winamp... problème de .dll [ par YkS ] Bonjour à tous, voilà mon problème : Un ami m'a chargé de lui scripter un petit quelquechose qui lui permettrait en tappant : !sendmp3 robert D'envoye DCC du morceau (.mp3) joué par winamp... problème de .dll [ par YkS ] Bonjour à tous, voilà mon problème : Un ami m'a chargé de lui scripter un petit quelquechose qui lui permettrait en tappant : !sendmp3 robert D'envoye DCC du morceau (.mp3) joué par winamp... problème de .dll [ par YkS ] Bonjour à tous, voilà mon problème : Un ami m'a chargé de lui scripter un petit quelquechose qui lui permettrait en tappant : !sendmp3 robert D'envoye DCC du morceau (.mp3) joué par winamp... problème de .dll [ par YkS ] Bonjour à tous, voilà mon problème : Un ami m'a chargé de lui scripter un petit quelquechose qui lui permettrait en tappant : !sendmp3 robert D'envoye Récupérer l'artiste et le titre du mp3 joué avec Windows Média Player [ par mierkool ] Bonjour,J'aimerai récupérer de façon simple l'artiste et le titre d'un mp3 joué par Windows Média Player.Merci d'avance


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.