Page 1 sur 3

AudioLibPlayer : nouvelle version en page 3

Publié : mar. 26/juil./2005 18:03
par lionel_om
Je crée un nouveau topic, mais il se place dans la contunuité de l'ancien : http://purebasic.hmt-forum.com/viewtopic.php?t=2951. Mais il est plus adapté dans cette zone.

Vu que je n'est pas de travail au travail (paradoxal), je peux avancer comme un fou sur mon lecteur MP3., donc voici la dernière démo : à télécharger ici.

Voici l'état d'avancement :
Différents modes de lecture : ok
Choix de la chason par boutons ou PlayList : ok
Gestion des PlayList : ok
Gestion des skins et changement d'apparence : ok
Sauvegared des paramètres : ok
Gestion de la bibliothèque multimédia : en cours
Choix de certains paramètres : non commencé


Pour ceux qui n'ont pas suivis le topic précédent, ce lecteur se veut simple et léger, mais aussi facilement utilisable et compet.
Il permet donc de gérer les playList et possède déjà 3 skins (chargeable instantanément)

Les paramètres sont gardés : qd vous le relancez, il lance directement la chanson qui était jouée avant sa fermeture (et aussi à la bonne position).

Vous pouvez ajouter à n'importe quel moment des morceaux dans la playList (par CMD ouvrir ou par Glisser/copier), ou les supprimer (Appuie de la touche Suppr)

N'hésitez pas à me faire parvenir vos suggestions ou rapports de Bug.
Merci. @++

Publié : mar. 26/juil./2005 18:27
par Droopy
Tu as 375 Cds ( c'est indiqué dans le fichier lib_mp3.mdb ) 8)

Publié : mar. 26/juil./2005 18:47
par olivier
Il me creer une erreur avec certain mp3.....

Apparement les mêmes MP3 qui me creait une érreur avec mon taggeur....

Si tu accede au tag id3 V2 pour trouver le nom de l'artiste, titre,..., vérifie ton calcul :
le calcul du tag complet n'est pas le même que celui de chaque petit tag.

L'exemple fournie avec codearchive, du tag v2 n'est pas juste.

Si je suis dans le vrai et que tu veux plus de renseignement n'hesite pas.

a+
Stef

Publié : mar. 26/juil./2005 21:34
par lionel_om
@Droopy
375 Mp3 et non pas CD :P , les flics seraient déjà venus chez moi sinon ! :jesors:

@olivier
Oui, c'est possible. Je ferais des tests plus approfondis avec les MP3 sur lesquels j'ai des pb de tags (j'en avait repéré qq uns). Mais c'est quel type d'erreur qui survient ? Un plantage ?

Merci pour vos remarques

Publié : mar. 26/juil./2005 21:51
par KarLKoX
Pour le calcul de la taille du tag, regarde mon code qui le calcul convenablement.

Publié : mar. 26/juil./2005 22:16
par lionel_om
@KarLKoX : C'est déjà ta 'LIB' que j'utilise.
J'y ai rajouté qq fonctions :
* MixTag() : pour créer un tagV2 à partir d'un tag V1 et d'un V2
* ClearTagV1/V2() : pour remplir le tag par des chaines vides
* etc...

Donc c'est pas ma faute !!! :lol:

Publié : mar. 26/juil./2005 22:57
par KarLKoX
Ah ... pourtant le calcul est tout ce qu'il y a de plus correct.
Je verrais plus en profondeur ce code qui date maintenant et voire un peu son comportement en pratique.

Publié : mer. 27/juil./2005 8:21
par lionel_om
La démo : http://luchezl.free.fr/Programmation/PB/ALP_demo.rar te permettra de faire un jeu de test sur tout un dossier et ses sous-dossiers (Répértoire à changer dans le fichier "ALP.pb")

Et tu ne m'a pas fais part de la façon dont se manifestait le bug sur les TAGS.

Merci.
@++

Publié : mer. 27/juil./2005 8:23
par olivier
Apparement non, si j'ai bien compris ton code voila les deux calculs :

Taille du tag total
m_taille = (m_tag\Size[0] << 21) | (m_tag\Size[1] << 14) | (m_tag\Size[2] << 7) | m_tag\Size[3]

Taille des sous tag
m_taille = (frameArray()\Size[0] << 21) | (frameArray()\Size[1] << 14) | (frameArray()\Size[2] << 7) | frameArray()\Size[3]

Hors la taille d'un sous tag n'est pas calculer pareille que la taille total !
Je ne comprend pas les ligne ci dessus alors je vous met mon calcul, et j'en suis sur, vous pourrez apporter les modifications nécessaires.

Taille total (normalement le même résultat que ton calcul :
ID3Size.l = 0
For Byte.l = 3 To 0 Step -1
ID3Size + (ReadByte() << (7*Byte))
Next

Taille d'un sous tag (normalement pas le même résultat)
a.b=ReadByte()
b.b=ReadByte()
c.b=ReadByte()
d.b=ReadByte()

FrameSize= 256*c+d

Voila y'a plus qu'a corriger.... 8)

Publié : mer. 27/juil./2005 8:37
par lionel_om
Voilà, j'ai fais la correction. Ca semble marcher.
Là j'ai pas mes MP3 avec lesquels les tags merdouillaient, donc je testeré plus tard.

Apparement non, si j'ai bien compris ton code voila les deux calculs :
J'ai dis qu'il ne venait pas de moi ...:

Publié : mer. 27/juil./2005 16:48
par KarLKoX
olivier>La taille d'un "sous tag" comme tu les appels (ce sont des trames) se calculent de la même manière que la taille du tag complet car il est lui même composé de trames.
Tu trouveras ici une bibliothèque qui lit les tags, regarde le fichier "lib_id3v2.3.c" ligne 366, le calcul est le même que le miens et je trouve ça logique.
Dans les sources de Lame (encodeur mp3), va dans le répertoire "libmp3lame", fichier id3tag.c ligne 470, c'est la même chose (bien que tu verras des lignes un peu différentes).
Non, perso je suis sur de mon calcul, le tient doit surement provenir d'un code VB où les shifts n'existent pas.
Je vais néanmoins me renseigner d'avantage pour être encore plus affirmatif.

Publié : mer. 27/juil./2005 17:10
par olivier
Si tu veux 8) , mais ..... :wink:

Publié : mer. 27/juil./2005 18:35
par lionel_om
Nouvelle version disponible : ici

Au menu :
Corrections pr les tags
Gestion améliorée des playList et bugs corrigés.

Publié : jeu. 28/juil./2005 12:36
par olivier
Bien corriger les tag mais apparement tu lit en priorité le tag V1, se qu'il me parrait pas judicieux.

Sinon j'ai adoré le fait que la version 4 récupère le répertoire courant utilisé lors du test de la version 3 ! Je suppose que tu enregistre des paramêtres dans la base de registre. J'aimerais en savoir plus....

Pour les plus difficile à convaincre, je met ici un morceau mp3 avec un tag illisible par les mauvais code. J'ai en plus rajouter v2 pour les info du tag v2 pour savoir lequel le logiciel nous sort. ( exemple : manu chao v2)
http://www.tib-net.com/ess_tag2.mp3 morceau (1.2 mo)

a+
Stef

Publié : jeu. 28/juil./2005 22:04
par lionel_om
Pour les tags, je lis les deux : V1 et V2, puis je les mix :

Code : Tout sélectionner

Procedure.s GetBiggerLength(s1$, s2$)

  If Len(s1$) > Len(s2$)
    ProcedureReturn s1$
  Else
    ProcedureReturn s2$
  EndIf
  
EndProcedure


Procedure MixTheTags(*v1.ID3TagV1Tag, *v2.ID3TagV2Tag, *out.ID3TagV2Tag)

  *out\title        = GetBiggerLength(*v1\title,    *v2\title)
  *out\artist       = GetBiggerLength(*v1\artist,   *v2\artist)
  *out\album        = GetBiggerLength(*v1\album,    *v2\album)
  *out\year         = GetBiggerLength(*v1\year,     *v2\year)
  ; -- Les autres lignes ne sont pas nécessaires dans ce prog (-> ptt gain)
  ;*out\genre        = GetBiggerLength(*v1\genre,    *v2\genre)
  ;*out\comments     = GetBiggerLength(*v1\comments, *v2\comments)
  ;*out\composer     = *v2\composer
  ;*out\orig_artist  = *v2\orig_artist
  ;*out\copyright    = *v2\copyright
  ;*out\url          = *v2\url
  ;*out\encoded_by   = *v2\encoded_by
  ;*out\track        = GetBiggerLength(*v1\track, *v2\track)
  
EndProcedure
S'ils son incomplets ou illisibles, je tente de les 'créer' par analyse du nom du MP3.

Pour les dossiers, j'ai pas encore fais de sauvegarde. Le plus intéressant sera de pouvoir garder plusieurs dossiers, et de pouvoir incorporer à la librairie tous les MP3 de ce dossier/sous-d. ainsi lorsque la BD se mettra à jour, elle scannera juste les dossiers contenant des MP3 (gain de temps), mais aussi on pourra tapper le nom de l'artiste/chanson/album et donc effectuer une recherche rapide qui affichera instantanément les musiques correspondantes.

@olivier : je te fais confiance pr les tags :wink: