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

C Discussion :

Lire un fichier wav


Sujet :

C

  1. #1
    Membre chevronné
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Par défaut Lire un fichier wav
    Bonjours.
    J'aimerai récupérer les donnés contenus dans un fichier wav pour faire une reconnaissance de notes.J'aimerai savoir s'il existe une lib permetant de récupérer simplement ses données et si non , s'il existe des tutos l'expliquant.

    Merci.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gusgus Voir le message
    J'aimerai récupérer les donnés contenus dans un fichier wav pour faire une reconnaissance de notes.J'aimerai savoir s'il existe une lib permetant de récupérer simplement ses données et si non , s'il existe des tutos l'expliquant.
    Il faut connaitre le format des données dans le fichier :

    www.wotsit.org

    ensuite, il faut ouvrir le fichier en binaire (fopen() avec "rb") et le lire par caractères (fgetc()) ou par blocs (fread()).

  3. #3
    Membre très actif

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Par défaut
    salut

    moi perso je prends toujours des wav signed 16bit à 44100hz

    pour ouvrir le wav je fais simplement
    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
     
    char header[44];
    int wav_size;
    short *wav_data;
    void charger_wav(char *path) {
        FILE *f = fopen(path,"rb");
        fseek (f, 0, SEEK_END);
        int taille = ftell(f) - 44;
        fseek (f, 0, SEEK_SET);
        short *data = malloc(taille);
        fread(header,44,1,f);
        fread(data,sizeof *data,taille/sizeof *data,f);
        fclose(f);
        wav_size = taille / sizeof *wav_data;
        wav_data = data;
    }
    quelle méthode cherches tu à appliquer pour la reconnaissance de note ??

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    La reconnaissance de note, c'est surement aussi compliqué que la reconnaissance optique de caractere (OCR). Parmis les choses compliquées, je suppose que ya la difference entre les harmoniques qui constituent une note d'un instrument et la note reellement jouée par l'instrument ; puis la séparation des instruments et pouvoir dire que ya un meme instrument (meme si on ne l'identifie pas) qui joue ça puis ça ; aussi, gérer le "bruit" ambiant et les percutions.
    Maintenant si ton son wav n'est qu'une primitive (genre sinusoïde), c'est peut etre jouable.
    En tout cas, il est completement illusoire de croire qu'une bibliotheque va permettre d'obtenir tout ça directement.

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par acx01b Voir le message
    salut

    moi perso je prends toujours des wav signed 16bit à 44100hz

    pour ouvrir le wav je fais simplement
    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
     
    char header[44];
    int wav_size;
    short *wav_data;
    void charger_wav(char *path) {
        FILE *f = fopen(path,"rb");
        fseek (f, 0, SEEK_END);
        int taille = ftell(f) - 44;
        fseek (f, 0, SEEK_SET);
        short *data = malloc(taille);
        fread(header,44,1,f);
        fread(data,sizeof *data,taille/sizeof *data,f);
        fclose(f);
        wav_size = taille / sizeof *wav_data;
        wav_data = data;
    }
    quelle méthode cherches tu à appliquer pour la reconnaissance de note ??
    Cette méthode n'est pas portable. Le comportement dépend de l'endianness et fait l'hypothèse qu'un short fait 16 bits.

    Les globales c'est moche...
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    struct wav
    {
       char header[44];
       int size;
       short *data;
    };
     
    void charger_wav (char const *path, struct wav *p_wav)
    {
       FILE *f = fopen (path, "rb");
       if (f != NULL)
       {
          fseek (f, 0, SEEK_END);
          {
             int taille = ftell (f) - sizeof p_wav->header;
             fseek (f, 0, SEEK_SET);
             {
                short *data = malloc (taille);
                if (data != NULL)
                {
                   size_t const data_size = taille / sizeof *data;
                   /* chargement du header */
                   int n = fread (p_wav->header, sizeof p_wav->header, 1, f);
                   if (n == 1)
                   {
                      /* chargement des donnees */
                      n = fread (data, sizeof *data, data_size, f);
                   }
                   fclose (f);
     
                   if (n == (int) data_size)
                   {
                      /* enregistrement des informations des donnees */
                      p_wav->size = data_size;
                      p_wav->data = data;
                   }
                }
             }
          }
          fclose (f), f = NULL;
       }
       else
       {
          perror (path);
       }
    }

  6. #6
    Membre chevronné
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Par défaut
    Merci de répondre!
    c'est ce que je craignait,il n'y a pas de bibliotheques...
    Sinon pour la reconnaissance de note,c'est mon frere qui le fait dans le cadre de son TIPE de prepa.Il ma dit qu'il allait uliliser "les series de fourier"(me demandez pas se que c'est je suis que en terminale).Mais il m'a demander de lui faire un truc qui lui ouvre une fichier wave(il a pas trop le temps de programmer).
    Je vais essayer avec fopen et tout.

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gusgus Voir le message
    c'est ce que je craignait,il n'y a pas de bibliotheques...
    Il y a des bibliothèques FFT (Fast Fourier Transform), mais ce n'est pas à la portée d'un débutant, surtout si il ne connait pas le sujet...
    Sinon pour la reconnaissance de note,c'est mon frere qui le fait dans le cadre de son TIPE de prepa.Il ma dit qu'il allait uliliser "les series de fourier"(me demandez pas se que c'est je suis que en terminale).Mais il m'a demander de lui faire un truc qui lui ouvre une fichier wave(il a pas trop le temps de programmer).
    Ton frère de devrait pas prendre l'habitude de faire faire son travail par les autres. Il fera comment le jour de l'examen ? Et dans son travail ?

  8. #8
    Membre chevronné
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Par défaut
    Ton frère de devrait pas prendre l'habitude de faire faire son travail par les autres. Il fera comment le jour de l'examen ? Et dans son travail ?
    Le but de mon frere n'est pas de savoir ouvrire un fichier^^.Nan mais sans rire,d'autres personnes avant on essayer de faire quelque chose dans ce style et elles sont resté bloqué a l'ouverture du fichier!ce qui est quand même un peu bête etant donner que le but du TIPE n'est absolument pas de savoir ouvrire un fichier son!

    Il y a des bibliothèques FFT (Fast Fourier Transform), mais ce n'est pas à la portée d'un débutant, surtout si il ne connait pas le sujet...
    Je pense m'être fait mal comprendre.Il ne sait pas ouvrire un fichier mais tout ce qui touche au tranformation de fourier etc,il va le faire tout seul!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème pour lire un fichier wav
    Par r0d dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/05/2007, 19h56
  2. [debutant] Lire un fichier .wav
    Par r0d dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2006, 09h42
  3. Lire un fichier wav
    Par fabnet dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 14/09/2005, 20h23
  4. Lire un fichier WAV
    Par benib8 dans le forum Langage
    Réponses: 1
    Dernier message: 31/08/2005, 12h11

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