afficher un audiogramme en ligne de commande

afficher un audiogramme en ligne de commande - Linux et OS Alternatifs

Marsh Posté le 02-06-2005 à 16:07:06    

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...

Reply

Marsh Posté le 02-06-2005 à 16:07:06   

Reply

Marsh Posté le 02-06-2005 à 16:30:22    

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

Reply

Marsh Posté le 02-06-2005 à 16:32:19    

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.

Reply

Marsh Posté le 02-06-2005 à 16:39:25    

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
Reply

Marsh Posté le 02-06-2005 à 16:41:45    

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
Reply

Marsh Posté le 02-06-2005 à 16:59:23    

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...

Reply

Marsh Posté le 02-06-2005 à 17:01:09    

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"

Reply

Marsh Posté le 02-06-2005 à 17:02:00    

il est trop bô ce site ;-)

Reply

Marsh Posté le 02-06-2005 à 17:05:28    

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
Reply

Marsh Posté le 03-06-2005 à 11:11:41    

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
Reply

Marsh Posté le 03-06-2005 à 11:11:41   

Reply

Marsh Posté le 03-06-2005 à 11:55:56    

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 ?

Reply

Marsh Posté le 03-06-2005 à 12:00:23    

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
Reply

Marsh Posté le 03-06-2005 à 12:55:46    

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

Reply

Marsh Posté le 03-06-2005 à 12:56:52    

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
Reply

Marsh Posté le 03-06-2005 à 13:02:16    

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
Reply

Marsh Posté le 03-06-2005 à 13:12:33    

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

Reply

Marsh Posté le 03-06-2005 à 13:16:36    

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

Reply

Marsh Posté le 03-06-2005 à 13:26:16    

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;

Reply

Marsh Posté le 03-06-2005 à 13:27:21    

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

Reply

Marsh Posté le 03-06-2005 à 13:27:48    

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

Reply

Marsh Posté le 03-06-2005 à 13:31:34    

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
Reply

Marsh Posté le 03-06-2005 à 13:47:05    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed