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

VBA Discussion :

Lire DANS un fichier wav avec VBA


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Lire DANS un fichier wav avec VBA
    Bonjour à tous,

    Je souhaite lire le contenu d'un fichier .wav pour faire des transformees de fourier sous VBA.
    Le probleme c'est que je ne parviens pas à convertir un wav en txt.
    Dans le principe, un fichier wav a une structure hyper simple (un header de 44bytes + puis toutes les valeurs en 8 ou 16 bits à la suite).

    L'idee qui me semble la plus simple est de passer par une dll qui va me lire la valeur du x-eme echantillon et me la renvoit.

    Est ce que qqn a une idee de comment ecrire cette .dll ?

    D'avance merci.

  2. #2
    Membre régulier Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Points : 88
    Points
    88
    Par défaut
    ????!!!?! Tu parle chinois ???

    Non bon treve de plaisenterie meme si les transformé de fourier sont bien 3 ans derriere moi
    Ton fichier .wav est un fichier binaire donc inutile d'essayer de le transformer en .txt c'est impossible.
    il faut que tu te serve des API Windows.
    par contre l'environnement vba n'est pas forcément le meilleur pour faire ton truc te devrai te mettre sur VB puis envoyer tes données sur excel.
    je pense que AudioModule 1.0 type Library devrait te convenir, sinon il en existe tout une multitude.

  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    J'ignore ce que tu appel convertir un Wav en txt mais je présume qu epar la tu confonds l'accès binaire et l'accès mode texte.
    Sur un wav tu dois accèder en binaire ce qui se fait très bien en VB et VB.net , ensuite en VB.net tu dois avoir des trucs du genre

    mofichier.ReadInt() etc ou tu peux lire des valeurs en faisant bien attention ( je connais pas très bien le wav) au bit depoids fort /bits de poids faible.

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Hello,

    merci pour vos reponses.
    Je m'apercois que ce que j'ai marque n'etait pas tres clair . Donc qques precisions:
    1. Convertir wav en txt:

    En fait, ce que je veux, c'est avoir les valeurs des echantillons enregistres dans le wav dans une liste ou une colonne.
    De ce que j'ai compris le wav fonctionne comme ça:
    [header]:44 bytes avec la finesse de l'echantillon (codage en 8 ou 16 bits) et la frequence d'echantillonnage
    [x1] valeur du 1er echantillons (niveau sonore en dB) sur 8/16 bits
    [x2] 2 eme echantillon (correspond à un ecart de 1/frequence ech.)
    .
    .
    .
    [xn] dernier echantillon

    Mon idee, c'est de recuperer tous les "x" qui sont enregistres en binaires sur 8 ou 16 bits et de retourne dans une colonne (ou autre) les valeurs en decimal.

    2. API windows en acces au fichier en binaire

    C'est exactement là où le bas blesse. J'ai trouve en vb la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileOpen(arg1,arg2,OpenMode.Binary)
    Le pb c'est que je ne sais pas comment faire avec vba (j'ai l'impression que je peux carrement rien faire ).
    Je ne connais rien des passerelles entre vb et vba. Et je n'ai pas vb.
    Mais je me suis dit qu'il y avait peut-etre des dll qui permettaient d'ouvrir des fichiers en mode binaire dans win32 mais j'ai pas encore trouve.
    Idealement, ce que je cherche c'est une dll du type: fcn(Arg1= fichier wav, Arg2= n eme echantillon cible) et qui retourne [xn] au format Int.

    Voili voilou

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bon moi c'est le format des Wav .. que je ne connais pas ... tiens vois si cela t'aide ...
    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
     
    Sub LectBinaire()
     Dim f As Integer
     f = FreeFile
     Dim i As Integer
     Dim x1 As Byte
     Dim bHeader(0 To 43) As Byte
     
      Open "c:\windows\Media\ding.wav" For Random As #f
     
       'Lecture entête
        Get #f, , bHeader
        'Ensuite faut analyser l'entête...???
        For i = 0 To 43
          Debug.Print i & " : " & bHeader(i)
        Next
        Get #f, , x1 ' Lecture byte/byte...
     
        Debug.Print "X1 : " & x1
     
     
      Close #f
    End Sub

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Super, je crois que c'est presque ce qui me faut.
    Je suis en train de voir comment tu utilises Debug.print, Get etc..

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040

  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci bcp!

    Ca marche presque, j'ai juste besoin de savoir comment on fait pour lire la longueur d'un fichier mais je pense que je trouver ça dans les FAQ

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

Discussions similaires

  1. Lire dans un fichier .txt avec separateur
    Par seiken02 dans le forum C++Builder
    Réponses: 6
    Dernier message: 04/05/2010, 15h05
  2. [XL-2003] Recherche un mot dans un autre fichier excel avec vba
    Par alaoui_nizar dans le forum Excel
    Réponses: 5
    Dernier message: 19/04/2010, 17h37
  3. lire/ecrire dans un fichier .mat avec C++
    Par WELCOMSMAIL dans le forum C++
    Réponses: 6
    Dernier message: 11/09/2007, 13h19
  4. lire un fichier wav avec windows media player
    Par hachdotnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/03/2007, 23h51
  5. Lire un fichier XML avec VBA
    Par Mouse dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/06/2006, 19h56

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