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

Bibliothèque standard C Discussion :

fichier wav, récupération/conversion de données


Sujet :

Bibliothèque standard C

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut fichier wav, récupération/conversion de données
    Bonjour

    Ça fait quelque jour que je galère la dessus sans trop trouver de solution... peut-être que quelqu'un aura une solution.

    Mon but est de travailler sur les données d'un fichier wav pour analyser le signal (donc les données doivent être comprises entre -1 et 1).

    J'arrive très bien à récupérer mes données en C/C++... le problème est qu'elles sont méchamment castées... je m'explique:

    J'ai également utilisé Matlab pour vérifier ce que je trouvais... et Matlab me trouve de très belles valeurs genre :
    -0.0238
    -0.0315
    -0.0125
    0.0040
    0.0158
    0.0459

    Mon problème est que quand je récupère mes données en C/C++ je peux faire ce que je veux mais je me retrouve toujours avec :
    -781
    -1033
    -411
    130
    518
    1503

    Le problème (bon c'est ce que je pense, c'est pas forcément vrai) est que chaque valeur est codée sur 16bits dans le fichier... et bon un flottant c'est sur 32bits... du coup il me caste tout....

    Est-ce que quelqu'un saurait comment je peux passer ces valeurs en celles que Matlab trouve ?

    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    ok bon ben je vais répondre toute seule à mon problème

    Le fichier wav est donc bien lu...
    Mais chaque sample étant encodé sur 16bits (dans mon fichier test en ts cas), ya un vilain cast qui va tout chambouler...

    Les valeurs courtes signées (sur 16bits) peuvent être comprises entre -2^15 et (2^15)-1

    Du coup on reprend les valeurs trouvées dans le code C, on les divise par 2^15 et bam! on se retrouve avec les bonnes valeurs (que l'on peut ranger dans un beau tableau de nombres flottants cette fois).

    Ça peut paraître un peu du bidouillage, mais non non c'est bien comme ça qu'il faut faire.
    En tous cas ça marche bien...

    Mais bon... il faut faire gaffe à comment est encodé le fichier d'entrée... si les samples ne sont pas encodés sur 16bits ce sera différent bien sûr...

    Voilà c'est juste au cas où quelqu'un a ce problème un jour
    Je suis bien contente de m'en être sortie en tous cas....

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Un fichier wav c'est propriétaire ( donc format Microsoft ) il faut quasi obligatoirement passer par des API du SDK Windows..
    Regarder dans le MSDN...
    sinon on a le format wav sur www.wotsit.org

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

Discussions similaires

  1. Fichier Wav avec une fréquence donnée
    Par azimut2 dans le forum Windows
    Réponses: 0
    Dernier message: 23/11/2009, 05h19
  2. Réponses: 2
    Dernier message: 25/01/2007, 13h20
  3. Réponses: 1
    Dernier message: 05/12/2006, 10h40
  4. [VB6]XML Création de fichier et récupération de données
    Par batmat86 dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 02/04/2006, 12h38
  5. Réponses: 1
    Dernier message: 24/05/2005, 14h50

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