View
20
Download
0
Category
Preview:
Citation preview
RAPPORT PROJET MATLAB « Petit Papa Noel»
29 JANVIER 2018
Thomas Gautreau & Maxime Vendrand Maillet
1
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
Sommaire
I / Introduction
II/ Création des notes synthétisées et des temps
IV/ Création d’une enveloppe
V/ Création du filtre passe-bas
VI/ Création de la mélodie
VII/ Conclusion
2
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
I/ Introduction
Pour ce projet nous avons décidé de travailler sur la partition “petit papa noël”
et de reproduire le plus exactement possible cette mélodie. Avant de pouvoir passer
sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher
quelle musique nous souhaitions faire.
Au début du projet nous pensions faire une
musique connu est assez complexe mais
nous nous sommes vite rendu compte que la
lecture d’une partition n’était pas si facile.
Nous avons finalement décidé d’utiliser la
partition de la musique « Petit Papa Noël »,
en effet celle-ci c’est révélé être une
partition assez simple mais quand même
composé de beaucoup de notes ainsi que
d’accords.
Nous avons alors traduit chaque note
de la partition pour que l’on puisse connaitre
les notes à créer sous Matlab. Nous avons
également traduit les accords présents sur la
partition qui sont en réalité plusieurs notes de
musique joué en même temps. Dans la suite
nous allons voir les différentes techniques
utilisé pour la création des notes et l'ajout des
différents effets et filtres que nous avons
ajoutés à notre musique.
Figure 1 : Partition "Petit Papa Noel""
3
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
II/ Création des notes et des temps
Pour pouvoir créer notre mélodie nous avons dû dans un premier temps créer
toutes les notes présentes dans notre partition, pour cela nous avons rassemblé les
fréquences de chacune des notes sur 3 octaves différents dans des matrices. Les
matrices ont l’avantage de simplifier le codage et de réduire considérablement la
longueur de celui-ci.
Une fois les fréquences trouvées et mises dans les matrices respectives de
chaque notes, nous avons fait appel à la fonction synthèse-son () qui nous permet
d’ajouter des harmoniques à notre note, en effet lors de la création de la note celle-
ci est un son qualifié de pur c’est à dire que celui-ci ne contient qu’une unique
harmonique.
Observation des figures : Sur les deux figures si dessus nous pouvons observer un Do3
joué au piano sans synthèse additive ainsi qu’un Do3 avec synthèse additive. Nous
remarquons très vite une différence entre les différents signaux. En effet sans le
synthétiseur nous remarquons que la note ne possède qu’une unique harmonique
(son pur). Sur la figure suivante nous remarquons que la note possède maintenant
plusieurs harmoniques et que son tracé temporel est légèrement plus affaibli.
Figure 2 : Do3 sans synthétiseur Figure 3 : Do3 avec synthétiseur
4
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
La fonction synthèse-son () fonctionne en réalité assez simplement, en
effet celle-ci va parcourir la note pour prendre sa première harmonique et lui
en ajouter une nouvelle. Comme cette fonction utilise une boucle for nous
allons lui ajouter des harmoniques jusqu'à que nous ayons atteint le F
maximum correspondant à notre octave maximal.
Cette fonction prenant 4 paramètres (fréquence de la
note/Amplitude/Période de la note/ Fréquence d’échantillonnage)
nous permet d’obtenir une note plus mélodieuse à l’oreille, cela se
traduit par le fait que nous ayons maintenant un nombre d’harmoniques
plus important sur la note.
Nous avons également créé quatre matrices pour nos amplitudes, pour
chaque amplitude correspond une octave de note. Voilà pourquoi chaque note est
caractérisée par plusieurs paramètres complexes dont l’amplitude est l’un des
facteurs les plus importants. Une autre étape très importantes du projet et de créer
des temps différents pour les notes, en effet dans notre partition nous avions des notes
de différentes longueur temporel (blanche/noir/croche/demi-croche …).
Pour ce faire nous avons dans un premier temps trouvé le BPM (Battement par
minute) de notre musique, soit 85 pour petit papa noël, que nous avons divisé par 1/60
pour trouver le nombre de battement en 1 seconde. Finalement nous avons obtenu
un temps de référence T0=0.71. Ensuite il nous suffit de multiplier ou diviser ce temps
par différentes valeurs pour obtenir des notes de durée plus ou moins longues, ainsi
nous avons créé des durées pour des blanches (2t), des noires (1t), des croches (0.5t),
demi-croche (0.25t).
Une fois toutes nos notes obtenues grâce à cette fonction nous avons utilisé une
nouvelle fonction nous permettant de créer une enveloppe que nous appliquerons
une nouvelle fois à chaque note. Nous traiterons l’application de l’enveloppe dans la
prochaine partie.
5
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
III/ Création des accords
Lors de la lecture de la partition nous nous sommes rendu compte qu’en plus
des notes correspondant à la mélodie nous avions également des accords. Un
accord est en réalité une addition de notes. En effet lorsque plusieurs notes sont jouées
en même temps, on obtient une composition de notes ou plus simplement un accord. La traduction des accords c’est fait assez rapidement grâce à un site qui nous donnait
respectivement les notes jouer dans un accord.
Nous avons eu quelques problèmes lors de la création des accords, car parfois nous
avions un accord de 3 notes qui devait durer 4 temps. Nous avons alors dû créer un
nouveau T pour les accords afin que chaque accord ou addition d’accords dure bien
4 temps. En effet parfois nous avions plusieurs accords sur une même mesure, dans ce
cas-là nous avions un nombre de note important que nous devions quand même faire
tenir 4 temps.
Figure 4 : Les accords de piano
Figure 5 : Signal et harmoniques d’un accord
6
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
Observation de la figure : Sur la figure 5 ci-dessus nous pouvons observer le signal
synthétisé d’un accord. Celui-ci possède une amplitude plus importante sur son tracé
temporel en fonction du temps. Cela est surement dû au fait que nous avons en fait
additionné plusieurs notes entre elles. Les harmoniques sont également plus
nombreuses, en effet ici nous retrouvons les différentes harmoniques des notes
additionnées.
Les accords ayant été créé à partir de notes synthétisées nous n’aurons plus qu’à lui
appliquer l’enveloppe dont nous verrons le fonctionnement dans la partie suivante.
7
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
IV / Création de l’enveloppe
Nous avons décidé de rajouté une enveloppe ADSR à chacune des différentes
notes que nous avons créés. Cette enveloppe ADSR est l’une des plus courante dans
les synthétiseurs. Ici nous l’avons synchronisé avec un clavier et nous pouvons alors
moduler le son de chaque note avec quatre paramètres :
Attack/Decay/Sustain/Release.
Observation de la figure : Sur la figure ci-dessus nous pouvons observer l’évolution de
l’enveloppe ADSR au cours du temps. Nous observons également les différentes
étapes de cette enveloppe qui constitue ses paramètres.
Le paramètre Attack décrit la durée nécessaire pour atteindre le niveau
maximal après le début de la note, puis le paramètre Decay qui nous indique la durée
nécessaire pour redescendre jusqu’en phase d’entretien. Sustain est quant à lui le
niveau stable de la note, qui est conservé tant que la touche du clavier est enfoncée.
Enfin le paramètre Realase qui indique la durée nécessaire pour que le niveau diminue
jusqu’à revenir au zéro initial. Plus généralement on utilise cette enveloppe afin de
décrire l’évolution du volume au sein de la note. La personnalisation des différents
paramètres nous permet d’obtenir une note d’instrument bien personnalisé.
On peut par exemple obtenir des sons plus percussif, ou modifier l’évolution du timbre
de la note grâce à la fréquence de coupure.
Figure 6 : Enveloppe ADSR
8
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
Nous avons décidé d’appeler notre fonction enveloppe “env”, celle-ci est créé
à partir d’une fonction Matlab bien connu de ses utilisateurs “interp1”. Celle-ci est une
fonction qui renvoie des valeurs interpolées d’une fonction 1D à des points de
requêtes spécifiques. L'interpolation linéaire par morceaux consiste à chercher
l'ensemble des polynômes de degré 1 qui passent par deux points successifs du
support d'interpolation ; en d'autres termes, on recherche les segments de droites
successifs entre 2 points.
Grâce à un site s'intéressant aux points caractéristiques d’un piano nous repérons les
coordonnées des points caractéristiques de la courbe pour créer 2 vecteurs : un
vecteur des amplitudes A = [0 1 0.5 0.2 0] et un vecteur des temps T = [0 0.1 0.2 0.5 1.4].
Nous devons modifier ce dernier afin que le dernier instant corresponde à notre Tmax
du son auquel on veut appliquer l’enveloppe (durée de l’enveloppe = durée du son).
Pour cela, on procède ainsi Tm = T*Tmax/1.4. Nous en avons également profité pour
créer des attentes pour notre mélodie finale, correspondant respectivement aux
différents temps des notes.
Observation de la figure : Sur la figure ci-dessus nous avons appliqué l’enveloppe sur
un Do3 synthétisé, nous remarquons rapidement que contrairement à un Do3
classique l’enveloppe nous a permis d’obtenir un signal beaucoup plus naturelle avec
des amplitudes inférieures pour une meilleurs qualité sonore.
Figure 7 : Do3 synthétisé avec enveloppe ADSR
9
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
Finalement nous avons utilisé une dernière fonction “SonEnv” qui nous permet
de prendre une note et d’y ajouter l’enveloppe précédemment créé. Logiquement
cette fonction prend deux paramètres en compte, qui sont l’enveloppe que nous
avons créé et le son sur lequel nous souhaitons appliquer l’enveloppe. Nous avons eu
quelque problème avec cette fonction SonEnv () car lorsque nous effectuions la
multiplication des deux vecteurs nous obtenions une erreur lors de la compilation. Plus
tard nous avons découvert que pour la multiplication point par point de 2 vecteur v1
et v2 de même taille, nous devions utiliser la commande Matlab suivante : v1.* v2.
Lorsque que nous avons terminé l’enveloppe nous avons effectué une
première écoute de la mélodie sans les accords. Le résultat était assez satisfaisant mais
nous avons remarqué que certaines notes saturaient dans les aigues. Une solution
fiable et efficace a donc été d’ajouter un filtre passe-bas à notre mélodie.
Nous traiterons la création du filtre passe bas dans la prochaine partie.
10
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
V/ Création du filtre passe-bas
Nous avons décidé d’utiliser un filtre passe bas sur notre musique, qui permet le
passage des signaux situés sous une fréquence de coupure (bande passante) et qui
atténue les signaux se trouvant au-dessus de cette fréquence. Lorsque nous utilisons
ce filtre celui-ci supprime certaines fréquences ce qui crée un effet de lissage nous
donnant un son moins métallique et surtout permet de supprimer les quelques
imperfections audible sans le filtre.
Le filtre passe bas que nous utilisons fonctionne assez simplement, dans un premier
temps nous initialisons les vecteurs temps et fréquences puis à l’aide de paramètre
caractéristique d’un filtre nous créons la fonction de transfert du filtre passe bas.
Finalement nous utilisons la Transformée de Fourier centrée en 0 (fftshift) qui nous
permet d’obtenir un filtrage des basses fréquences sur une mélodie passé en
paramètre.
Observation de la figure : Sur la figure ci-dessus nous pouvons observer la fonction de
transfert du filtre passe bas dans le domaine fréquentiel ainsi que dans le domaine de
magnitude
Figure 8 : Fonction de transfert du filtre passe bas
11
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
Une fois que notre signal a été traité par le filtre passe bas nous pouvons observer sa
figure grâce à la fonction trace () de Matlab.
Observation de la figure : Sur la figure ci-dessus nous observons le signal de la mélodie
une fois traité par le filtre passe bas. Nous remarquons que celui-ci est atténué car le
filtre passe bas a atténué toutes les fréquences supérieur à la fréquence de coupure.
Finalement nous obtenons un son traité par le filtre passe bas, qui est de bien meilleur
qualité après suppression de certaines fréquence trop élevés.
Figure 9 : Mélodie après filtrage
12
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
VI/ Création de la mélodie
Pour la création de notre mélodie finale nous avons commencé par créer
deux séquences pour les notes. Pour créer une séquence il suffit de mettre toutes
nos notes séparées par une virgule dans des crochets. Le problème de cette
technique est qu’il peut y avoir des problèmes sur la taille des matrices, en effet
pour pouvoir créer une mélodie avec plusieurs séquence il faut que les matrices
des séquences soient de même taille. Pour que nos matrices soient de tailles égales
nous avons utilisé la fonction zeros () de Matlab qui permet d’ajouter une valeur (=0)
dans une matrices. Grâce à cette fonction nous avons pu moduler la taille de nos
matrices sans affecter la mélodie ou la qualité sonore de celle-ci.
Pour la mélodie des accords nous sommes parties sur le même principe que
celui des notes, nous avons créé deux séquences distinctes contenant tous les
accords. Une particularité supplémentaires que nous avons ajoutés et de multiplier la
séquence par une voleur pour augmenter ou diminuer le volume de celle-ci. En effet
lors d’un test d’écoute nous avons remarqué que les accords possédaient un volume
sonore bien supérieur à celui des notes, c’est pourquoi nous avons multiplié les deux
séquences d’accords par le facteur 0.1.
Enfin il ne nous restait plus qu’à créer une mélodie finale comportant d’un côté
la séquence 1 des notes + la séquence 1 des accords puis la séquence 2 des notes +
la séquence 2 des accords. Les matrices étant de taille identique nous n’avons eu
aucun problème de compilation.
Pour pouvoir créer un fichier .wav à partir de Matlab nous avons utilisé la fonction
audiowrite qui prends trois paramètres pour pouvoir être exécuté. En effet nous
devons dans un premier temps lui donner le nom du morceaux.wav que nous
souhaitons créer, puis la séquence à mettre sous fichier audio et enfin la fréquence
d’échantillonnage. Nous avons alors obtenue notre mélodie finale à laquelle nous
avons ajouté le filtre passe-bas pour que notre morceau soit finalement terminé.
13
Thomas Gautreau & Maxime Vendrand Maillet 2017/2018
VII/ Conclusion
En conclusion ce projet a été apprécié par notre binôme du fait qu’il nous
mette face à des choses que nous ne connaissions pas encore, comme la lecture de
partitions ou plus globalement la création musicale. Nous avons également appliqué
plus concrètement des choses que nous avions vues en maths, ce qui nous a permis
de sortir légèrement de la théorie pour se concentrer plus sur la pratique.
Nous avons quelques regrets concernant ce projet car nous aurions aimé traiter une
musique un peu plus complexe ainsi que d’ajouter des effets comme des échos ou un
chorus mais nous avons malheureusement manqué de temps.
Au final nous sommes tout de même satisfait de notre travaille et espérons que
l’écoute de notre mélodie vous plaira.
Recommended