5. Exemples d'application

5.1 Generalites

Avant d'examiner quatre exemples nous faisons quelques remarques generales. D'abord il doit etre dit qu'en l'etat actuel un travail de finalisation reste a faire. Sans considerer les projets futurs qu'on peut imaginer (voir chapitre 6) le code actuel doit etre nettoye (des bugs!) et stabilise.

Egalement, les analyses programmees doivent etre verifiees plus en detail. Par exemple, la determination du temps exact dans les analyses est encore imprecise pour le moment. Neanmoins nous pouvons deja sortir des analyses et experimenter avec l'environnement.

Un complement a la version existante de AudioSculpt qui parait interessant, est l'affichage de l'analyse de masquage de Terhardt. Avant, cette analyse etait possible mais les resultats etaient sauvegardes dans un fichier texte ce qui rendait leur controle difficile. Pour un utilisateur non-scientifique qui ne programme pas lui meme il est difficile de se rendre maitre de ces fichiers textes car ils prennent facilement un mega-octet de place dans la memoire.

Nous avons fonde nos analyses principalement sur le sonagramme SuperVP. Les sonagrammes alternatifs ne sont pas utilisees dans les exemples pour des raisons diverses:

* La fonction d'egalisation que nous avons donnee ici manque de verification scientifique. Une egalisation est interessante et tres utilisable, certes, mais nous devons reflechir plus avant sur ses modalites precises. L'utilisation des "break point fonctions" specifies par l'utilisateur est probablement la meilleure solution.

* La version de l'algorithme de IrrFilt qui a ete introduite dans AudioSculpt n'a pas encore ete finement verifiee au moment ou nous ecrivons ce texte. Elle sera examinee prochainement. Nous n'avons pas utilise cet algorithme dans les exemples qui suivent pour cette raison.

* Nous n'avons pas de vraies excuses pour ne pas utiliser l'algorithme de masquage Terhardt. Il marche bien. Probablement, il nous faut en peu plus de temps pour nous familiariser et experimenter avec cette visualisation.

Nous voulons dire un petit mot sur le temps de calcul. Pour l'extraction de la description suite d'accords, trois analyses FFT sont necessaires: (1) pour le calcul du sonagramme, (2) pour la detection des debuts, (3) pour la description des unites en accords. Neanmoins, le temps total de calcul reste faible. Faisons un test. Nous refaisons l'analyse du Chant de Menestrel (voir ci-dessous). Il est maintenant 19 h 09 exact. L'analyse est finie, les accords sont notes dans un fichier et il n'est pas encore 19 h 12. L'affichage en notation musicale proportionnelle dans PatchWork est a partir de la instantanee. Cela veut dire moins de trois minutes pour un son de cinq secondes. L'analyse etait faite avec une FFT sur 2048 points avec un pas d'avancement de 256 points et sur une machine PowerPC 7100/66. Sur les versions plus performantes (i.e. PowerPC 8100 / 110 voire meme le nouveau PowerPC 9100!) cette analyse se fait deux a trois fois plus vite. Le temps de calcul n'est pas vraiment un obstacle.

5.1.1 Suite d'accords

Dans la description en suite d'accords le point crucial est de bien trouver les debuts des unites sonores. La description de l'unite en termes d'accord (detection des pics) ne nous a pas pose des problemes dans ce travail.

Dans la version courante l'algorithme de la detection des evenements est tres basique. Il ne donne pas de mauvais resultats mais des ameliorations sont surement possible (une combinaison de plusieurs techniques par exemple). En plus la determination finale applique un seuil sur les maxima de la fonction de derive d'energie spectrale et ce seuil est fixe. Dans les exemples que nous montrons l'algorithme se comporte bien. Il est quand meme souhaitable d'eviter un seuil fixe et de laisser l'utilisateur le specifier.

5.1.2 Suivi de partiels

Le suivi de partiels semble faire correctement ce pour quoi il a ete concu. Les vibratos (legers et de plus grande ampleur) sont suivis et l'algorithme semble assez stable, les partiels trouves ne sautent pas ici et la. Le fait qu'un algorithme simple fasse son travail correctement est du a la reduction du spectre par le seuillage.

Parce que les amplitudes des partiels oscillent ils peuvent descendre sous le seuil. Dans le suivi les partiels sont alors coupes en deux parties. Il y a la possibilite de restaurer ces trous en liant les deux parties apres l'analyse. Dans certains cas un seul point manque et il semble evident de faire cette liaison automatiquement. Dans d'autres cas il peut veritablement s'agir d'un nouveau partiel et une liaison automatique introduirait des fautes.

Le probleme majeur que nous avons rencontre avec le suivi de partiels est l'affichage. L'analyse donne facilement des milliers de points qui sont tous affiches sur l'ecran. L'affichage du sonagramme devient lent et la manipulation difficile. Deux solutions possible: optimiser le code, reduire le nombre de donnees.

Optimiser le code doit etre fait dans tous les cas. Reduire le nombre de donnees nous place devant quelques reflexions. Nous l'avons repete plusieurs fois: la reduction demande des prises de decisions et signifie (presque) toujours une perte d'information. C'est ce que nous avons essaye d'eviter dans ce travail.

Une premiere strategie de reduction est bien sur de jeter un point d'un partiel qui a la meme frequence que le point precedent. La meme frequence, c'est a dire avec une petite tolerance. Voila la decision a prendre: quelle tolerance? Une grande tolerance enlevera les petits vibratos. Une petite tolerance ne reduira pas assez le nombre de points. Il est desormais necessaire de considerer une telle strategie. Dans le domaine de la reconnaissance de patterns des algorithmes sont proposes qui segmentent une ligne arbitraire et la decrivent par des segments droits.

Nous allons d'abord verifier quelles optimisations du code sont possibles en esperant que cela resoudra le probleme puis tester des strategies de reductions.

5.1.3 Comment ca sonne?

Dans les donnees que nous exportons vers PatchWork est comprise l'amplitudes des partiels. Ces amplitudes ne sont qu'indicatives:

* car ces amplitudes sont des moyennes. On perd toute information sur l'evolution temporelle du partiel. Ces amplitudes donnent alors seulement une indication sur la dynamique globale.

* car a cause du seuillage du spectre avec le reglage de contraste les amplitudes ne correspondent plus aux amplitudes initiales et dependent du niveau du seuil. Elles ne sont alors pas normalises.

* car les velocites MIDI qui decrivent la dynamique du son ne sont pas lineairement lies aux amplitudes dB.

Les amplitudes jouent neanmoins un role si important. Si on veut ecouter le resultat final par l'intermediaire d'un synthetiseur MIDI, les rapports des amplitudes jouent enormement dans le realisme.

Pour le moment nous sortons les amplitudes des partiels comme nous les avons calcules. Dans PatchWork ces amplitudes nous guident pour le calcul des velocites MIDI. On specifie une velocite maximale et une velocite minimale, et les amplitudes sont reparties entre ces deux valeurs. Ainsi quand on choisit sur le synthetiseur un instrument avec un timbre adequat on arrive a de bons resultats.

Nous avons parle de la possibilite de resynthetiser le son apres qu'on a reduit le spectre avec le seuillage. Cet outil est apparu tres utile. Des bruits qui ne sont pas forts et qui sont etales sur une grande plage de frequences peuvent etre reduits ou meme enleves. Une legere modification du timbre est possible si on coupe les hautes frequences du son (comparable a un filtrage passe-bas). Un seuil trop haut introduit des artefacts et une distorsion imprevisible.

5.2 Exemples

Nous avons prepare quatre exemples de trois sons differents: le premier est en enregistrement d'un piano numerique qui joue une chanson de menestrel a deux voix. Le deuxieme est un enregistrement d'une harpe africaine Nzakara rapporte par Marc Chemillier lors d'une campagne ethno-musicologique en Republique Centrafricaine, que nous analysons de deux manieres. Le troisieme est un enregistrement d'un ensemble instrumental jouant une partition de Joshua Fineberg, et dont la caracteristique est une harmonie complexe et une evolution lente.

Avant de regarder ces exemples quelques remarques sur les images donnees. Il est important de remarquer que les images sont reduites au noir et blanc. Du fait de l'absence des niveaux de gris, beaucoup d'information est perdue. L'axe de temps des sonagrammes est mesure en secondes, l'axe des frequence en Hertz. La fenetre en haut des sonagrammes montre l'enveloppe d'amplitude du son. Dans les images successives les axes de temps et de frequence peuvent etre elargit pour une meilleure visualisation.

5.2.1 Chant de menestrel

Fig. 8: la partition de Chant de Menestrel qui a ete analysee.

Le premier exemple est trop simple pour etre vrai mais c'est un bon "benchmark", un bon exemple de test. Il s'agit d'un enregistrement d'une piece pour piano jouee par un piano numerique. La partition originale est donnee dans la figure 8. Le son a ete echantillonne a 44100 kHz, comme tous les autres exemples. L'analyse FFT est faite sur 2048 points avec un pas d'avancement de 256 points, egalement comme les autres exemples. La figure 9 montre le sonagramme .

La detection des debuts place tous les marqueurs sauf le premier. Nous le placons a la main, ajoutons un marqueur a la fin et reglons le contraste pour que seules les partiels forts restent visibles (fig. 10, l'axe du temps a ete elargi). Dans cette exemple les frequences les plus fortes correspondent aux frequences fondamentales ce qui rend la transcription evidente. Il est facile de trouver des exemples ou cela ne serait pas le cas. Dans la derniere etape il est alors facile d'extraire les pics et de trouver les notes joues.

On voit que la deuxieme harmonique des notes de base dans les six derniers accords a aussi ete detectes (elles restaient egalement visibles dans le sonagramme originale). Remarquons que l'utilisateur peut les enlever s'il le desire. La transcription et notation en partition traditionnelle est montree en figure 11 (apres quantification dans KANT). A l'ecoute des resultats sur le piano numerique on retrouve exactement le meme son qu'au depart (presque exactement, des notes a l'octave ont ete ajoutees, mais elles ne se remarquent pas car elles ont une velocite faible).

Fig. 9: le sonagramme de Chant de Menestrel

Fig. 10: Les marqueurs qui ont ete places sur le sonagramme apres l'analyse de detection des debuts.

Fig. 11: le sonagramme avec le contraste regle de telles sorte que seules les frequences fondamentales sont visibles (a cause de la reduction des niveaux de gris en noir et blanc quelques traits ne sont pas visible).

Fig. 12: Les resultats finaux apres extraction des accords dans AudioSculpt et ...

Fig. 13: ... dans PatchWork, apres quantification.

5.2.2 Harpe africaine : suite d'accords

Figure 14: le sonagramme de l'enregistrement "Harpe Africaine"

Le deuxieme exemple est deja plus ose. Il s'agit d'un enregistrement d'une harpe africaine Nzakara enregistree en Centrafrique. La harpe est inharmonique, jouee avec un tempo eleve, d'une maniere polyphonique (en general, deux cordes pincees en meme temps) et dans une harmonie non temperee (figure 14).

La premiere description que nous allons tenter est celle en suite d'accords.

La detection des debuts n'est pas un succes complet: les debuts saillants sont detectes, mais au total trop de debuts sont indiques (figure 15). Notons que nous avons utilise la meme valeur pour le seuillage de la fonction de derivee d'energie que dans l'exemple du Chant de Menestrel. Cette valeur n'est pas necessairement optimale pour cet exemple. Globalement cette analyse apporte quand meme de bons resultats. Il semble que les evenement sont notes avec un leger retard. Nous devons verifier plus en detail s'il s'agit d'un probleme de programmation ou un probleme algorithmique.

Nous bougeons quelques marqueurs et en enlevons quelques uns, le contraste est reduit et l'analyse pour l'extraction des accords (detection des pics) est lancee. Le resultat est affiche dans la figure 16. Du fait de la resonance libre des cordes de la harpe, il y a des partiels qui sont tenus a travers une frontiere de marqueur. Ces notes sont coupe en deux dans l'analyse suite d'accords. Ces partiels doivent etre liees de nouveau en connectant les points qui delimitent les traits horizontaux. Quelques traits qui correspondent a des notes qui ont ete detectees faussement sont enlevees (il y en a tres peu).

Fig. 15: les resultats de detection des debuts affiches sur le sonagramme

Finalement ces donnees sont introduites dans AudioSculpt (figure 17). On retrouve assez bien ce qui pourrait etre la partition de l'enregistrement. Si on veut ecouter les resultats sur le synthetiseur MIDI il est important de les ecouter avec une precision d'un quart de ton ou meme plus precis car il s'agit d'une musique non temperee. Les legers arrondissement de frequences changent le caractere du resultat sensiblement.

Les resultats passent bien, mais la reduction qu'on fait sur la dimension du temps quand on coupe le signal en segment attenue la richesse du jeu rythmique.

Fig. 16: les resultats de l'analyse suite d'accords affiches sur le sonagramme .

Fig. 17: les resultats en notation traditionnelle dans PatchWork (affichage proportionnel)

5.2.3 Harpe africaine: suivi de partiels

Nous reprenons le son de la harpe africaine mais cette fois nous faisons un suivi de partiels au lieu d'une analyse suite d'accords. Figure 18 montre directement une partie du sonagramme avec les partiels. Les petit perles sur le sonagramme correspondent aux points detectes. Le fait que certains points sont affiches sous le trait noir du partiel du sonagramme peut s'expliquer par l'interpolation et par la reduction du contraste qui fait disparaitre certains points d'analyse. Si on verifie les resultats plus en detail ils semblent correctes.

Peu de traitement a posteriori est necessaire: deux partiels ont ete lies ensemble et sont coupes a la main.

Fig. 18: La sonagramme de la harpe africaine apres le suivi de partiels (agrandissement)

Nous pouvons exporter les donnees directement dans PatchWork ou ils sont traitees:

* les notes qui commencent en meme temps a un petit intervalle pres, sont regroupees en accord

* le rythme est quantifie dans le module KANT

Ci-dessous sont affichees les differentes etapes dans PatchWork.

Fig. 19: le patch dans PatchWork qui traite les donnees envoyees par AudioSculpt.

Fig. 20: Les resultats dans PatchWork en notation proportionnelle et avec la dynamique

Fig. 21: La quantification du rythme: le reperage des mesures

Fig. 22: Le resultat final: la notation complete des accords et le rythme.

5.2.4 Accord Complexe

Dans le dernier exemple nous traitons un son qui a ete realise par le compositeur Joshua Fineberg. Il s'agit d'un melange subtil de sons instrumentaux et synthetises. Il y a une evolution progressive: le son est plutot bruite au debut, puis une flute entre suivi d'autres instruments qui servent a colorer et enrichir le timbre. Dans la figure 23 on voit le sonagramme. Cet un exemple est difficile a cause de cette evolution temporelle et a cause de son timbre fragile : des partiels aigus qui sont importants ne sont pas clairement visible dans le sonagramme.

Fig. 23: Le sonagramme

Sur ce son nous lancons le suivi de partiels. Le contraste a ete regle pour ne pas garder tous les partiels du son et pour couper le bruit au debut. Nous ne pouvons pas mettre le seuil trop haut, sinon on coupe trop de partiels aigus. Dans figure 24 est affiche le resultats de cette analyse. On voit que le nombre de points qui sont finalement affiches est grand. Dans cette exemple l'affichage reste controlable. Certains partiels ont ete lies ensemble, d'autres ont ete separes en deux.

Fig. 24: Les partiels qui ont ete detectes, affiches sur le sonagramme

Regardons figure 25: le partiel le plus haut monte d'environ d'un demi ton. Cette changement correspond avec l'entree de la flute. Il est important de reperer cette entree car elle est tres caracteristique du son. Nous coupons alors ce partiels a la main. Encore sur cette figure on voit des partiels qui ne sont pas lies. Nous les joignons egalement a la main (fig. 26).

Fig. 25 et 26: couper et lier les partiels.

Apres ce controle et manipulation les donnees sont exportees dans PatchWork. (Fig. 27 et 28).

Fig. 27 et 28: les resultats de l'analyse de Accord Complexe dans PatchWork.

Quand nous verifions les resultats a l'oreille par l'intermediaire du clavier electronique quelques notes aigues desequilibraient le timbre du resultat. Nous les avons ensuite enlevees. Cette possibilite fait aussi partie de ce que nous avons appele l'interactivite et s'avere importante: le compositeur peut changer les resultats et, par exemple, regler la dynamique finement pour obtenir un resultat final optimal.

Le resultat final est montre en bas dans figure 28. Les lignes horizontales indiquent les durees des notes.