Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1185 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  afficher un audiogramme en ligne de commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

afficher un audiogramme en ligne de commande

n°687188
duch
Posté le 02-06-2005 à 16:07:06  profilanswer
 

salut à tous,
 
dans la série des trucs bizarres, je cherche à récupérer l'audiogramme (le spectrogramme, enfin bref l'enveloppe du son) en ligne de commande, quelqu'un connait un soft pour faire ça? Genre un soft qui le sortirait sous la forme d'un graph ascii ou encore sous forme d'une liste de points...

mood
Publicité
Posté le 02-06-2005 à 16:07:06  profilanswer
 

n°687208
jlighty
Posté le 02-06-2005 à 16:30:22  profilanswer
 

c'est pour afficher en mode console ?
ou seulement un programme qui te fournie les "points"
 

n°687210
duch
Posté le 02-06-2005 à 16:32:19  profilanswer
 

idéalement un programme qui exporte les points, mais si ça affiche en mode console, je pourrais récupérer les caractères ascii et me demmerder.

n°687217
jlighty
Posté le 02-06-2005 à 16:39:25  profilanswer
 

un programme en ligne de commande qui effectuerait une FFT sur une source sonore par exemple ?
par contre je doute que ce soit du temps réel
Scilab par exemple


Message édité par jlighty le 02-06-2005 à 16:40:38
n°687218
jlighty
Posté le 02-06-2005 à 16:41:45  profilanswer
 

un programme plus simple que Scilab :)
http://www.captain.at/howto-fftw-spectrograph.php
 
Le programme en C va effectuer à partir d'un son wav sa tranformé de Fourier rapide.
Le script suivant va uniquement mettre en forme le résultat sous GNUPlot


Message édité par jlighty le 02-06-2005 à 16:45:25
n°687233
duch
Posté le 02-06-2005 à 16:59:23  profilanswer
 

merci pour ce lien, j'ai réussi à faire marcher fftux, mais je ne comprends pas grand chose aux listes de points générées...
 
J'vais m'creuser la tête...

n°687234
jlighty
Posté le 02-06-2005 à 17:01:09  profilanswer
 

je te conseille de regarder des cours de traitement du signal
http://perso.wanadoo.fr/xcotton/el [...] etdocs.htm
il y a un chapitre "traitement du signal"

n°687235
duch
Posté le 02-06-2005 à 17:02:00  profilanswer
 

il est trop bô ce site ;-)

n°687236
jlighty
Posté le 02-06-2005 à 17:05:28  profilanswer
 

c'est vrai que le design laisse à désirer :) mais son contenu est très intéressant ;)


Message édité par jlighty le 03-06-2005 à 12:03:04
n°687523
duch
Posté le 03-06-2005 à 11:11:41  profilanswer
 

bon bah après avoir tester tout ça, en fait ça ne renvoir pas du tout un audiogramme mais l'analyse du signal, et c'est pas ça que je cherche.
 
pour faire plus clair voilà ce que je cherche à obtenir :
 
http://gregory.icilalune.fr/audiogramme.gif
 
ça c'est la forme graphique mais si je pouvais l'avoir sous forme d'une liste de points...
 
 
NB : avec fftux, voilà ce que j'ai obtenu pour ce son :
 
http://gregory.icilalune.fr/data.png


Message édité par duch le 03-06-2005 à 11:13:28
mood
Publicité
Posté le 03-06-2005 à 11:11:41  profilanswer
 

n°687566
jlighty
Posté le 03-06-2005 à 11:55:56  profilanswer
 

Ah d'accord je comprend, fftux te retourne les fréquences utilisées alors que tu veux l'affichage de ton signal dans le domaine temporel :)
D'après le code source, il examine le fichier Wav pour créer un fichier RAW avant de faire la FFT.
Que contient ce fichier RAW ?

n°687574
jlighty
Posté le 03-06-2005 à 12:00:23  profilanswer
 

en fait le fichier RAW est structuré de cette manière :
<numéro de l'échantillon>  <valeur non signé de l'échantillon>
ex:
1   20
2   50
3   100
4   150
 
donc il suffit de traiter le fichier avec GNUPlot par ex pour afficher l'amplitude de l'échantillon en fonction du numéro d'échantillon :)


Message édité par jlighty le 03-06-2005 à 12:03:29
n°687612
duch
Posté le 03-06-2005 à 12:55:46  profilanswer
 

donc en gros si au lieu d'utiliser data.dat, j'utilise data.raw, j'aurais mon audiogramme?
 
j'essaies ça tout de suite.

n°687613
jlighty
Posté le 03-06-2005 à 12:56:52  profilanswer
 

exactement il suffit de ne prendre que data.raw
d'ailleur tu peux retoucher le code source : efface tout le code alloué au calcul de la FFT


Message édité par jlighty le 03-06-2005 à 12:58:03
n°687616
duch
Posté le 03-06-2005 à 13:02:16  profilanswer
 

bah en fait ça marche pas vraiment mieux, j'ai utilisé data.raw à la place de data.dat dans generate-plots.pl mais j'ai un graph tout plat!
 
j'ai mis data.raw en ligne :
 
http://gregory.icilalune.fr/data.raw
 
d'ailleurs les valeurs de data.raw sont signées (bizarre?).
 
 
 
 
NB : en même temps c'est peut-être un problème d'échelle dans l'utilisation de GNUplot, mais comme j'y connais rien non plus à GNUplot...


Message édité par duch le 03-06-2005 à 13:06:37
n°687620
jlighty
Posté le 03-06-2005 à 13:12:33  profilanswer
 

oui c'est normal car le programme C "formate" le fichier de manière qu'il exploitable par GNUPlot
 
ce qu'il faut faire :
lance gnuplot
puis tape :  
plot "data.raw"
 
là il va tracer les points

n°687622
duch
Posté le 03-06-2005 à 13:16:36  profilanswer
 

ouaip, j'ai réussi à le faire en changeant l'échelle, voilà le fichier pl :
 

Code :
  1. #!/usr/bin/perl
  2. # Generate postscript and png plot with GNUplot
  3. # (C) 2005 www.captain.at
  4. # set custom font path
  5. $ENV{GDFONTPATH} = "/var/www/shared/private/php/";
  6. # GNUPLOT POSTSCRIPT
  7. open (GNUPLOT, "|gnuplot" );
  8. print GNUPLOT <<EOPLOT;
  9. set term post color "Arial" 12
  10. set output "data.ps"
  11. set size 1 ,1
  12. set nokey
  13. set data style line
  14. set xlabel "echantillon" font "Arial,14"
  15. set xrange [0:10000]
  16. set yrange [-2000:2000]
  17. set title "valeur" font "Arial,14"
  18. set grid xtics ytics
  19. set xtics 100
  20. plot "data.raw" using 1:2 w lines 1
  21. EOPLOT
  22. close(GNUPLOT);


 
 
mais malheureusement, ça me donne un truc qui ressemble plus à une sinusoïde qu'autre chose :
 
http://gregory.icilalune.fr/data.ps

n°687625
jlighty
Posté le 03-06-2005 à 13:26:16  profilanswer
 

je pense que c'est normal, seul 8192 échantillons ont été pris. Augment cette valeur à 100000 échantillons (dans le programme

Code :
  1. int n = 8192;

->

Code :
  1. int n=100000;

n°687626
jlighty
Posté le 03-06-2005 à 13:27:21  profilanswer
 

pour simplifier il faudrait connaître la structure de l'entête d'un fichier Wav pour trouver le nombre d'échantillons utilisés

n°687627
duch
Posté le 03-06-2005 à 13:27:48  profilanswer
 

[mode question con]
ça correspond à quoi un échantillons? (en ms?)
[/mode question con]

n°687630
jlighty
Posté le 03-06-2005 à 13:31:34  profilanswer
 

c'est suivant la fréquence d'échantillonnage :)
la période d'un échantillon = 1/fréquence d'échantillonnage
donc si c'est du 44.4Khz -> 0.0225ms
donc avec 8192 ech -> 184.32ms donc c'est à fait normal que tu obtiens des sinusoïdes bien distinct !
avec 100000 ech -> 2.250s là tu devrais commencer à obtenir la même chose que la figure précédemment.
 
PS: par curiosité tu veux en faire quoi du diagramme temporel ?


Message édité par jlighty le 03-06-2005 à 13:36:05
n°687639
duch
Posté le 03-06-2005 à 13:47:05  profilanswer
 

c'est pour faire une anim flash qui réagit en fonction du son.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  afficher un audiogramme en ligne de commande

 

Sujets relatifs
FireFox : afficher deux pages web sur la même frame ?A la recherche d'une ligne de commande ...
execution commandeSondage en ligne
probleme avec la la commande cpiocommande pour visionner des partitions et disques dur sous linux redha
[PERL] open sur une commande shell - code de retour[growisofs] gravure dvd en ligne de commande
Plus de sujets relatifs à : afficher un audiogramme en ligne de commande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR