Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Comparaison de synthèses : modulation de phase et modulation de fréquence

  • 39 réponses
  • 8 participants
  • 12 704 vues
  • 9 followers
1 Comparaison de synthèses : modulation de phase et modulation de fréquence
Sujet lancé par Yohda :


Citation de Pluton35 :
Voilà, j'espère que les choses sont plus claires maintenant. Vivement que l'on s'intéresse à la modulation de fréquence (ou de phase, qui n'est pas la même chose, du moins mathématiquement)

Que veut tu dire par "qui n'est pas la même chose" ?

Parce qu'a l'oreille c'est identique à partir de quelques Hz du moins. Et j'avais lu que c'était équivalent mathematiquement.

http://cours.musique.umontreal.ca/mus1321/Notes_de_cours/Csound_04_SynthMod.html

Citation :
Mais il faut savoir que modulation de fréquence et modulation de phase sont équivalentes. En effet, moduler la phase avec la fonction m(t) revient à moduler la fréquence avec m'(t), la dérivée de m(t). Donc, si une fonction sinus module la phase, une fonction cosinus (sa dérivée) module la fréquence.

On peut facilement montrer qu'une modulation de phase d'amplitude I est équivalente à modulation de fréquence d'amplitude D = I M, sachant que la dérivée en fonction du temps t du sinus de (ω t) est le cosinus (ω t) multiplié par la fréquence angulaire ω :
(sin ω t)' = ω cos ω t


Ainsi, en dérivant par rapport au temps le signal modulant la phase

Φ = I sin(ωM t )

on obtient le signal modulant la fréquence :

Φ' = I ωM cos(ωM t )


Ce qui donne l'expression suivante pour y :
y = A sin[ (ωC + I ωM cos(ωM t )) t ]




[ Dernière édition du message le 05/08/2010 à 10:07:47 ]

Afficher le premier post
31

Je suis pas assez callé sur la question...en tout cas lorsque fm=fp on obtient bien directement la decomposition en série de fourier d' un signal périodique de période 1/fm

[ Dernière édition du message le 24/08/2010 à 20:46:40 ]

32

Pour en revenir à la question initiale, l'une des conclusions dès le premier post était que pour une fréquence de modulation sinusoïdale, les deux types de modulations sont équivalents (avec quand même un déphasage quelque part).

Après quelques petits calculs, je me suis fait un petit script Scilab. Celui-ci me permet pour l'instant de générer les modulations, de modifier les paramètres (Fp, Fm, m), de visualiser la forme temporelle et le module du spectre, et d'écouter en stéréo d'un côté la PM de l'autre la FM. Accessoirement, cela permet aussi de constater l'effet du repliement quand l'indice de modulation induit des fréquences > fe/2.

On constate bien que les formes temporelles sont légèrement différentes et que les module des spectres sont identiques.

A l'écoute au casque, les deux sons me paraissent identiques, mais le positionnement par rapport au centre varie en fonction des paramètres. 

On peut évidemment arriver à ces conclusions de façon purement mathématique, mais je trouve que l'expérimentation a aussi de bons côtés, notamment quand on veut faire de la musique.

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)

33

Oui oui, je suis d'accord...ce qui compte c'est le resultat sonore...

34

Danguit, peux-tu partager ton code scilab ? merci

35

Pas de problème, sachant qu'il ne contient rien de révolutionnaire et que je ne suis pas (encore) un pro de Scilab.

Il suffit de m'indiquer où l'envoyer.

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)

36

ah. En fait, je pensais directement sur le forum. Ça peut intéresser plusieurs personnes, non ? Je me demande dans quelle mesure une section scilab sur AF ne serait pas recommandée. On pourrait s'échanger des morceaux de code qui font des sons bizarres...

37

Bon, on va essayer :

// exemple PM&FM - DQ 20100825 -
// Init
gstacksize('max');
stacksize('max');
// Prélim
fs=44100;
dt=1/fs;
npts=2^16
npf=npts/2;
npgr0=500; // Par défaut : loupe pour graphe temporel
df=fs/npts;
fr=[1:npf].*df;
ts=[1:npts].*dt;
// Param init
f0=100*sqrt(5);
fm=1000//*sqrt(2);
pham=1//2.4048;
choix=1;
// Boucle Calcul
while choix==1
  clf(0); clf(1);
  Sp1=[]; xmpm=[]; xmfm=[]; Stereo=[];
  txt=["Porteuse";"Modulation";"Indice"];
  sig=x_mdialog('Paramètres Modulation',txt,[string(f0);string(fm);string(pham)])
  f0=evstr(sig(1))
  fm=evstr(sig(2))
  pham=evstr(sig(3))
  param='Fp='+sig(1)+'Hz - Fm='+sig(2)+'Hz - Ind='+sig(3);
  Bp=2*(pham+1)*fm // Estimation grossière de la bande
  // Signaux
  xmpm=cos(2*%pi*fm*ts);
  xmfm=sin(2*%pi*fm*ts);
  Stereo(1,:)=cos(2*%pi*f0*ts+pham*xmpm); // PM
  Stereo(2,:)=cos(2*%pi*f0*ts+pham*xmfm); // FM
  //Spectre
  Sp1=fft(Stereo(1,1:npts)); // Fenêtre rectangulaire pour l'instant
  Sp1=Sp1(1:npf);
  // Essai d'optimisation de la fenêtre temporelle
  [ma,ka]=max(abs(Sp1));
  npgr=min(max(5/(ka*df)/dt,npgr0),npgr0*5);
  //Graphe Temporel
  subplot(2,1,1)
  xtitle(param,'t (s)');
  coul='b';
  if Bp>fs/2 then
    coul='r'; // Attention au repliement !
    legends('Attention au repliement !',1,2);
  end  
  plot(ts(1:npgr),Stereo(1,1:npgr),coul);
  //Graphe Spectre
  subplot(2,1,2)
  xtitle('Spectre','F (Hz)');
  plot(fr,abs(Sp1),coul);
  a=gca(); a.log_flags = "lln";
  // Ecoute
  playsnd(Stereo,fs);
  // Fin ?
  choix=x_choose(['Autre calcul'],['Choix'],'Fin')
end
//********************

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)

38
A la vue de ton utilise ici simplement une modulation de phase. Remarque aussi que xmpm et xmfm sont les mêmes signaux au détail près qu'ils sont simplement déphases de pi/2.
39

Si je ne m'abuse, si je ne suis pas trompé dans mon petit calcul, et comme le rappelle le premier post, Citation :

Donc, si une fonction sinus module la phase, une fonction cosinus (sa dérivée) module la fréquence.

Le fait que j'ai utilisé la même variable (pham) pour les 2 peut effectivement prêter à confusion. 

EDIT du 26/8 : 

Le script a été écrit pour mon usage et n'avait pas de vocation pédagogique. Quelques précisions sont donc peut-être utiles.
Le signal modulant est cos(Om_m*ts) avec Om_m=2*%pi*fm.
Dans le cas d'une modulation de phase, on retrouve bien ce cosinus multiplié par pham correspondant à l'excursion max de phase (qui est aussi l'indice de modulation).
Dans le cas d'une modulation de fréquence, il faut intégrer le signal modulant, ce qui donne 1/(Om_m)*sin(Om_m*ts) à multiplier par l'excursion Delta_Om.

Comme l'indice de modulation est égal à Delta_Om/Om_m, on retrouve bien la même formule qu'en modulation de phase, mais avec un sinus à la place du cosinus.

 

 

Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (G. Courteline)

[ Dernière édition du message le 26/08/2010 à 09:31:29 ]

40

j'ai lu en détail les docs originales rédigées par J CHOWNING, pour vous épargner la lecture en anglais j'ai trouvé 2 sites qui résume la FM :

http://cours.musique.umontreal.ca/mus1321/Notes_de_cours/Csound_04_SynthMod.html

qui contient d'ailleurs bcp de choses : http://cours.musique.umontreal.ca/mus1321/

et

http://dept-info.labri.u-bordeaux.fr/~sm/Enseignements/Master/2/ASSM/modulation.pdf

Quand vous aurez lu (et compris) tout ça : ya plus qu'à...