Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

TIPE synthese sonore: analyse/resynthese additive par temps fréquence

  • 181 réponses
  • 10 participants
  • 21 048 vues
  • 12 followers
Sujet de la discussion TIPE synthese sonore: analyse/resynthese additive par temps fréquence
Bonjour à tous,
Voilà, je dois présenter un TIPE sur la synthèse sonore analogique en vue de passer des concours des grandes écoles.
Je voudrais savoir si certains pouvaient m'indiquer des livres (ou site si ça existe) qui approfondissent ce thème (au moins des auteurs).
Ma difficulté est de comprendre le principe de la synthese FM (pas du pt de vue mathematique mais du pt de vue réalisation). En fait j'aimerais savoir si on pouvait me donner de quoi elaborer une simulation de montage qui utiliserait le principe de la FM.
De même je cherche une idée ou quelques conseils pour realiser un montage qui simule une synthèse AM (multiplieur etc...) car je connais bien le principe mais je vois pas quel algorithme appliquer pr avoir des sons semblables à ceux d'instruments de musique par exemple.
Le but final est de faire une experience au labo de physique et de faire une analyse spectrale du signal emis (par exemple le son d'une guitare) et de le comparer au signal qu'on a voulu imiter.
Aussi, je voudrais savoir si qqun pouvait m'indiquer un site où l'on peut trouver l'analyse spectrale de différents instruments de musique (peu importe lesquels)
Merci à vous.
Afficher le sujet de la discussion
126
J'ai un spectrogramme que j'ai fait avec un logiciel:
c'est un mi ( 330 Hz) d'une corde de guitare


ps : un phase dépendant de n c'est possible?auquel cas j'ai juste exponentiel ( truc *t) qui serai le module
127

Citation :
Ouaih mais la il a l'expression analytique de son spectrogramme, y a les 99% du taf qui est fait



Oui mais c'est ca que je comprends pas, parce qu'il l'a deja, sa TF. la. Pour resoudre une equation de propagation, on utilise justement Fourier, et la linearite des equations pour arriver au developpement spectral par rapport au temps. Donc la, son expression, c'est y(t, x) = sum_{i \in \infty}{C(n, x) * e^{\omega t}, qui est la TF temporelle de y, par unicite de la TF pour les "bonne fonctions".
128


Ca serait quoi pour toi Pov Gabou l'amplitude dans cette expression?
129
> tututetu, oui, la, ca marche nickel. Tu vois bien la phase d'attaque, avec un front frequentiel, puis la decroissance des partiels dans le temps, qui est une fonction de la frequence.

Je sais pas quel soft tu as utilise, mais l'idee de base pour arriver a ce resultat, c'est de decouper le signal en petits morceaux (eventuellement recouvrants), a multiplier ces morceaux par des fenetres (assimiles a du lissage), puis a calculer Fourier sur chacun de ces morceaux.

Si tu cherchers transformee fourier court terme (short time fourier transform) sur le net, tu trouveras pas mal d'infos, et on peut t'expliquer si tu comprends pas par apres.
130
C'est vrai que je n'ai fais q'utiliser le logiciel sans savoir comment il marchait , je vais essayer de comprendre le fonctionnement.

le logiciel s'appelle spectrogramme
:bravo:
131
Tututu> Ton equation, c'est un truc que tu as demontré a partir des equation de propagation d'onde ?

La constant C tu l'as relié a des parametres physiques ?

pour avoir le module, il faut que tu fusionnes a.cos(truc)+b.sin(truc) en A.sin(truc+phase)

Gabou> a quand l'interpreteur latex sur AF :boire:
132
En general, il faut rester en notation complexe, ca simplifie. Ton a(n)cos, tu peux le transormer en partie reelle de D(n, x)*exp(iwnt). Et tu as du coup la TF, non ?
133

Citation :
a quand l'interpreteur latex sur AF



J'ai pense exactement la meme chose :ptdr:
134
Gabou> quand tu parle de TF, c'est transformée de fourier ou TFR time frequency representation, j'suis un peu perdu :oops:

la son equation pour moi, c'est directos la TFR non ?

Bon on va bien finir par tous ce comprendre :boire:
135
Moi ca y est je commence à ne plus rien comprendre :(((
136
Bon tanpis après demain je passe donc , ben je leur montrerais ce que j'ai fait , on verra bien :bravo:
137

Citation :
Gabou> quand tu parle de TF, c'est transformée de fourier ou TFR time frequency representation, j'suis un peu perdu



J'etait pas tres precis. Mais si tu as une fonction definie par



Avec les omega_k multiples de la pulsation fondamentale, alors les a_k(x) sont forcement les coefficients de fourier (en admettant que la fonction f(x,t) est assez reguliere, on peut identifier chaque coefficient a_k(x) aux coeff de la serie de Fourier, mais on est en physique, tout se passe bien :) )
138
Oui tout a fait, on se comprend bien.

Maintenant d'apres son equation



Si tu l'exprimes sous ta forme ak(x) depend du temps aussi, c'est plutot ak(x,t). Donc c'est directe le temps frequence qu'il a. Ca te semble correct ?
139
Ah putain, je suis trop con, j'ai completement zappe les exp(-cnt). Donc du coup, c'est tout faux ce que j'ai dit, il y a plus aucun correspondance, les coefs de Fourier ne doivent pas du tout dependre du temps, sinon, ca n'a plus aucun sens :oops:

Bref, le spectrogramme, oui, ca permet de voir l'evolution des coeffs au cours du temps; c'est une sorte d'echantillonage des fonctions a_n(t) sur l'echelle temporelle (en ayant un bon sous echantillonnage de ces coeffs, tu peux alors t'assurer que tu ne perds pas d'informations).
140
C'est chaud de se comprendre sans du LateX :boire:
141
" les coefs de Fourier ne doivent pas du tout dependre du temps, sinon, ca n'a plus aucun sens "

"ca permet de voir l'evolution des coeffs au cours du temps"

Faudra que l'on m'explique , parce que là je pige plus rien
142
Spectrogramme et tranformee de fourier, c'est different.

La transformee de fourier, normalement, c'est pour les fonctions periodiques (coefficients integrales, reeconstruction discrete, ie series). On etend ca aux fonctions a support borne, de carre integrable, etc... Mais fondamentalement, dans l'intepretation frequentielle, ca te donne le spectre a un instant donne. Si tu veux voir l'evolution du spectre au cours du temps, t'es oblige de calculer le spectre (c'est a dire les coefficients de fourier) a des instants differents.

Je rappelle que la formule des coeffs de Fourier pour une fonction de carre integrable, c'est fondamentalement F(k) = integrale(f(t)exp(-ikt)dt), et la representation de fourier, en supposant que tout se passe bien (convergence de la representation vers f), c'est f(t) = sum(F(k)exp(-ikt)) (a un coefficient multiplicateur pres). Dans ce cas, les coefficients de Fourier caracterisent entierement la fonction, a un ensemble de mesure nulle pres (les exp(-ikt) sont les vecteurs d'une base hilbertienne de l'espace de Fourier des fonction de carre integrables, et les coeffs les coordonnees de f dans cette base).

Bref, pour une fonction periodique, les coeffs de Fourier a un instant donne sont suffisant pour donner l'information de toute la fonction. Si tu es interesse par l'evolution temporelle de la fonction, la representation de Fourier ne sert a rien

Pour ca, il te faut une representation temps-frequence. La methode de base est simple et intuitive: tu decoupes ta fonction en segments (pouvant se recouvrer), en multipliant ta fonction par une fenetre. De la forme de la fonction de fenetre depend la resolution frequentielle et temporelle. Un theoreme montre que l'on ne peut pas avoir une resolution temporelle et frequentielle arbitraire, il y a un compromis a trouver (une forme de theoreme d'heisenberg). Ainsi, si ta fenetre est egale a 1 partout, tu n'as aucune resolution temporelle, te retrouves la tranformee de fourier. Si ta fenetre est un dirac, tu retombes sur la fonction de depart (a un decalage pres), tu as donc aucune resolution frequentielle. Entre les deux, plein de fenetres et de compromis temps frequence correspondants.

Le spectrogramme est une forme discretisee en frequence et en temps de la transforme de fourier a court terme (la discretisation est faite pour les calculs pratiques: celle en frequence est une consequence du fait qu'en pratique, les signaux ne sont pas continus mais definis a chaque periode de la frequence d'echantillonage, c'est la transformee de fourier discrete, et la discretisation en temps de la representation temps frequence peut etre faite grace a la taille de la fenetre qui est finie). Il existe des conditions sur les fenetres, les pas de discretisation pour avoir une reconstruction de la fonction de depart a partir du spectrogramme

Le compromis temps/frequence est fondamental: il te dit pourquoi par exemple, si tu n'as que 10 milli secondes de signal a 44.1 khz (ie 441 echantillons), tu ne pourras jamais separer des frequences avec moins de 44100/441 = 100 Hz. Si tu veux plus de resolution frequentielle, tu es oblige d'avoir des fenetres plus longues, mais alors tu perds en resolution temporelle. C'est la cause fondamental du fameux probleme de pre echo de tout codeur audio type mp3. Pour utiliser les informations frequentielles, tu veux avoir la fenetre la plus grande possible, mais si ta fenetre contient deux sons dont l'enveloppe est tres courte (typiquement, un hit hat de batterie), il sera impossible de reconstruire les deux sons separement, d'ou une sorte d'applatissement des percussions a bas debit.

Si tu comprends pas tres bien ces problemes, dis toi que ce n'est pas grave. C'est tres facile de s'emmeler entre transformee de fourier pour fonctions discretes, fonctions quelconque de carre integrable, fourier a temps discret, fourier discret, etc... Ca prend du temps et de la pratique, mais c'est fichtrement interessant !
143
Je te rassure j'ai pratiquement ....rien compris :bravo: .
Bon disons que je veux faire le "spectrogramme" à un instant donné, genre t=0sec , j'en fait quoi finalement de ma fonction y(x,t) :(((
144
Si tu demandes un spectrogramme a un instant donne, c'est que t'as vraiment rien compris, et/ou que mon explication etait vraiment nulle :fou:

Bref, les coefficients de fourier classiques, ceux de la transformee de fourier, te donnent une representation purement frequentielle de ta fonction du temps. Aucune information temporelle n'est possible.

A la place, pour le spectrogramme, imagine que tu decoupes ton signal en petits morceaux, que tu fasses le spectre de chacun de ces morceaux: tu as la transformee de fourier a court terme, autrement dit le spectrogramme. Le probleme, c'est que de la maniere dont tu vas decouper (taille des morceaux, forme de la fenetre qui est la fonction par laquelle tu multiplies chacun des morceaux avant de calculer Fourier, etc...) va dependre la precision de l'information de frequence et de temps. Expliquer les differentes contraintes est un peu complique quand tu connais rien au domaine.

Sous matlab/octave, tu as tout simplement une fonction specgram qui te calcule le spectrogramme d'un signal donne.
145
Super donc mes coefficients je peux rien en faire , et je peux rien faire d'autre :mdr:
Tant pis je présenterais quand même.

Sinon quelqu'un aurait un spectrogramme précis d'une corde de guitare?
146
Ben file moi un son de guitare, dis moi ce que tu veux voir dessus (precision temporelle, precision frequentielle, etc...) et je te le fais.

Citation :
je peux rien faire d'autre



Pourquoi ? :???:
147

Citation : y(x,t)



:coucou:

On va essayer d'etre plus rigoureux, tu avais dis avant que tu fixais un x des le depart (tu fixe auniveau spatial donc)

tu as donc y(t)=somme de fonction, chaque element de la somme correspond a la description temporelle d'une harmonique

en adoptant l'ecriture mathematique suivante y(t,n) ou n est lun multiple entier de la frequence fondamentale, tu peux ecrire :

y(t,n)=A_n(t)*sin(2*pi*t*fondamentale*n + phase_n(t))

pour moi il y a la, la description de ton onde a la fois en temps et en frequence ici !

on peut meme ecire (du coup on a l'expression analytique du temps frequence

y(t,f)=somme_n=1^n=truc (A_n(t)*sin(2*pi*t*fondamentale*n + phase_n(t)))*dirac(n*fondamentale-f)
148
Je comprends pas tres bien ta derniere formule: les coeffs de Fourier, ils sont obtenus en integrant par rapport au temps, donc on ne peut pas avoir encore de dependance temporelle. On est oblige de calculer les coeffs de fourier a des instants differents, avec fenetrage, pour avoir l'evolution temporelle du spectre. Les coefficients de Fourier "classiques", font perdre par definition toute information temporelle (il y a pas reellement perte d'information, puisque les coefficients de Fourier caracterisent entierement la fonction).

Pour le y(x, t), je suis d'accord que ce serait plus simple de fixer x, parce que sinon, on s'emmele vite entre transformee de Fourier temporelle et spatiale...
149
Je sais pas, tuetuetue n'a pas repondu a certaine question notamment:

"est ce que ca formule proviens de calcul analytique, est ce que son terme c est relié a des parametres physique"

parce que je pense qu'il a fait ca
- equation d'une vibration d'une corde
- recherche d'une solution analytique
- la il galere pour representer la solution analytique

c'ets comme ca que je vois le truc

- comme il a la solution analytique, il n'a pas besoind 'avoir recours a des transformée de fourier ou autre temps frequence, il a directement l'expresion analytique de sa vibration avec l'amplitude de chaque partiel par rapport au temps

dans son étude il serait interessant de:
- afficher le temp frequence theorique (donc son expression analytique)
- afficher le spectrogramme d'un vrai son de piano

comme ca que j'ai vu le probleme, mais si tuetuetue precise pas, c'ets chaud de savoir, ce qu'il veut faire :mrg:

En gros, je ne pense pas qu'il fait de l'analyse resynthese additive. Il fait juste de la synthese par modele physique basée sur la resolution des equations de propagation d'onde.
150

Citation :
parce que je pense qu'il a fait ca
- equation d'une vibration d'une corde
- recherche d'une solution analytique



La, je suis Ok. Ce serait interessant tout de meme de savoir d'ou vient la formule (comme il y a des pertes, l'equation d'onde n'est pas lineaire ?)

Citation :
- comme il a la solution analytique, il n'a pas besoind 'avoir recours a des transformée de fourier ou autre temps frequence, il a directement l'expresion analytique de sa vibration avec l'amplitude de chaque partiel par rapport au temps



La aussi, Ok, mais ca ne correspond pas directement au temps-frequence. C'est difficile a expliquer sur un forum (ou je suis une merde en explication), mais Fourier et representation temps-frequence, c'est "independant". Car faire du Fourier, a la base, c'est bien passer du domaine temporel au domaine frequentiel, de maniere "absolue", c'est a dire que tu perds tout forme de localisation temporelle, au profit d'une description frequentielle de precision "infinie" (comprendre aussi fine que possible).

Le temps frequence, c'est faire un compromis sur cet absolu (ca devient metaphysique, la :) ). L'expression analytique donnee il y a quelques posts est un compromis. Je pense que c'est important de preciser que ce n'est pas une transformee de Fourier (typiquement, peut etre que la formule a ete obtenue en disant que l'enveloppe varie beaucoup plus lentement que le signal en lui meme, et donc que tu peux decomposer la fonction y(t) en e(t)*x(t), avec le e(t) qui sort de l'integrale de Fourier parce que c'est "presque constant").

Citation :
comme ca que j'ai vu le probleme, mais si tuetuetue precise pas, c'ets chaud de savoir, ce qu'il veut faire



D'un autre cote, pendant les oraux, je peux comprendre qu'il ait plus trop envie de se prendre la tete, ou qu'il ait d'autres trucs en tete. Souviens toi, Choc, c'etait il y a pas si longtemps, les sueurs froides pre-oraux :bravo2: