synthèse de musique sous matlab

publicité
LABO 5 - 6 - 7
PROJET
SYNTHESE DE MUSIQUE SOUS
MATLAB
1.1 Introduction
Au cours de séances précédentes, nous avons appris à utiliser un certain nombre
d'outils fondamentaux en traitement du signal : générateurs (et
échantillonneurs), analyseurs, et filtres.
Ces outils vont maintenant nous permettre de modéliser et synthétiser des
signaux audio-numériques. Plus précisément, à partir d'un seul exemplaire d'une
seule note d'un instrument donné (différent pour chaque groupe), le but de notre
projet sera de recréer une pièce musicale complète utilisant cet instrument.
L'étape de modélisation du son sera, dans ces conditions, indispensable : elle
nous permettra en effet de modifier certaines caractéristiques des sons
synthétisés, comme leur durée ou leur fréquence fondamentale, tout en
conservant le timbre du son de départ.
Pour ce faire, nous aborderons successivement 3 méthodes de synthèse (et les
méthodes d'analyse associées) : la synthèse additive, la synthèse
soustractive, et la synthèse par formes d'ondes.
1.2 Rappels Théoriques
1.2.1 Caractéristiques acoustiques des sons
On caractérise souvent un son musical par :
•
Sa fréquence fondamentale (la note jouée). Un LA4 (LA dans la quatrième
octave d'un clavier de piano) a une fréquence de 440 Hz. Dans la musique
occidentale, il y a 12 notes par octave, chacune étant distante des autres d'un
demi-ton. Les notes sont disposées uniformément sur un axe logarithmique
en fréquence : un demi-ton correspond à un rapport de fréquence de
2^(1/12) Hz.
•
Sa durée. Un son musical est souvent composé d'un transitoire d'attaque,
pendant lequel le son s'établit dans l'instrument et se transforme en son de
2
LABORATOIRES DE TRAITEMENT DU SIGNAL
régime, puis meurt dans un transitoire d'extinction. On parle souvent d'ADSR
: attack-decay-sustain-release.
•
Son timbre, caractérisé principalement par l'évolution temporelle de son
enveloppe spectrale. L'enveloppe spectrale du son est créée par l'instrument,
qui possède souvent un ensemble de fréquences de résonances (et donc une
fonction de transfert), et par la source d'excitation (l'anche du saxophone, par
exemple), qui possède lui aussi une enveloppe spectrale. Au cours de
l'évolution (ADSR) d'un son, l'enveloppe spectrale de ce signal d'excitation
peut changer, et créer ainsi une variation de l'enveloppe spectrale du son
produit. Typiquement, il s'agira d'une atténuation des fréquences aiguës lors
de la phase de relâchement.
1.2.2 Synthèse additive
Le principe de la synthèse additive est de loin le plus simple à mettre en œuvre.
Nous commencerons donc par envisager ce mode de synthèse.
Modélisation
Les modèles spectraux occupent une place de choix en traitement du signal. La
modélisation harmonique interprète le spectre du signal en termes
d'harmoniques d'un fréquence fondamentale F0 :
t
~
x (t ) = ∑ ai (t ) cos(φ i (t )) , avec φ i (t ) = φ i (0) + ∫ i 2π FO (τ ) dτ
i
0
ou, dans le domaine discret:
i
~
x (n) = ∑ ai (n) cos(φ i (n)) , avec φ i (n) = φ i (0) + ∑ [i 2π FO ( j )]Te
(1)
j =1
i
où i est l'indice des harmoniques, et où ai(t) et i F0 (t) sont respectivement leurs
amplitudes et leurs fréquences instantanées.
Ce modèle peut être étendu aux sons plus complexes : c’est le modèle hybride
harmonique/stochastique, qui ajoute fondamentalement une composante
apériodique à l’équation précédente:
~
x (t ) = ~
x p (t ) + ~
x r (t ) = ∑ ai (t ) cos(φ i (t )) + ~
x r (t )
(2)
i
x p (t ) est complètement défini par ai(t), F0 (t) et ϕ i (0), et où ~
x r (t ) est défini
où ~
par sa densité spectrale de puissance Srr ( ω ) . Tout comme les amplitudes et
fréquences des sinusoïdes, Srr ( ω ) est supposé varier en fonction du temps.
Estimation des paramètres
L’estimation des paramètres de ces modèles est d’une complexité variable, en
fonction de la complexité du signal à modéliser :
•
Si le signal est bien périodique, il suffit de mesurer, à partir d’une FFT,
l’amplitude des harmoniques. Leur phase est moins importante (en
général, l’oreille ne sera pas sensible à une déformation du spectre de
phase, tant que cette déformation ne varie pas trop dans le temps).
•
Si le signal contient une composante de bruit, l’estimation de l’amplitude
des harmoniques fournira, au mieux, un modèle de la seule composante
LABORATOIRES DE TRAITEMENT DU SIGNAL
3
harmonique. La composante de bruit devrait théoriquement être estimée
par mesure de la densité spectrale de puissance de ce qu’il reste du signal
après soustraction de ses harmoniques. En pratique, on peut parfois
estimer que la composante bruitée a une densité spectrale de même allure
que celle du signal complet (harmoniques+bruit). On applique alors un
périodogramme (ou toute autre méthode de modélisation spectrale) au
signal complet, et on suppose que le bruit compte pour une fraction de ce
spectre (à déterminer à l’écoute).
•
Enfin, si le signal n’est pas bien stationnaire, il convient de répéter la
modélisation à intervalles réguliers. Un peut par exemple établir un
modèle harmonique pour l’attaque, un pour le maintien, et un pour le
relâchement du son.
Synthèse
La complexité de la synthèse d’un signal harmonique (éventuellement hybride
harmonique/stochastique) dépend elle aussi du signal à produire :
•
Pour un signal bien périodique, il suffira de produire une période du signal
(à l’aide de la formule (1)), et de répéter cette période, en lui affectant
éventuellement une enveloppe de type ADSR dont les coefficients seront
adaptés au signal.
•
Pour un signal possédant une composante bruitée, on créera un signal
harmonique comme dans le point ci-dessus, et on lui superposera une
composante bruitée (comme dans la formule (2)). Cette composante sera
obtenue par filtrage d’une bruit blanc avec le filtre ad-hoc.
•
Pour un signal dont le spectre évolue au cours du temps, il faudra
procéder à une interpolation temporelle des amplitudes des harmoniques.
(Au pire, il faudra également appliquer à la composante bruitée un filtrage
dynamique.)
Il est à noter que, dans ce dernier cas, l’utilisation de la formule (1) peut
conduire à un temps de calcul prohibitif, en raison du nombre
d’estimations de fonctions trigonométriques (cos). On peut éviter ce
problème en réalisant la synthèse par un procédé dit d’ additionrecouvrement de signaux à court-terme (voir figure ci-dessous) : on
commence par produire des signaux parfaitement harmoniques par IFFT.
Ces signaux sont ensuite pondérés par une fenêtre de Hanning (qui part
de 0, passe par 1 en son centre, et revient vers 0), et additionnés les uns
aux autres. L’évolution continue du spectre du signal ainsi obtenu provient
du fait que, même si chaque signal de base est parfaitement harmonique,
les amplitudes des harmoniques changent d’un signal au suivant. Il est
clair que, pour que ce type de synthèse fonctionne correctement, il est
important que les signaux additionnés soient en phase (c.-à-d. que les
parties qui se recouvrent se correspondent).
4
LABORATOIRES DE TRAITEMENT DU SIGNAL
Synthesis Frames
~
s k-1 (t)
~
s k (t)
~
s k+1 (t)
Windowing
Synthetic speech
tk-1
tk
tk+1
tk+2
(tk+1 - tk-1)/2
Fig. 1. Synthèse par addition-recouvrement
Modification de la durée et/ou de la fréquence fondamentale
Un modèle additif pur permet facilement d’allonger ou de raccourcir des sons : il
suffit en principe de produire plus ou moins de périodes.
La modification de la fréquence fondamentale est un problème plus complexe : si
on veut éviter de modifier le timbre, il faut modifier la fréquence et l’amplitude
des harmoniques, de façon à conserver l’enveloppe spectrale. Les nouvelles
valeurs des amplitudes peuvent être obtenues en échantillonnant l’enveloppe
spectrale, elle-même obtenue par interpolation des amplitudes des harmoniques
de départ.
1.2.3 Synthèse soustractive
Voir document annexe : "What Is Analogue Synthesis?", qui donne l'organisation
générale d'un synthétiseur analogique générique basé sur la synthèse
soustractive et en explique les modules.
1.2.4 Synthèse par formes d'ondes
Voir document annexe : “Synthesis Technology : Wavetable”, qui décrit les
principes de base de cette méthode.
On notera que la modification de la période fondamentale, qui est réalisée dans
la version de base par simple interpolation des formes d’ondes, ne maintient
LABORATOIRES DE TRAITEMENT DU SIGNAL
5
absolument pas l’enveloppe spectrale du signal (c.-à-d. les fréquences de
résonance de l’instrument): un son de piano à queue dont on augmente la
fréquence par simple interpolation se transforme vite en un son de piano
d’enfant.
Pour pallier cet inconvénient, il est possible d’utiliser une méthode de synthèse
radicalement différente (mais qui s’inscrit toujours dans le cadre de la synthèse
par formes d’ondes) : l’addition-recouvrement pitch-synchrone dans le domaine
temporel (TD-PSOLA : Time Domain Pitch-Synchronous OverLap Add).
Si s(n) est un signal purement périodique, il est en effet possible d'en obtenir un
signal ~
s ( n) de même enveloppe spectrale que s(n) mais de fréquence
fondamentale différente en additionnant des fenêtres d'OLA si(n), extraites par
multiplication de s(n) par une fenêtre de pondération w(n) synchronisée sur le
pitch T0 de s(n). La modification de fréquence fondamentale se fait en changeant
l'écartement temporel entre fenêtres d'OLA successives (de sa valeur T0 de
départ à une valeur T quelconque), et en réadditionnant les unes aux autres les
fenêtres d'OLA ainsi écartées (Fig. 2):
si (n) = s(n) w(n - i T0 )
~
s ( n) =
∞
∑ si (n − i (T − T0 ))
i =−∞
Cette opération résulte en effet, d'après le théorème de la Somme de
Poisson1 en une réharmonisation du spectre de si(n) (qui, si nous supposons le
signal de départ purement périodique, est indépendant de i) avec une nouvelle
fréquence fondamentale 1/T:
2π
ℑ
ℑ
si s i (n) ←→
S i (ω ) alors ~
s (n) ←→
T
∞
2π
 2π 
δ (ω − i )
T

∑ S  i T
i
i = −∞
Il s'ensuit que si la fenêtre de pondération w(n) est choisie de façon à ce que le
spectre de si(n) approxime l'enveloppe spectrale de s(n), TD-PSOLA fournit un
moyen très simple de modifier la fréquence fondamentale d'un signal périodique.
1
Suivant la formule de Poisson, la somme d'une infinité de versions décalées d'un même
signal f(t) conduit à un signal périodique dont les raies spectrales viennent se positionner
exactement sur le spectre du signal de départ:
si
ℑ
f (t ) ←→
F (ω ) ,
alors
0
n = −∞
Dirac)
2π
+∞
+∞
2π
∑ f (t − nT ) ←→ T ∑ F (n T
ℑ
0 n = −∞
0
)δ (ω − n
2π
) (où
T0
δ () est une impulsion de
6
LABORATOIRES DE TRAITEMENT DU SIGNAL
T0
L
T
Fig. 2 Le processus de ré-harmonisation spectrale de TD-PSOLA. A gauche, les signaux,
à droite les spectres correspondants. Le signal modifié (en bas) a bien la même
enveloppe spectrale que le signal de départ (en haut); mais pas la même fréquence
fondamentale.
On choisit en pratique souvent une fenêtre de Hanning ou une fenêtre
triangulaire, avec une longueur égale à deux fois la période de pitch du signal.
Une fenêtre plus large fait apparaître des harmoniques dans le spectre de si(n);
une fenêtre plus courte n'approxime que très grossièrement l'enveloppe
spectrale de s(n).
1.3 Synthèse de Musique sous Matlab
1.3.1 Analyse du son à synthétiser
Wavread permet de charger un .wav sous matlab.
Quel est la fréquence fondamentale du son étudié?
Voir sa forme d'onde et zoomer sur des détails à l'attaque, dans la partie de
régime, et lors de l'extinction. Ecouter (avec sound) le son (en entier, puis par
morceaux).
Visualiser le spectre du signal à différents endroits.
Essayer de se faire une idée de l'évolution de l'enveloppe spectrale du signal.
Utiliser specgram pour afficher un sectrogramme du signal.
Au vu de tous ces renseignements, le son vous paraît-il avoir un timbre varialble
dans le temps ? (c.-à-d. : la forme de son enveloppe spectrale varie-t-elle dans
le temps ?)
1.3.2 Synthèse additive
LABORATOIRES DE TRAITEMENT DU SIGNAL
7
Outils : fonction adsr et pwlin fournies, sous Matlab. Ces fonctions permettent
de produire facilement une courbe de type ADSR, et plus généralement
d’interpoler une fonction linéaire par morceaux.
Créer une fonction out = additive(freq, ampl, dur), qui fournisse en sortie un
signal composé d’une somme de cosinusoides dont les fréquences sont
harmoniques de la valeur donnée dans freq et dont les amplitudes sont données
par le vecteur ampl. La durée du son produit doit être de dur secondes.
Synthèse périodique pure
Sur base du spectre d’une fenêtre du signal, choisie dans sa partie la plus stable,
estimer les amplitudes des harmoniques. Générer ensuite par synthèse
harmonique pure une période du signal (à la fréquence du signal de départ : pas
de changement de fréquence). Boucler cette période et lui appliquer un ADSR
réaliste.
Vérification (ceci sera valable pour toutes les étapes suivantes): afficher les
signaux, les écouter, et comparer leurs spectres.
Synthèse harmonique avec variation du timbre
Effectuer plusieurs mesures du spectre, de façon à ce qu’une interpolation entre
les spectres mesurés permette de reproduire plus fidèlement la variation
dynamique du timbre. Réaliser une synthèse dynamique, par somme de cosinus.
Synthèse harmonique avec transitoire d’attaque
Essayer de mieux modéliser le transitoire d’attaque (soit par un bruit coloré, luimême soumis à un ADSR rapide), soit en mémorisant le transitoire et en
l’ajoutant purement et simplement au signal hamronique.
Synthèse harmonique avec modification de durée
Produire, le mieux possible, un son de même fréquence que le précédent, mais
de durée variable (dans un rapport de 0.25 à 4)
Synthèse harmonique avec modification de fréquence fondamentale
Produire, le mieux possible, un son de durée fixe, mais de fréquence variable
(dans un rapport de 0.25 à 4)
1.3.3 Synthèse soustractive
Simulation de filtres numériques du second degré « commandés en
tension »
Mettre au point, sur base de la relation simple qui lie les coefficients d’un filtre
numérique du second degré à ses pôles et zéros, un filtre passe base dont la
fréquence de résonance peut être commandée par un vecteur « tension ».
Même chose pour un filtre passe-haut.
Tester ces filtres sur le signal harmonique obtenu en 5.3.2, ainsi que su un bruit
blanc.
Synthèse soustractive
Commencer par établir le schéma de principe du synthétiseur qui devrait
permettre de produire un son s'apparentant au son reçu par le groupe. Faire
valider ce schéma de principe par l’enseignant.
8
LABORATOIRES DE TRAITEMENT DU SIGNAL
Mettre en œuvre cette méthode (ce qui nécessitera de simuler des générateurs,
des filtres, des modulateurs éventuels, et des adsr).
Synthèse soustractive avec modification de durée et/ou de fréquence
fondamentale
Modifier les paramètres du synthétiseur de façon à modifier la durée et/ou de
fréquence fondamentale du signal sans en modifier le timbre.
1.3.4 Synthèse par formes d’ondes
Bouclage
Réaliser une fonction out=loop(in, beg, end, dur) qui renvoie un signal de
durée dur par bouclage du signal in entre les échantillons beg et end.
Tester sur le signal original.
Interpolation simple
Créer une fonction qui implémente l’interpolation simple d’un signal en vue de
son changement de fréquence fondamentale.
Tester sur le signal original (rapport de fréquences entre 0.25 et 4)
TD-PSOLA
Créer une fonction qui implémente l’addition recouvrement pitch synchrone d’un
son, en vue de son changement de fréquence fondamentale.
Tester sur le signal original (rapport de fréquences entre 0.25 et 4)
Comparer les résultats à ceux obtenus au point précédent.
Téléchargement