"MPEG FILE INFO BOX + ID3 TAG EDITOR" (OCX) ET NON, PAS ENCORE UN!!! ;-)

yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 - 11 janv. 2004 à 21:54
firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008 - 16 août 2005 à 17:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19447-mpeg-file-info-box-id3-tag-editor-ocx-et-non-pas-encore-un

firens Messages postés 68 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 août 2008
16 août 2005 à 17:50
Hello,

j'ai testé ce code qui est génial entre nous soit dis... mais j'arrive avec certains fichiers à une erreur de dépassement de capacité au niveau des tags..
et la.. je suis perdu...
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
3 juil. 2004 à 22:39
voici la version Class du YommMp3Tag...:
http://www.vbfrance.com/code.aspx?ID=24252

Desormais je ne toucherai plus a la version ocx...elle restera tel kel..toutes les modifs seront faites sur la verion Class...désolé pour ce ke ça gène mais je ne ve pas avoir 2 sources a modifier a chaque fois...

>>Patate :
tu t'en doutes si j'intègre la gestion des Tag ogg ce sera dans la nouvelle version ;-)

PS: je laisse touefois ce source en ligne pour ceux ki voudrait un ocx tout fait...
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
3 juil. 2004 à 01:37
ok no problem.

J'ai posté ici parce que ca me paraissais plus simple mais c vrai que ca fait fouilli et ca ralentis le chargement de page.

Faut être pris pour être appris, j'le f'rais plus commissaire ;)

En tout cas ravi que cela t'aide au moins un peu ;)

@++
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
3 juil. 2004 à 01:01
a premiere vue ça a l'air pas mal en effet....plus facile ke pour le mp3 en tout cas ;-)

par contre je vais te faire une remarque...c'est pas méchant du tout rassure toi..d'ailleurs c'est plus une faveur ke je vais te demandé plutot k'une remarke ke je vais te faire ...enfin bref...a l'avenir , stp envoi moi ce genre de message en privé...non pas ke je ne veuille pa ke les autres ai l'info...simplement ke c'est pas vraiment sa place...même mieux , en cherchant bien sur vbfrance , tu trouveras mon mail....

enfin merci comme même pour l'info elle est certe tout a fait précieuse....

sur ce je vous laisse tous car une douche s'impose après une bonne rando roller ;-)...et bonne nuit a vous
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
2 juil. 2004 à 23:14
J'ai trouvé un code pour lire (et seuelement lire mais c un debut) les tag OGG. J'ai testé sur kelkes fichier que j'avais en ma poccession et j'ai pas eu de problème :)

modVorbis.bas
=========

Option Explicit

Public Type VorbisTag
Title As String
Artist As String
Album As String
Genre As String
Date As String
Comment As String
TrackNumber As Integer
EncodedUsing As String
Error As String
End Type

Public Function GetTag(Filename) As VorbisTag
Dim phase As Integer
Dim filelength As Long
Dim fileremaining As Long
Dim fileopened As Long
Dim filehandle As Integer
Dim errmsg As String
Dim tmp As Integer
Dim tmp4 As Integer
Dim tmp2 As Integer
Dim tmp3 As Integer
Dim foundatag As Boolean
Dim s$
GetTag.Album = ""
GetTag.Artist = ""
GetTag.Comment = ""
GetTag.Date = ""
GetTag.EncodedUsing = ""
GetTag.Error = ""
GetTag.Genre = ""
GetTag.TrackNumber = 0
GetTag.Title = ""
foundatag = False
s$ = Space$(2048)
'Phase is used so the error handler knows
'what we are up to
On Error GoTo Errhandler
phase = 1
'Phase 1: We're trying to open the file.
filelength = FileLen(Filename)
fileremaining = filelength
filehandle = FreeFile()
Open Filename For Binary Access Read As filehandle

'Phase 2: File open.. so it exists..
phase = 2
Do
Get filehandle, , s$
fileopened = fileopened + Len(s$)
fileremaining = fileremaining - Len(s$)
If fileremaining < 2048 Then
s$ = Space$(fileremaining)
End If
tmp = InStr(1, s$, "vorbis")
tmp2 = InStr(1, s$, "vorbis ")


If tmp <> 0 Then
If tmp2 < tmp Then
If tmp2 <> 0 Then
tmp = tmp2
End If
End If
Else
If tmp2 <> 0 Then
tmp = tmp2
End If
End If
If tmp <> 0 Then Exit Do
If fileremaining = 0 Then Exit Do
Loop
If tmp 0 Then phase 3: GoTo Errhandler
'Ok, we've found the vorbis header.
'Let's get a big chunk of data
Get filehandle, tmp, s$
'Ok, we've got 2kb of data after the header
'lets find the header close
tmp = InStr(7, s$, "vorbis")
If tmp 0 Then phase 4: GoTo Errhandler

'now we can get the required info

tmp = InStr(1, s$, "TITLE=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.Title = Mid$(s$, tmp + 6, tmp2 - (tmp + 6))
End If

tmp = InStr(1, s$, "ARTIST=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.Artist = Mid$(s$, tmp + 7, tmp2 - (tmp + 7))
End If

tmp = InStr(1, s$, "COMMENT=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.Comment = Mid$(s$, tmp + 8, tmp2 - (tmp + 8))
End If

tmp = InStr(1, s$, "ALBUM=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.Album = Mid$(s$, tmp + 6, tmp2 - (tmp + 6))
End If

tmp = InStr(1, s$, "DATE=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.Date = Mid$(s$, tmp + 5, tmp2 - (tmp + 5))
End If

tmp = InStr(1, s$, "TRACKNUMBER=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.TrackNumber = Val(Mid$(s$, tmp + 12, tmp2 - (tmp + 12)))
End If

tmp = InStr(1, s$, "GENRE=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.Genre = Mid$(s$, tmp + 6, tmp2 - (tmp + 6))
End If

tmp = InStr(1, s$, "ENCODED_USING=")
If tmp <> 0 Then
foundatag = True
tmp2 = InStr(tmp, s$, Chr$(0) + Chr$(0) + Chr$(0))
tmp3 = InStr(tmp, s$, Chr$(1) + Chr$(5) + "vorbis")
If tmp3 < tmp2 Then tmp2 = tmp3 + 1
tmp2 = tmp2 - 1
GetTag.EncodedUsing = Mid$(s$, tmp + 14, tmp2 - (tmp + 14))
End If
If foundatag False Then phase 5: GoTo Errhandler
Exit Function
Errhandler:
Close filehandle
If phase 1 Then errmsg "Error opening file! Not found? Already in use, perhaps?"
If phase 2 Then errmsg "Error processing file. Ouchage."
If phase 3 Then errmsg "Vorbis header not found?!"
If phase 4 Then errmsg "Vorbis header not closed!"
If phase 5 Then errmsg "I found a vorbis header, but no tag information seems to exist.."

GetTag.Error = "ERR:" + errmsg
Exit Function
End Function


Form1.frm
=====

Function VorbisReader(Filename As String)
Dim p As VorbisTag
Dim tmp As Integer
If LCase$(Right$(Filename, 3)) <> "ogg" Then
tmp = MsgBox("Le fichier " & Filename & " n'est pas un fichier Vorbis !" & bnewline & "Voulez-vous quand même contninuer ?", 36, "Conflit")
If tmp = 7 Then Exit Function
End If
p = GetTag(Text1.Text)
If p.Error = "" Then
MsgBox "Title: " + p.Title & vbNewLine _
& "Artist: " + p.Artist & vbNewLine _
& "Genre: " + p.Genre & vbNewLine _
& "TrackNo: " + Format$(p.TrackNumber) & vbNewLine _
& "Year: " + p.Date & vbNewLine _
& "Album: " + p.Album & vbNewLine _
& "EncodedUsing: " + p.EncodedUsing
Else
MsgBox "Error: " + Right$(p.Error, Len(p.Error) - 4)
End If

Private Sub Form_Load()
VorbisReader ("C:\Mys Music\Treck 01.ogg")
End Sub


Dis moi ce que tu en pense.

@++
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
2 juil. 2004 à 15:59
Je crois avoir vu des exemples de gestion de tags OGG et VQF y a kelke temps. Pour le WMA, je ne sais pas trop. J'essayerais de remettre la main dessus afin de t'avancer un peu
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
2 juil. 2004 à 15:30
vraissemblablement les videos tout du moins le mpeg (je ne ve pa m'avancer pour le reste..) utilise des tag et des headers par frame...donc vraissemblablement il serait tout a fait possible de faire la même chsoe...

pour ce ki est de l'ajouter a mon projet actuel...désolé mais il faudrait ke je fasse toutes les recherches pour cela...et perso, avant de me lancer sur ça je préfèrerai géré les tags d'autres format audio comme le wma et le ogg ki sont également des formats de fichiers audio compressé courants...
Avoir la possibilité de lire les tags des fichiers mp3 , wma et ogg me semble plus intéressant...mais pour le moment je n'ai pas le temps...

je suis actuellement confronté a un problème avec l'un de mes projet ( le YommMp3Tool en ligne sur vbfrance...) ke je doit restructurer complètement car vb ne pe pa généré le fichier exe bien que l'execution avec compile passe sans problème...c'est d'ailleur pour cela que je passe mon controle de Tag en cls...j'espère ainsi ke vb me fera moins de problèmes...mais bon...

enfin voilà....si toutefois tu décides de bosser sur les tags video et surtout sur les tags wma et ogg n'hésite pas a me tenir au courant...

@+
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
2 juil. 2004 à 14:00
Effectivement je fais partie de ceux qui préfére les class, les controleur utilisateur mais c'est plus par praticité d'utilisation. En effet quand il manque un fichier ou il est dans une autre version pas toujours copatible, ca devient génant.

Je me pose la question suivante est-il possible de faire le meme type de controle mais avec les fichiers vidéo (codec audio et video utilisée, résolution de la vidéo etc) ? Ca pourrait être interessant a integrer et pourquoi pas l'integrer dans ce en mettant un switch Audio (controle actuel) /Vidéo.

Bonne chance pour la suite :)

@+
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
2 juil. 2004 à 13:49
>> PaTaTe
merci à toi pour ton commentaire ;-) Et tu sais koi....normalement une nouvelle version gérée unikement sous forme de class devrait sortir sous peut....et oui certain préfère les OCX ...plus facile a insérer dans un projet...d'autre préfère les Class...plus facile a modifier...enfin voilà....Merci encore...

PS:En effet je continue a bosser dessus dès ke l'on me signal un problème...donc si vous avez le moindre problème : postez ...
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
2 juil. 2004 à 12:02
Tu boose toujours dessus ca fait plaisir à voir :)

trop pro ;)
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
29 juin 2004 à 20:53
j'ai mi a jour pour les accents...je n'utilisais pas la table ascii étendu...
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
25 juin 2004 à 20:29
aussitot di aussitot fait ;-)

voilà les modif ont été faites...mon projet gère désormais aussi bien les tags V2.2 ke V2.3 pour la V2.4 , d'après la msdn , il n'y aurait pas de différence avec la v2.3 mais bon je ne voudrais pas m'avancé donc si quelqu'un à la possibilité de tester mon code avec des tags v2.4, k'il me donne le verdicte ;-)

et merci à ordeus d'avoir soumi le problème

PS:
>>ordeus, pourrais tu etre plus précis sur ton erreur type 13, à savoir, me donner la function ou procédure qui génère l'erreur et la ligne de code en question...merci d'avance...
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
25 juin 2004 à 19:16
>> ordeus
j'ai la réponse a ton problème de tagV2...il s'aggit de tag ID3V2.2 et mon appli gère les tags ID3v2.3 et ID3v2.4....je me pencherai sur la question pour vois si je peux essayé de les gérer sans avoir trop de modif a faire...
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
22 juin 2004 à 20:14
voici la dernière mise à jour avec les différentes remark ke l'on m'a fait...sauf celles de ordeus vu k'il a plu donné signe de vie...lol
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
11 juin 2004 à 09:42
>>ordeus je vais te proposer la même chose qu'a manu94 et qu'a d'autre a savoir......je vais te filé un compte ftp sur lekel tu va pouvoir uploader des fichiers mp3 problèmatik afin ke je les tests....pour iTune...je l'ai jamais utilisé donc je sais pas s'il utilise les standards...tu pe toujours m'envoyer également des fichiers dont les tags ont été renseignés avec iTune afin ke je regarde cela avec mon code!!!!!

@+
ordeus Messages postés 1 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 10 juin 2004
10 juin 2004 à 01:39
Salut Yomm et bravo pour ta source

J'ai cependant deux problèmes avec celle-ci :

1. De même que Totov, la modification ou la suppression d'un tagV2 provoque une erreur 13 'type incompatible'. J'ai eu beau essayer ta réponse, qui avait fini par fonctionner pour Totov, il n'en est rien chez moi.

2. J'ai édité les tags V2 de mes MP3 avec iTunes pour PC, cela à pour effet de les rendre illisibles par ton OCX alors qu'ils apparaissent dans l'application 'anti-lamas'. Quid ?

Merci en tout cas.

Norge
cs_manu94 Messages postés 3 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 5 juillet 2009
29 mai 2004 à 15:52
Bonjour,

J'ai repporté la modification du code, et effectivement, ça fonctionne (j'avais déjà fait la correction avant ta réponse, mais comme ça, tout le monde en profite).

Merci
A+
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
28 mai 2004 à 14:03
manu94:

voici la modif, je suis au boulot donc je peux pas mettre a jour les sources mais la correction à effectuer est la suivante....
dans la classe TypeTagV2
dans la fonction GetTag

après
Get #PointToFic, Compteur + 3, TabByte4
TagTaille = 0
For i = 1 To 4
TagTaille = TagTaille + TabByte4(i) * (256 ^ (4 - i))
Next i

il y a un test qui est le suivant:
'traitement du tag s'il est valide
If TagNom <> String(4, Chr(0)) Then

il faut le modifier par:
If TagNom <> String(4, Chr(0)) And TagTaille > 0 Then

Que cela signifie-t-il?
tout simplement que dans le fichier mp3 (et notament celui que tu m'a envoyé) un tag est référencé mais sans valeur...comme si on indiquait dans le fichier la zone Titre sans y insérer le titre...enfin voilà avec cette modif, il vérifie q'une valeur correspond bien au tag référencé...

si tu rencontres d'autres soucis n'hésite pas ;-)

PS: un de ces 4 je m'occuperai des accents ;-)
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
27 mai 2004 à 15:20
salut manu94

pour les caractères accentué , en effet , je suis au courant ;-) j'avais pas envi de codé tous les caractères ASCII, je me suis plus concentré sur le reste qui je me semble est plutot bien réussi a en lire les commentaires...je pourrais en effet approfondir cette partie... ;-) pour ce qui est de ton fichier mp3 qui fait planté la fonction des tagV2, je pense ke le plus simple va etre de m'envoyé le fichier directement ;-) ke je le teste, sauf si tu ve chercher toi meme le problème et me faire part de l'erreur ;-)
enfin bref, je vais te filer en MP un compte ftp sur lekel tu pourras uploader le fichier mp3 en question, ainsi je pourrai le tester moi-même...envoi le ...je vais essayer de faire la modif au plus vite ...mais pas ce soir c'est sûre vu ke je vais voir Incubus en concert...enfin bref ça tu t'en fou lol...
enfin voilà , dès ke tu as les infos pour la connexion ftp envoi moi ton fichier.....


PS: pour tout le monde...le screenshot que j'ai mis est également valable pour la dernière version de winamp a savoir la 5.03...
cs_manu94 Messages postés 3 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 5 juillet 2009
27 mai 2004 à 13:20
Bonjour, je viens de récupèrer ce composant : c'est exactement ce que je cherchais pour un petit projet. C'est très facile à utiliser, c'est vraiment très bien.
Cependant, j'ai 2 petits problèmes :
- ça a déjà été dit plus haut : dans les tags v1, les caractères accentués sont filtrés, c'est dommage, et ça ne doit pas être très difficile de les autoriser.
- j'ai un fichier MP3 qui fait planter le GetTag de TypeTagV2.cls. En regardant ce qui se passe, à un moment TagTaille 0 alors qu'on est encore dans la boucle, et donc String(TagTaille - 1, " ") avec TagTaille 0 génére une erreur.
@+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 mai 2004 à 19:30
as tu instancié ton objet ?

en clair, s'il s'agit d'un controle, l'as tu bien placé sur ta Form,

s'il s'agit d'un classe, instancies un objet...
stratanic5 Messages postés 2 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 3 mai 2004
3 mai 2004 à 12:48
jai deja tous essayé a ce nivo la...
au faite chez oi c " Menu Projet > composant ou ya aussi référence)
quand je met reférence ocx de yomm il me dis le nom est deja pris etc...

donner moi une démarche simple... je crée un nouveau pojet ensuite..?
Dim VarTags As TagType
MaVar = YommTag.setalltag(fichier, MaVar)
ou
Set MaVar as YommTag.GetAllTags(mon_fichier)

dans une form ? ou un module? rien a faire il en veux pas

pourtant YommMp3Tag est dans la lybrairie ded l'explorateur d objets


il me dis "YommTag variable non definie"
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 mai 2004 à 06:30
Menu Projet > Controles

et tu coches l'OCX de yomm...
stratanic5 Messages postés 2 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 3 mai 2004
3 mai 2004 à 03:24
salut!
comment utiliser l'ocx une fois crée dans autre projet??
il me dis tout le temp "YommTag" non definie...

jaimerai lire par lexemple lenumeros de piste d'un mp3..

merci
Crae Messages postés 15 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 10 septembre 2007
30 avril 2004 à 21:52
dsl de repondre si tard,

En effet c'etait bien une erreur de ma part lors de l'utilisation de Rtrim, cependant j'ai trouvé une autre erreur elle se situe dans la gestion des accents :
lorsque je recupère des tag accentué, l'ocx me renvoi le tag en supprimant les caractères accentuer.
Peut tu m'indiquer comment modifier ce problème le modifier toi meme si tu n'avait pas vu ce "bug"
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
23 mars 2004 à 14:45
Crae , je viens aux nouvelles, as tu réussi à resoudre ton problème? et si oui, il serait intéressant d'expliquer tout cela , pour ceux qui auraient le même souci que toi ;-)
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
9 mars 2004 à 20:02
>>Crae
Tout d'abord, un truc à vérifier:
tu dis et je site : "(...)g ds ma variable des caractère vide qui crée des espaces(...)" je voudrais insister sur les mots "vide" et "crée" !?!

-déjà , qu'entends tu par "vide" ?
Je suppose qu'il doit s'agir d'espace; si tel est le cas un simple trim(TaVariable) et le tour est joué...trim retire les espaces avant et après un chaine...(des variantes : LTrim et RTrim (L=Left et R=Right comme tu l'auras surement deviné ;-) )
Si toutefois il s'agit de caractères Null ( à savoir chr(0) ) , ce que toutefois je doute très fortement, il te suffit de faire un left(Tavariable,instr(TaVariable,chr(0))-1) ,ainsi tu récupères les caratères de gauche jusqu'au premier caractère Null (ce dernier non-inclu); mais encore une fois , je vois difficilement comment tu pourrais avoir des caractère Null!!! ;-)

Enfin, pour le "crée":
-rassure moi, si tu édites tes tags avec un autre logiciel (genre celui des lamas ;-) ) , tu as également les "caractères vides" (comme tu les appelles) .....Parce que si c'est pas le cas, il serait bon que je me replonge dans mon code!!! LOL

Enfin voilà....je pense que de tout ceci tu n'auras à retenir que la fonction Trim.....

Yomm

PS: si tu connaissais pas Trim , tu vas faire un grand bon dans la programmation VB LOL ;-)

Re-PS: Si toutefois tu n'as pas la réponse à ta question, n'hésite pas à reposter ...d'ailleurs j'attends une réponse pour ce qui est du "crée" ;-)
Crae Messages postés 15 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 10 septembre 2007
9 mars 2004 à 17:53
Slt ton ocx est terrible mais g un petit problème
lors de la lecture de tags mp3 g ds ma variable des caractère vide qui crée des espaces comme j'utilise les tags pour renomer mes fichier je me retroupe avec des nom comme "inconnus .mp3". Pourait tu m'indiquer comment les supprimer ou ajouter une fonction a ton ocx pour les supprimer
@++
Crae
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
4 mars 2004 à 20:41
>>totov
tu as tout as fait raison Totov! Mais pourkoi faire simple kan on pe faire compliké lol

sérieux , j'ai pas retesté avec tout mais mp3 mais bon après 2-3 tests ça semble tout à fait correcte et surtout logik.....

merci de ta remark!

PS : si tu as le logiciel très très très connu aukel je faisais référence quelques postes plus haut, tu pourras vérifier ke l'ocx est parfois "meilleur" que lui ;-) en effet le logiciel dont le slogant porte préjudice ;-) au lamas, ne récupère pas correctement l'info de la piste en tagV2 et ne récupère pas du tout le "compositeur" et le "encodé par" du fichier que tu m'as filé à tester.....hey hey hey du coup je suis plutot fièr lol

@+ tout le monde et bon dev
cs_Totov Messages postés 4 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 5 juillet 2004
4 mars 2004 à 16:39
Coucou, c'est encore moi (mais bon, c'est parce que je l'utilise, ce composant !)
J'ai un petit problème avec certains fichiers MP3 (encodés par LAME) : à la lecture des TAGV2, j'ai un message d'erreur. Or après étude, cela se produit quand la taille des tags (adresse 6 à 9 en hexa) contient un octet dont la veleur est supérieure à 127.
Par exemple, dans un fichier, on a 0 - 0 - 2 - 5 pour la taille, et ta routine de calcul nous calcule bien la taille à 261.
Mais j'ai aussi par exemple un fichier où j'ai 0 - 0 - 1 - 128.
Dans ce cas, dans la fonction GetTag du module de classe TypeTagV2, l'instruction :
Buffer = String(7 - Len(Buffer), "0") & Buffer
génère une erreur car à ce moment là la variable Buffer fait 8 de longueur.
J'ai donc deux interrogations et une suggestion :
- Pourquoi pour la taille globale des tags on n'utilise que 7 bits par octet, alors que pour la taille de chaque taille on utilise les 8 ?
- Dans la mesure où on n'utilise que 7 bits par octet, est-il normal d'avoir une valeur supérieure à 127 dans un octet de la taille totale ?
- Pour outrepasser le problème, dans la fonction GetTag, j'ai remplacé le code qui calcule la variable Taille par le code suivant :

Taille = 0
For i = 1 To 4
Taille = Taille + TabByte4(i) * (128 ^ (4 - i))
Next i

fortement inspiré du calcul de TagTaille, quelques lignes plus bas.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
1 mars 2004 à 12:18
>>Totov
en effet j'ai pas fait gaffe pour le SetAllTags...en effet c'est bien:
YommTag.SetAllTags(mon_fichier, MaVar)
qu'il faut appeler...Autant pour moi...
tant mieux si ton problème est résolu ;-)
cs_Totov Messages postés 4 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 5 juillet 2004
1 mars 2004 à 10:35
Là ça marche, et je ne sais pas pourquoi : j'avais bien fait la même chose (enfin, sans doute que non !) : déclaration de la variable en TagType, récupération des infos avec un GetAllTags puis écriture avec un SetAllTags (au passage : la syntaxe que tu me propose ne marche pas, ce qui marche chez moi c'est "YommTag.SetAllTags(mon_fichier, MaVar)").
J'avais même testé avec une variable TagV2, GetTagV2 et SetTagV2.

C'est pas grave, si un jour je comprends où était le problème, je viendrai mettre un message.

Et merci pour la réponse.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
26 févr. 2004 à 17:05
euh il y a peut etre eu confusion sur quelque chose...ta variable, tu l'as bien définie en TagType? voici je pense ce que tu ve faire:
********************************************
dim MaVar as TagType

Set MaVar as YommTag.GetAllTags(mon_fichier)

'ensuite tu manipules...genre affichage des infos
'ex:
TxtTitreV1.Text = MaVar.TagV1.Titre
TxtTitreV2.Text = MaVar.TagV2.Titre


'ensuite tu modifie (genre au bouton OK)
MaVar.TagV1.Titre = TxtTitreV1.Text
MaVar.TagV2.Titre = TxtTitreV2.Text

'enfin tu enregistre
MarVar.SetAllTags
********************************************
en effet si tu appel SetTagV1 ça parait logique que ça mette pas a jour les TagV2 ;-)

test et tiens moi au courant!
cs_Totov Messages postés 4 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 5 juillet 2004
26 févr. 2004 à 16:10
Bravo !

(juste une petite question :
quand je charge les tags depuis un MP3 (par un GetTags), que je fais une modif et que je veux écrire les tags dans le fichier (par un SetTags), ça marche en Tag V1, mais pas en TagV2 (et donc par extension, pas non plus avec un TagType). Il me met une erreur 13 (type incompatible).
Alors j'ai contourné en récupérant dans un objet, en en créant un autre dans lequel je met ce qu'il me faut (y compris les infos de départ), et là il veut bien écrire les tags à partir du nouvel objet.

Ce n'est pas gênant, ça marche, mais ça me tracasse de savoir si c'est normal.

Mais bon, globalement, c'est assez formidable (ça marche, c'est clair, c'est documenté)
cs_Logan Messages postés 99 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 9 juin 2008
14 févr. 2004 à 21:48
franchement, très bonne update

c cool.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
14 févr. 2004 à 21:39
voilà Logan "grace a toi" j'ai fais l'update.. ;-)

elle attendait dans un petit coin de mon PC ;-)

donc qu'est ce qui a changer????

et bien une meilleure recherche des infos TagMpeg, ou plutot une recherche approfondie ...enfin bref appelez ça comme vous voulez...
pour celà, une propriété existe désormais à l'ocx:
Advanced

Par défaut a true , Advanced permet une recherche plus minutieuse (c'est bien comme ça que ça s'écrit?) des infos TagMpeg...
Vous pouvez voir le résultat de cette petite option grace à l'impr écran qui je pense parle de lui-même (même si je vous l'accorde il est assez dégueux lol) présentant l'ocx face un autre tag éditor très , très , très connu lol ("it really whips the lamas ass")

enfin bref pour ceux qui ont déjà dl le source je conseille tout de même cette release ;-)

allez, bon dev a tous

yomm
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
14 févr. 2004 à 21:17
merci a toi Logan..d'ailleur faut ke je release car y a eut deux trois modif de faites...
j'espère ke ça poura te servir a ton projet.
cs_Logan Messages postés 99 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 9 juin 2008
14 févr. 2004 à 16:26
c vrai, cette source est genial

++
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
18 janv. 2004 à 20:13
juste une petite mise à jour de rien du tout enfin preque....

J'ai découvert un bug a cause du calcule du nom de frames...pour ce qui ont déjà le source il y juste la déclaration
Private BitRatetmp As Integer à changer en :
Private BitRatetmp As Long

dans la class TypeTagMpeg voilà c'est pas méchant mais quand ça bug vous avez aucune info TagMpeg....voilà et désolé si certain on eut ce problème......
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
17 janv. 2004 à 23:16
>>urgo
merci a toi pour tes encouragement... ;)

tu m'insites a continuer...aucun problème.....mais pour le moment j'ai stoppé le dev de cet ocx car je n'ai pas de besoin supplémentaire particulier...donc, si tu as des idées elles seront évidemment le bienvenu
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
17 janv. 2004 à 20:28
Belle update ;) Continu :)
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
15 janv. 2004 à 01:00
Nouvelle fonction implémentée:

Public Function GetOneTag(ByVal TagInfo As TagEnum, ByVal Fichier As String, Optional ByVal Version As TagTypeEnum = 0) As Variant


son but?
>>récupéré un valeur précise sans se prendre la tête à déclarer une variable , faire un GetTag puis récupérer la valeur désirée....


sa déclaration
>> elle utilise 3 valeurs:
le tag souhaité
le fichier à lire
et en option le type de tag si besoin
le type de tag par defaut est TagV1 donc si on demande Artiste sans précisé le type de tag on récupérera celui du tagV1, pour récupérer l'Artiste du TagV2 , précisez TagV2....
pour les informations Copyright et Original (commun au tagv2 et au tagmpeg) , le tag par defaut est le tagv2 donc idem, précisez Mpeg si vous souhaitez récupéré la valeur Mpeg


son utilisation?
>>ex:
----
if YommTag.GetOneTag(Valide , Rep & "" & Fichier ) = False then
filecopy fichier , "c:\fichier_sans_tagv1" & Fichier
del Rep & "" & Fichier
end if
----
en gros en parcourant votre dur, vous pouvez aisément trier les fichiers mp3 qui n'ont pas de tagv1.
vous pouvez également trier vos mp3 par genre très facilement de cette manière ou bien encore par bitrate......

enfin voilà , je me suis dit que cela pouvait servir........non?
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
14 janv. 2004 à 12:20
aucun problème... ;-)

PS: si tu veux tu peux prendre mon code pour t'en inspirer ;-) lol

yomm
cs_malibu23 Messages postés 36 Date d'inscription samedi 14 décembre 2002 Statut Membre Dernière intervention 15 avril 2008
14 janv. 2004 à 11:07
C'etais pas un reproche, mais une remarque seulement.

Le prends pas mal.

JM
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
14 janv. 2004 à 10:47
>>malibu23 en effet je me suis inspiré de ton code pour l'idée mais si tu regardes plus en détail, tu véras ke j'ai revu tous tes algos....notament en ce qui concerne les compraraisons de bit etc.... de plus il y a pas mal de chose que j'ai du revoir....donc au final même si la manière semble être la même, Renfield a tout a fait raison en disant k'il n'y a pas 36 facons de le faire....

J'ai rechercher tout ce je j'ai pu trouver pour refaire depuis le début...et au final nos code se ressmble peut etre un peu mais la manière dont j'aborde le problème est tout de même différente....notament, si je ne m'abuse....rien que pour l'écriture des Tagv1 , tu ne testais pas si des tags étais déjà présent ou non ce qui fait que du bouffais 127 bit s'il n'y en avait pas...bref c'est un exmple parmis d'autre...et si je ne m'abuse, j'avais même poster des message et on avait vu ensemble qu'il y avait des soucis dans ton code.....

Pour conclure: j'ai fait des recherches et j'ai pondu ce code...soit ton source faisait parti de mes recherches mais au final j'ai tout recodé...tu as cas voir,j'ai fait tout plein tout plein de tableau pour les valeur des Tags 2 etc.....

pour te montrer ma bonne fois, je mets ci après le lien vers ton source ainsi les gens pourront choisir librement... Et donné leur avis sur la question....Je ne t'en veux pas d'avoir fait cette remarque même si en fait elle n'est pas justifié......et j'espère que c'est réciproque.....D'aileurs, si j'avais jugé m'être vraiment inspiré de ton code je l'aurais signalé comme je l'ai fait avec celui de renfield dans le passé......;-)

Enfin voilà.....
Pour le source de Malibu23:
http://www.vbfrance.com/code.aspx?ID=6667

Bon dev @ tous
Yomm
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 janv. 2004 à 08:46
Tu sais malibu23, il ya pas forcement 36 facons de le faire !

Je n'ai pas comparé les codes sources, mais yomm bosse là dessus depuis pas mal de temps....

Bref, je sais pas s'il s'est inspiré ou non de ton code, reste que le résultat est là ! et quel résultat !

Bonne continuation...
cs_malibu23 Messages postés 36 Date d'inscription samedi 14 décembre 2002 Statut Membre Dernière intervention 15 avril 2008
14 janv. 2004 à 01:19
Salut, je veut pas jouer les troubles fetes, mais je me suis apercu
que tu t'est enormement inspiré de mon code pour la recup et l'ecriture des Tag v1 et V2, tu aurais pu me le dire ca m'aurais fais plasir. Tant pis.

Sinon bo travaille sur le VBRI.

JMP
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
13 janv. 2004 à 21:40
Un p'tit 10 ;)
BOn code, bien commenté
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
12 janv. 2004 à 22:55
de nouvelles fonctions on été implémentées:

-------------------------------------------------------------------------------
La fenetre de TagEditor fait maintenant partie de l'ocx ce qui fait qu'il n'est plus nécessaire de la développer...
pour l'ouvrir avec les tags d'un mp3, rien de plus simple:
YommTag.WinampForm "c:\Mon_Fichier.mp3"
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
la copie d'un tag à l'autre directement....
Attention: ceci est différent des boutons de la fenêtre du TagEditor! En utilisant la fonction,les infos sont écrites automatiquement dans le fichier alors que les boutons ne font que copier les zones de texte entre-elles.
Pour l'utilisation voici les deux fonctions, suivant le sens de la copie:
CopyV1ToV2(byval Fichier as string , optional byval Mode as ReplaceMode = 0) as boolean
CopyV2ToV1(byval Fichier as string , optional byval Mode as ReplaceMode = 0) as boolean

avec:
Public Enum ReplaceMode
[KeepIfNewEmpty] = 1 (permet de concerver les anciennes valeur
si les nouvelles sont vides)
[KeepSpecif] = 2 (permet de converver les infos
supplémentaires des tagsv2)
end Enum

info:
KeepIfNewEmpty & KeepSpecif sont cummulables (cad, vous pouvez passer le paramètre : KeepIfNewEmpty + KeepSpecif)
-------------------------------------------------------------------------------
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
12 janv. 2004 à 18:22
>> Renfield voilà les modifs:

+ j'ai mis plus de 'With' .... 'End With' pour les GetTag ;-)


+ On peut maintenant récupérer la liste des genres dans un tableau en tapant:

*********************************************
* *
* dim TableauGenre *
* *
* YommTag.GetGenreListe TableauGenre *
* *
*********************************************
Biensur pour le nom 'TableauGenre', c'est à titre indicatif,la variable
peut prendre n'importe kel nom ;-)

+ Enfin, le TagEditor de mon source est là uniquement pour pouvoir
tester facilement l'OCx sans avoir à créé un nouveau projet...
L'utilisateur est libre de créer son propre TagEditor...Pourquoi utiliser
la mise en forme de Winamp??? ;-)
Toutefois je peux créer un truc du genre YommTag.WinampForm "c:\mon_fichier.mp3"
et que celà ouvre autamatiquement la fenêtre des TagEditor de Winamp....
Si c'est à un truc comme ça que tu pensais, fais moi signe...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 janv. 2004 à 00:35
Salut yomm

+ Code bien structuré, avec des types, des classes et tout et tout....
+ Code bien commenté, de facon claire
- Tu pourrais davantage utiliser 'With' ..... 'End With'
- Tu aurais pus faire un module de classe pour ton TagEditor
- Il faudrais pouvoir récupérer la liste des genres
+ Code utile
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
11 janv. 2004 à 21:54
n'hésitez pas à commenter ça m'aidera moi mais aussi les autres!!!

et pensez à voter SVP , ça vous coute rien vous êtes déjà sur la page ;-) et moi ça me donne un idée de ce que vous pensez de mon code...
Rejoignez-nous