Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2006, 10h30   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 7
Points : 2
Points : 2
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.
SwissEngineer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 11h42   #2
Membre régulier
 
Avatar de zebulon2212
 
Inscription : juin 2006
Messages : 77
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2006
Messages : 77
Points : 80
Points : 80
????!!!?! 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.
zebulon2212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 11h54   #3
Rédacteur/Modérateur
 
Avatar de cladsam
 
Morgan Bourgeois
Inscription : août 2003
Messages : 1 730
Détails du profil
Informations personnelles :
Nom : Morgan Bourgeois
Âge : 32
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2003
Messages : 1 730
Points : 1 862
Points : 1 862
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.
__________________
----------------------------------------------------
Consultant technico-fonctionnel SAP logistique -
Mon site sur developpez
---------------------------------------------------
Anakin Skywalker turn to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.
cladsam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h15   #4
Invité de passage
 
Inscription : novembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 7
Points : 2
Points : 2
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 :
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
SwissEngineer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h28   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
bon moi c'est le format des Wav .. que je ne connais pas ... tiens vois si cela t'aide ...
Code :
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
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 16h00   #6
Invité de passage
 
Inscription : novembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 7
Points : 2
Points : 2
Super, je crois que c'est presque ce qui me faut.
Je suis en train de voir comment tu utilises Debug.print, Get etc..
SwissEngineer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 16h28   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
pour debug.print

bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 16h56   #8
Invité de passage
 
Inscription : novembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 7
Points : 2
Points : 2
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
SwissEngineer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h49.


 
 
 
 
Partenaires

Hébergement Web