rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre...

14
RAPPORT PROJET MATLAB « Petit Papa Noel» 29 JANVIER 2018 Thomas Gautreau & Maxime Vendrand Maillet

Transcript of rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre...

Page 1: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

RAPPORT PROJET MATLAB « Petit Papa Noel»

29 JANVIER 2018

Thomas Gautreau & Maxime Vendrand Maillet

Page 2: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 3: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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""

Page 4: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 5: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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.

Page 6: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 7: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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.

Page 8: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 9: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 10: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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.

Page 11: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 12: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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

Page 13: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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é.

Page 14: rAPPORT PROJET MATLAB - ESIEE Parisgautreat/RapportFinal.pdf · sur Matlab pour créer notre musique, nous avons dans un premier temps du chercher quelle musique nous souhaitions

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.