Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/10/2012, à 10:20

Compte supprimé

Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Bonjour, j'ai fait un protocole, je recherche un programmeur qui sache manier l'interface graphique que je ne maîtrise pas.

---------------------------------------------------------------------------------------------
édit du 16 mai 2014 : voir plus loin en bas.
---------------------------------------------------------------------------------------------

Projet d'analyseur de spectre par balayage de fréquence de signaux sinusoïdaux. (sous licence GNU/GPL)

Le but est de déterminer la courbe de réponse d'un dispositif (haut parleur à partir d'un microphone de mesure, ou dispositif audio ou sono tels que table de mixage, vérification d'une courbe d'égalisation, réponse en fréquence d'un amplificateur, mais aussi effectuer des relevés de réponses de microphones et pour finir relever les courbes de sensibilité des oreilles avec le principe du procédé audioscan étendu à un intervalle de fréquence plus vaste).

L'interface du programme doit permettre de proposer de présenter le logiciel et proposer un mode d'emploi bref résumant les fonctions de celui-ci.

Puis l' IHM doit permettre la sélection de mesures désirées afin de sélectionner le protocole correspondant avec :

  • La fréquence de numérisation de la carte sonore (interaction avec le serveur de son Jack possible, afin de bénéficier facilement des 384kHz, 192kHz ou 96 kHz de certaines cartes sonores : Commencer par mesure la latence du serveur de son Jack en mettant le microphone à 10 cm de l'haut-parleur, ou dans le casque. Sinon travailler avec un autre serveur de son. Prévoir le choix du serveur de son).

  • La température de l'air, voire le degré d'hydrométrie et la pression atmosphérique (afin de préétablir la célérité du son en fonction d'une base de donnée).

A) Saisies des courbes du microphone étalon à partir de banque de données constructeurs, saisie manuelle, prévoir une banque de données afin de permettre le choix de plusieurs microphones différents et des microphones étalonnés par ce programme.

B) Mesure des réponses en fréquence et en phase des enceintes
-il faut commencer par déterminer la distance approximative du microphone à l'enceinte (ce qui sera vérifié par mesure d'un signal carré modulé en balayage de fréquence, puis en fonction du retard il faut retrouver la distance, prévoir une saisie de la température puisque la célérité du son dépend de la température, effectuer le calcul à partir d'une table de donnée puis retrouver la distance au centimètre près), prévoir de passer ce test et de forcer une valeur non automatique.
-mesures d'enceinte(s) et de haut-parleur(s) à partir d'un microphone étalon, prévoir la mémorisation d'une à plusieurs mesures dans le cas de mesures de directivité.
-relevé des caractéristiques d'un local au point d'écoute à partir d'un microphone étalon.
-mémorisation de courbes de réponses avec un nom explicite et un texte descriptif de quelques lignes (prévoir une possibilité de traduction automatique universelle en anglais à travers un site de traduction, ou autre moyen).

Le haut-parleur, l'enceinte ou le casque étalonné peut maintenant servir de référence à son tour.

C) mesure de microphone (étalonnage, ou courbe de réponse).

Deux solutions :

  1. relever la courbe du microphone à partir de l'enceinte étalonnée par la méthode précédente.

  2. relever la courbe d'un ou plusieurs microphones sur chaque voie (possibilité de mesurer 7 microphones à partir d'un microphone étalon à partir d'une seule enceinte, ou un seul haut parleur avec une carte sonore du type AudioFire PRE 8 directement par exemple grâce à une enceinte).

    Comparaison de courbes, sauvegardes, manipulation, banque de données avec date et nom de l'auteur, angle de directivité, température, hydrométrie, pression atmosphérique, matériel…

D) mesure de système audio. Alsa, Jack... (ou mesurer un plugin)
-Établir les connexions adéquates (matérielles et logicielles si serveur Jack)
Par exemple pour mesurer une table de mixage faire connecter la (ou les) sortie(s) de la carte sonore dans l'entrée de la table de mixage puis la sortie ligne de la table dans l'entrée ligne de la carte sonore.

E) mesure d'audition humaine à partir d'un casque étalonné, du clavier ou de la souris
Sous-projet : faire un balayage en fréquences de 10 Hz à Fe/3 ou 20kHz ou 32 kHz au choix (afin de tester l'écoute des pré-adolescents). Mais ne jamais dépasser Fe/3 pour le matériel employé.
14,7 kHz pour du 44100 échantillons par secondes.
32 kHz pour des 96000 / 192000 / 384000 ou plus d'échantillons par secondes.

Problème pour déterminer le niveau d'écoute absolu en décibel SPL. Sous réserve.

Sinon le principe : plusieurs balayages en fréquences venant du silence au plus bruyant, l'utilisateur agit sur le clavier ou la souris quand il entend le signal, créant petit à petit le graphique dont il faut attendre 12 mois pour avoir un rendez-vous à l'hôpital pour avoir une courbe ne dépassant jamais 8 kHz. Ici ce n'est pas la même méthode employée. Prévoir tests aléatoire gauche-droite afin de mesurer les acouphènes, laisser cette partie logicielle à un spécialiste audio...

*) Déroulement des mesures :
Les fréquences minimale et maximale seront présélectionnées selon le cas de mesures souhaitées et le type de matériel (limite de Fe/3 pour le maximum – et surtout pas Fe/2- éventuellement 5/12×Fe)
-Balayage simple croissant en fréquences de manière exponentielle. 48 huitièmes de ton par octave, ou 24 quarts de ton par octave. Mesurer la dernière moitié du signal : régime établi.
-la mesure doit s'adapter à la latence et à la distance entre capteur et transducteur s'il le faut.
-remplissage d'un tableau multiple.

Notes : dans le cas d'un ou plusieurs amplificateurs mesurés, on aura le gain mais on peut prévoir d'interpréter la phase...
De même la phase pour les enceintes puisque la latence sera constante, on pourra mesurer la phase.

Le type de mesure étant laissé au choix de l'utilisateur, celui ci peut choisir un balayage en fréquences croissantes, ou fréquences décroissantes, ou un aller-retour fréquences croissantes et décroissantes.

Relu et commenté par l'ingénieur du son Pierre VOYARD que je remercie encore une fois.

NB : ajout du 1 juillet 2016 : une fois que c'est égalisé, on peut refaire une mesure et vérifier que c'est "plat" (donc bien réglé) ou bien envisager une deuxième correction plus fine.

Dernière modification par Compte supprimé (Le 01/07/2016, à 13:31)

#2 Le 28/10/2012, à 10:55

Totor

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

B et C ressemblent à la fonctionnalité d'étalonnage de mon ampli


-- Lucid Lynx --

Hors ligne

#3 Le 28/10/2012, à 16:13

nicolas66

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Et tout ça sans être payé ... ?


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#4 Le 28/10/2012, à 19:30

HP

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

nicolas66 a écrit :

Et tout ça sans être payé ... ?

C'est libre… donc, pour la beauté du geste… big_smile


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#5 Le 28/10/2012, à 19:48

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Bonjour,
C'est une idée de projet moyen.
A+B dans un premier temps, puis on peut imaginer greffer C, puis D, puis E... ou d'autres fonctionnalités plus tard.

Actuellement j'utilise Audacity pour faire mes relevés en générant une sinusoïde modulée en fréquence de 10 Hz à 25 kHz dans la durée de 50 secondes (aved Fe=96kHz) , puis j'envoie ce signal :

  • soit dans la table de mixage égalisé, afin d'analyser le spectre, ce qui donne d'assez bons résultats

  • soit dans le haut parleur, avec mesure au point d'écoute pour analyse ce qui donne par exemple ce spectre pour une chaine JVC UX-V10 dont les correcteurs sont réglés à zéro, distance microphone ECM8000 et enceintes à environs 1,1 m (lieu d'écoute)
    1351446252.png

(Cette chaine n'est pas HIFI puisqu'elle ajoute des basses et diminue dans les aigus).

Ce n'est pas pratique de faire ça avec Audacity et ce serait un plus agréable d'avoir un outil performant permettant de réaliser ce type de mesures sans devoir bidouiller avec Audacity je pense.

édit :
Voici le signal source E(f) que j'envoie aux dispositifs (haut-parleurs ou table de mixage)
1351446832.png

Puis on obtient quelque chose comme : S(f) = E(f) * A(f) ; A(f) étant la réponse en fréquence du dispositif mesuré. Si E(f) = 1 alors A(f) = S(f) ...
PS : on aperçois sur l'analyse une pente croissante à basses fréquences, cette pente n'existe pas et n'est que le résultat de l'analyse d'Audacity.

Dernière modification par Compte supprimé (Le 01/07/2016, à 13:32)

#6 Le 28/02/2013, à 08:57

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Bonjour,
un programme similaire au fonctionnement de l'ultracurve DEQ2496 : fonctionnant sur multi-plateformes apparemment est : REW (en anglais).
PS : je l'essaierai plus tard.

#7 Le 01/03/2013, à 13:38

VinsS

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Créer une interface répondant à ton protocole n'est vraiment pas un problème, personnellement je n'y vois aucune difficulté.

Il faudrait, cependant, voir comment tu as conçu ton core, dans quel langage l'as-tu écris, on peut le trouver quelque part ?


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#8 Le 01/03/2013, à 13:42

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

VinsS a écrit :

Créer une interface répondant à ton protocole n'est vraiment pas un problème, personnellement je n'y vois aucune difficulté.

Il faudrait, cependant, voir comment tu as conçu ton core, dans quel langage l'as-tu écris, on peut le trouver quelque part ?

Merci, mais malheureusement ce n'est qu'un projet où pas grand chose n'est fait, pas même les algorithmes.
Merci bien cordialement.

#9 Le 16/05/2014, à 07:17

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Bonjour,

je suis tombé sur le programme Csound avec l'interface graphique cecilia.

wikipedia a écrit :

Csound désigne un langage de programmation pour la création sonore, ainsi que son compilateur sonore. Le nom Csound provient du langage C, avec lequel il fut écrit au MIT par Barry Vercoe. Ce langage est inspiré de MUSIC, une série de programmes plus anciens développés par Max Mathews. C'est un logiciel libre disponible sous la licence LGPL. Son développement s'est poursuivi durant les années 1990 et 2000 sous la conduite de John Fitch à l'université de Bath, donnant ainsi naissance à la version Csound 5 en février 2005. Beaucoup de développeurs ont contribué à ce projet, notamment Istvan Varga, Gabriel Maldonado (qui a développé une variante CsoundAV), Robin Whittle, Richard Karpen, Michael Gogins, Matt Ingalls, Steven Yi et Victor Lazzarini.

Dans son utilisation la plus simple, le programmeur rédige deux fichiers texte selon un modèle spécifié et prédéfini : le fichier orchestra (orchestre) qui décrit la nature des instruments et le fichier score (partition) qui décrit les notes, ainsi que d'autres paramètres temporels. Csound procède ensuite à la compilation de ces fichiers et génère un fichier audio. Les versions récentes de Csound peuvent recevoir, traiter et produire, éventuellement en temps réel, des flux audio et des flux MIDI.

Les fichiers orchestra et score peuvent être réunis dans un seul et même fichier en utilisant une structure avec des balises XML. Voici un exemple très simple d'un fichier Csound unifié, lequel produit après compilation un fichier Wave contenant un signal sinusoïdal d'une durée de 1 seconde, et d'une fréquence de 1 kHz à un taux d'échantillonnage de 44,1 kHz :

<CsoundSynthesizer>;
 
  <CsOptions>
    csound -W -d -o tone.wav 
  </CsOptions>
 
  <CsInstruments>
    sr     = 44100           ; Sample rate.
    kr     = 4410            ; Control signal rate.
    ksmps  = 10              ; Samples pr. control signal.
    nchnls = 1               ; Number of output channels.
 
    instr 1 
    a1     oscil p4, p5, 1   ; Simple oscillator. 
           out a1            ; Output.
    endin
  </CsInstruments>
 
  <CsScore>
    f1 0 8192 10 1           ; Table containing a sine wave.
    i1 0 1 20000 1000        ; Play one second of one kHz tone.
    e
  </CsScore>
 
</CsoundSynthesizer>

Ces programme sont dans les dépôts d'Ubuntu.

sudo apt-get install csound cecilia

En fait, l'algorithme ne sera pas compliqué et suivra cette idée : Lors d'un balayage continu en fréquence sur un haut-parleur (de 16 Hz à 30 kHz), le microphone calibré enregistre le haut-parleur. Le balayage dure quelques secondes (moins de 10 secondes, temps ajustable pour différentes analyses). Ensuite on en calcule 1023 bandes d'égalisations : pour communiquer avec le programme d'égalisations sous jack Jamin (et réutiliser les briques de programmation déjà existantes).

L'analyse finie, il suffira d'utiliser Jamin étalonné par le programme décrit ci-dessus. C'est tout à fait jouable, ça tient la route, et non : l'idée d'un bruit rose est mauvaise. C'est pour cela qu'il faut balayer en priorité en fréquence avec une sinusoïde de 16 Hz à 30 kHz : nécessite le paramètre sr = 192000.

Dernière modification par Compte supprimé (Le 16/05/2014, à 07:20)

#10 Le 17/05/2014, à 12:56

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

up ?

#11 Le 18/05/2014, à 15:37

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

up ?

#12 Le 20/05/2014, à 07:14

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Up ?
Personne ne connaît le logiciel cecilia et le langage de programmation Csound ?
Ahhhh il va falloir apprendre ça car ce programme vaut le coup.

Dernière modification par Compte supprimé (Le 20/05/2014, à 07:31)

#13 Le 22/10/2014, à 14:56

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Peut être gstreamer peut-il t'aider dans ta démarche

#14 Le 23/10/2014, à 09:48

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

benoitfra a écrit :

Peut être gstreamer peut-il t'aider dans ta démarche

Merci benoitfra, ça n'a pas l'air aussi évident avec gstreamer, mais c'est une piste intéressante, il faudra que je trouve de la documentation autour de gstreamer, mais surtout du temps. Sinon ce sera peut-être plus simple personnellement avec Csound et cecilia … il ne me manque que le temps mais je dois faire ça plus tard, c'est sur ma longue liste. Et je suis sûr d'arriver à une correction sur 1023 bandes facilement sans trop me casser la tête avec du C/C++ …

#15 Le 01/07/2016, à 10:14

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Bonjour, du nouveau.
Je voulais m'y coller mais cecilia ne fonctionnant pas sous 16.04, on met de coté, voire on oublie ce projet (quelques temps).

BUG : Cecilia doesn't launch on ubuntu 16.04.

Dernière modification par Compte supprimé (Le 01/07/2016, à 13:22)

#16 Le 01/07/2016, à 10:41

gouet

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Dommage, car il m'aurait été utile pour régler l'équalizer de mon ampli. Je ne peux malheureusement t'être d'aucune aide sad

Cdlt

Gouet

Hors ligne

#17 Le 01/07/2016, à 12:37

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

gouet a écrit :

Dommage, car il m'aurait été utile pour régler l'équalizer de mon ampli. Je ne peux malheureusement t'être d'aucune aide sad

Cdlt

Gouet

Je regarderai du coté de la 16.10, ce n'est peut-être pas perdu.
Mais y'en a marre des mise à jour qui cassent ce qui fonctionnait… (cecilia fonctionnait avant 16.04)

https://bugs.launchpad.net/ubuntu/+source/cecilia/+bug/1579328 a écrit :

If i download and install 16.10 package (cecilia_5.2.1-1_all.deb), cecilia works without problem...

#18 Le 01/07/2016, à 13:15

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Simplification du B) (pense-bête - brouillon)

On connaît la latence de la chaîne sonore par jdelay (ce résultat correspond à la latence d'entrée + la latence de sortie de votre carte son + la latence du serveur audio (jack))

Il suffit donc de générer un signal carré à 1 Hz (qui va se comporter comme deux impulsions unitaires, l'une positive et l'autre négative) qui permettra de déterminer ainsi de vérifier que l'enceinte et le microphone sont en phase (pas d'inversion de polarité) dans une limite de quelques mètres mais aussi de mesurer la distance de l'enceinte au microphone en mesurant le délai en dixième ou centième de millisecondes. (si ça ne fonctionne pas avec un signal carré à 1 Hz, il faudra peut-être balayer directement en fréquences, et regarder la similitude entre la courbe mesurée et son opposée, avec le signal envoyé aux enceintes - ou laisser la distance à saisir par l'utilisateur. Distance pas très importante. Ou encore, balayer de 20 Hz à 20 kHz puis revenir à 20 Hz).

distance = célérité du son × (délai_mesuré - jdelay)

Par exemple si jdelay=3,75ms et délai_mesuré=9,64ms alors :

distance [ m] = 340  [m/s] × (0,00964 - 0,00375) [ s] = 340 × 0,00589 ≈ 2,0026 mètres (simple indication pour la validité de la mesure)

Mais ce qui compte est de connaître la latence entre l'enceinte et le microphone, car on va plus tard générer une sinusoïde modulée en fréquence par une rampe exponentielle de :
fréquence(t)=20×10^(t) avec 0s ≤ t ≤ 4s - durée de la mesure qui détermine la fréquence limite haute (alors 20 Hz ≤ fréquence ≤ 20000 Hz).

On a la courbe de réponse (amplificateur + enceinte + pièce d'écoute + microphone + carte son) en fonction de la fréquence.

Dans un premier temps, on considère que le microphone de mesure et la carte sonore sont linéaire (on garde les courbes de microphones pour plus tard (partie A) ).

Alors on mesure bien la réponse en fréquence de la chaîne sonore (enveloppe du gain de balayage en fréquence) et la correction à appliquer n'est que l'image négative de la réponse du gain en fonction de la fréquence.

Dernière modification par Compte supprimé (Le 01/07/2016, à 13:18)

#19 Le 01/07/2016, à 13:27

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

gouet a écrit :

Dommage, car il m'aurait été utile pour régler l'équalizer de mon ampli. Je ne peux malheureusement t'être d'aucune aide sad

Cdlt

Gouet

En attendant, tu peux régler en manuel :
Tu génères un bruit blanc à travers amplificateur et égaliseur (l'égaliseur se met entre la table de mixage et l'amplificateur) que tu captes avec un microphone de capture. Tu analyses dans audacity le spectre obtenu. Si tu vois une bosse à 125 Hz et un trou à 4 kHz, tu compenses dans l'égaliseur, et tu refais des mesures jusqu'à avoir une réponse plate dans audacity (alors l'égaliseur sera bien réglé).

Dernière modification par Compte supprimé (Le 01/07/2016, à 13:28)

#20 Le 02/07/2016, à 07:53

gouet

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

OK, je vais étudier ça.

Hors ligne

#21 Le 02/07/2016, à 22:07

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Pour contourner le bug de cecilia sur Ubuntu 16.04 :

wget -c http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/c/cecilia/cecilia_5.2.1-1_all.deb
sudo dpkg -i cecilia_5.2.1-1_all.deb

#22 Le 02/07/2016, à 22:17

Compte supprimé

Re : Projet d'analyseur de spectre (cherche programmeur Csound et cecilia)

Bon, le logiciel cecilia n'est pas évident, alors je commence par :
Synthèse sonore avec Csound