• Aucun résultat trouvé

5.3 Mod´elisations de la progression

5.3.3 La segmentation vue comme une progression au sein de la

Notre d´emarche consiste en premier lieu `a effectuer une segmentation reposant sur une configuration temporelle. Elle se pr´esente alors comme un parcours dont un extrait a ´et´e montr´e sur la figure 5.1 qui lie les segments successifs et s’attache donc `a donner une lecture analytique chronologique.

Nous employons une structure de graphe pour r´ealiser une organisation de l’ensemble des polycordes. Nous fixons donc un caract`ere temporel `a la segmen-

Algorithm 2Algorithme : avec sauts indiqu´es

Require: n ≥ 0 : cardinalit´e du polycorde ; k ≥ 0 : nombre de trous ; listevents :

liste des ´ev´enements musicaux

1: whileIl reste des ´ev´enements dans listevents do

2: fori = 0 jusque (n + k) do

3: Collecter Evenement[i] dans ListeEvenements

4: end for

5: Enlever premier et dernier ´el´ement de ListeEvenements

6: Collecter toutes les ensembles de notes parmi ListeEvenements de taille

n + k − 2) dans ListeCandidats

7: Remettre premier et dernier element sur tous les ensembles de ListeCandi-

dats

8: Chercher tous les ensembles de notes de ListeCandidats de cardinalit´e n

9: end while

tation, aussi bien dans la cr´eation des segments (leur organisation interne) que dans leur succession (leur organisation externe). La recherche d’une segmentation pr´ecise consiste ensuite en la d´etection d’un sous-graphe particulier.

Cr´eation du graphe des polycordes

Dans le but de d´eterminer une segmentation comme une structure chronolo- gique, nous construisons un graphe orient´e valu´e (les arˆetes sont munies d’un poids, entier positif ou nul ici) dont les sommets sont les polycordes appartenant `a une mˆeme classe d’´equivalence et les arˆetes lient ces polycordes entre eux par des op´erations de transposition, d’inversion et/ou de multiplication.

Cependant, le graphe n’est pas connexe et tous les polycordes ne sont pas forc´ement li´es au premier. En effet, deux polycordes sont li´es dans le graphe si :

– Ils se succ`edent imm´ediatement dans la pi`ece musicale (figure 5.10).

– Ils ont une intersection s´equentielle : plus l’intersection est grande, plus le poids de l’arˆete est grand (figure 5.11).

– Si un polycorde ne poss`ede pas de successeur direct ou intersectant, on le relie au(x) polycorde(s) le(s) plus proche(s) dans la chronologie. La figure 5.12 montre en pointill´es le segment qui est reli´e au premier dans le graphe.

Figure 5.10 – Deux segments successifs.

Figure 5.11 – Deux segments intersectant, ayant 2 notes communes.

Figure 5.12 – Le polycorde en pointill´e est choisi comme successeur dans le graphe du premier car ´etant le plus proche chronologiquement.

Figure 5.13 – Trois situations de liaisons entre deux polycordes dans l’ordre crois- sant de poids : 2 polycordes successifs, 2 polycordes qui se chevauchent et deux polycordes ´eloign´es chronologiquement.

La d´etermination des poids se fait selon deux crit`eres :

– La distance entre les deux polycordes, c’est-`a-dire le nombre d’´ev´enements musicaux qui les s´eparent ou qu’ils partagent (puisque deux polycordes peuvent se chevaucher). Nous fixons le plus petit poids pour le cas o `u les deux polycordes se succ`edent imm´ediatement ; un poids plus grand est af- fect´e `a l’arˆete selon le nombre d’´ev´enements musicaux qu’ils ont en commun ; finalement le poids maximal est attribu´e lorsque les polycordes sont s´epar´es chronologiquement. Nous montrons dans l’ordre croissant de poids les si- tuations qui lient les polycordes sur la figure 5.13.

– Le nombre de sauts que pr´esente le polycorde d’arriv´ee de l’arˆete : plus le polycorde d’arriv´ee pr´esente de sauts harmoniques et m´elodiques, plus le poids est important. Nous consid´erons qu’un saut harmonique est moins p´enalisant pour l’analyse qu’un saut s´equentiel : en effet, un saut harmonique n’affecte pas la chronologie de la segmentation puisqu’une note au moins de l’accord concern´e est incluse dans la segmentation. `A l’inverse, un saut

Figure 5.14 – Un extrait de graphe repr´esentant la succession de polycordes. Ce sont des t´etracordes reli´es entre eux par des arˆetes sur lesquelles sont indiqu´ees le poids.

s´equentiel implique une rupture chronologique du segment et constitue un ensemble dont nous jugeons la s´election par l’analyste plus difficile dans sa pratique.

Un exemple du graphe form´e et repr´esentant la progression des polycordes trouv´es est donn´e sur la figure 5.14. Nous disposons les polycordes successifs chronologiques horizontalement alors que les segments simultan´es (c’est-`a-dire dont le premier ´ev´enement est commun) sont dispos´es verticalement.

La segmentation recherch´ee dans le graphe des polycordes

Une segmentation optimale, selon ce qui a ´et´e ´evoqu´e plus haut, doit minimiser le nombre de sauts `a l’int´erieur des segments ainsi que minimiser dans l’ordre les distances entre polycordes et leurs intersections. Avec la configuration des poids d´ecrite ci-dessus, il faut donc trouver un sous-graphe dont la somme des arˆetes est minimis´ee. Par ailleurs, pour prendre en compte la notion de progression et en se

r´ef´erant `a l’analyse de base de Lewin, nous s´electionnons le≪premier≫polycorde

au sein d’une classe d’´equivalence, i.e. celui qui intervient le plus t ˆot dans le d´eroulement de l’œuvre.

Cependant, nous ne pouvons prendre automatiquement le ≪dernier≫ poly-

corde (i.e. celui qui intervient le plus tard) puisque nous devons tenir compte de la couverture du graphe. En effet, il est possible que la segmentation la plus couvrante ne s´electionne pas ce dernier polycorde.

Ainsi nous proc´edons comme indiqu´e sur l’algorithme 3 : nous trouvons d’abord tous les plus courts chemins entre le premier polycorde et les autres du graphe. Pour cela, nous employons l’algorithme de Dijkstra [Dij59] qui permet de trouver le plus court chemin entre deux sommets d’un graphe. Par la suite, parmi tous ces chemins optimaux pour chaque classe d’´equivalence, nous choisissons le chemin le plus couvrant qui formera la segmentation d´esir´ee.

Algorithm 3Algorithme : recherche de la meilleure progression

1: Cr´eer les listes de polycordes par classes d’´equivalence

2: Creer le graphe de progression pour chaque classe d’´equivalence

3: forChaque classe d’´equivalence do

4: Trouver le premier polycorde chronologique

5: Trouver le plus court chemin du premier `a tous les autres

6: Parmi ces plus court chemins prendre celui qui couvre le plus de notes de la partition

7: end for

8: Parmi tous les chemins optimaux trouv´es prendre celui qui couvre le plus de notes de la partition