IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

FMOD - Problème de tag


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut FMOD - Problème de tag
    Bonjour !

    Je travaille sur un logiciel de lecture de shoutcast depuis un petit moment et j'ai voulu l'evoluer. J'ai donc rajouté une fonctionnalité pour avoir une librairie des fichiers de musiques présent sur l'ordinateur pour pouvoir les lire.

    Jusque là j'ai pu me débrouiller pour avancer tout en m'aidant de ce forum.

    Maintenant, je souhaite récuperer les tags. En faite, j'utilise une boite de dialogue pour recherche un dossier et je le parcourt. J'ai fais mes test et je récupère bien les fichiers, les mettre dans ma liste et les lires mais j'ai un soucis concernant les tags.

    Je n'arrive pas à les récuperer ou partiellement. Bizarrement lorsque je emt un point d'arret et que j'attend un peu pour avancer les tags apparaissent, sinon j'ai rien (il me renvois null).

    Voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
            public string recuperation_tag()
            {
                string SArtiste = "";
                string STitre = "";
                string message = "";
                FMOD.TAG TagArtiste = new FMOD.TAG(), TagTitre = new FMOD.TAG();
                this.son.getTag("ARTIST", 0, ref TagArtiste);
                SArtiste = Marshal.PtrToStringAnsi(TagArtiste.data);
                this.son.getTag("TITLE", 0, ref TagTitre);
                STitre = Marshal.PtrToStringAnsi(TagTitre.data);
     
                if ((SArtiste != null) || (STitre != null))
                {
                    if ((SArtiste != null) && (STitre != null))
                    {
                        message = SArtiste + " - " + STitre;
                    }
                    else
                    {
                        message = SArtiste + STitre;
                    }
                }
     
                else
                {
                    message = "Informations indisponibles";
                }
                return message;
            }
    Lorsque je suis en mode radio( shoutcast) je récupère bien les tags mais pas sur mes fichiers locaux. Le fichier de test est bien taggué (depuis les propriété du fichier sous windows je vois bien les tags, voir je les aient rajoutés).

    Quelqu'un serais pourquoi j'ai ce bug? comment faut t'il proceder?

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    avec FMOD, je ne sais pas (surement sur la FAQ FMOD)

    Sinon, tu as du code sur www.Codeproject.com qui t'explique comment lire
    des tag (mp3 entre autre) d'un fichier audio

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FMOD.TAG TagArtiste = new FMOD.TAG(), TagTitre = new FMOD.TAG();
    Ca compile ca déjà ?

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Oui, ça compile, même si je t'accorde que c'est tellement laid qu'on dirait du VB

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    Oui ça compile et c'est laid je vous l'accorde

    En meme temps lorsqu'on fais du forcing de méthode car rien ne fonctionne et qu'on est au milie de la nuit, je t'avoue qu'on sais plus trop comment coder et on se prend moins la tête avec le style

    Sinon je regarde sur codeproject là et je trouve rien concernant les tags avec fmod.

  6. #6
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    Finalement et m'aidant de l'exmple officiel FMOD j'arrive à ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
        class gestionTag
        {
            private FMOD.System system = null;
            private FMOD.Sound sound = null;
     
            private FMOD.TAG tag = new FMOD.TAG();
            private int numtags = 0;
            private int numtagsupdated = 0;
     
            public gestionTag(string song)
            {
                FMOD.Factory.System_Create(ref system);
                system.init(100, FMOD.INITFLAG.NORMAL, (IntPtr)null);
                system.createSound(song, (FMOD.MODE.SOFTWARE | FMOD.MODE._2D | FMOD.MODE.CREATESTREAM | FMOD.MODE.OPENONLY), ref sound);
                sound.getNumTags(ref numtags, ref numtagsupdated);
            }
     
            public string getArtist()
            {
                string artist = "";
     
                sound.getTag("ARTIST", 0, ref tag);
                artist = Marshal.PtrToStringAnsi(tag.data);
                return artist;
            }
        }
    Et là j'obtient bien le nom de l'artiste. Voulant implémenter ça dans un ajout de fichiers, j'ai donc fais ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                    foreach (FileInfo next in files)
                    {
                        gestionTag oTag = new gestionTag(next.FullName);
                        XmlElement ENomMusique = xmlAjout.CreateElement("nom_musique");
                        ENomMusique.SetAttribute("name", next.Name);
                        xmlAjout.SelectSingleNode("//musique").PrependChild(ENomMusique);
                        xmlAjout.Save("musiques.xml");
    oTag = null;
                    }
    Pour la première musique j'ai bien les informations mais pas pour les suivantes... J'ai tenté de faire un tableau d'objet de ma classe gestionTag mais sans résultat. comment je peut free mon objet et le recréer en boucle pour lire le tag et remplir mon fichier xml?

    Finalement le code fonctionne correctement car j'ai rajouté un fonction pour le temps et j'ai bien les bons temps mais els tags marchent pas.... je me demande si la lecture des tags est vraiment fiable avec FMOD

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 77
    Points
    77
    Par défaut
    salut,

    je viens de faire justement un lecteur mp3 avec egaliseur et analyseur spectrale et lecture des tags, ce qu'il faut comprendre c'est qu'un fichier audio n'as pas forcement de tag tout depend du fichier donc, par securité j'ai stocké le nom du fichier comme ça si le getTag("artiste") ne renvoie rien ou une chaine bizarre genre "0" je le remplace par le namefile du fichier et je l'update dans le tag du fichier lui même c'est une idée...

Discussions similaires

  1. Fmod problème compilation
    Par sismic_SDZ dans le forum Débuter
    Réponses: 2
    Dernier message: 02/05/2011, 08h48
  2. SDL et fmod problème
    Par TWEESTY dans le forum SDL
    Réponses: 1
    Dernier message: 30/04/2010, 01h31
  3. [CLI] Problème checkout tag
    Par coolcool29 dans le forum CVS
    Réponses: 0
    Dernier message: 15/12/2008, 11h58
  4. problème création tag tld perso lors de l'affichage
    Par eniraka dans le forum Struts 1
    Réponses: 1
    Dernier message: 07/01/2008, 22h31
  5. Réponses: 2
    Dernier message: 20/09/2006, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo