charlie parker miles davisIl y a quelques semaines, il a beaucoup été question du fameux « test de Turing » de l’intelligence artificielle, où un algorithme essaye de tromper un humain au cours d’une conversation, en se faisant passer pour un autre humain.

Aujourd’hui je voudrais vous parler d’un autre domaine où les ordinateurs essayent de surpasser les humains : celui de l’improvisation musicale.

Il y a pas mal d’années – à l’époque où la musique occupait plus mes loisirs que la science – je jouais (entre autres) avec un excellent pianiste/informaticien qui m’avait parlé d’un algorithme capable d’imiter les improvisations de Charlie Parker.

Aujourd’hui j’ai voulu creuser cette question [Benjamin, si tu me lis, merci pour l’inspiration !]

L’improvisation en jazz

L’improvisation est une pratique inhérente à presque tous les styles musicaux. On la retrouve dans le rock, la pop, le blues mais aussi le classique où les grands compositeurs étaient également dit-on des improvisateurs de talent (Bach, Mozart,… notamment). Mais c’est dans le jazz que l’improvisation tient probablement la place la plus importante.

Rappelons comment tout cela fonctionne. Traditionnellement les morceaux de jazz sont toujours joués selon la même structure. Le morceau est défini par une suite d’accords (« la grille »), sur laquelle est jouée une mélodie (« le thème »). L’image ci-dessous montre les premières mesures du grand classique Autumn Leaves (Les feuilles mortes).

autumn leaves les feuilles mortes

Les notes constituent le thème, et les lettres et symboles au-dessus de chaque mesure représentent les accords. Quand on joue le morceau, on commence généralement par exposer le thème : l’un des instruments joue la mélodie et les autres accompagnent en suivant les accords. Puis vient le temps des solos : on continue à jouer la grille des accords, et les différents instruments improvisent selon un tour prédéfini. On peut répéter la grille autant de fois que nécessaire, le temps que tout ceux qui le souhaitent puissent improviser. Et en général on rejoue le thème pour conclure.

Avec une telle structure, l’improvisation constitue le plus souvent plus de la moitié des morceaux de jazz !

Qu’est-ce qu’improviser ?

L’improvisation peut se définir comme la création spontanée de contenu musical nouveau. Mais attention, ça ne veut pas dire qu’on peut ou doit faire n’importe quoi ! Comme dans tous les arts, l’improvisation jazz suit des règles.

Il existe tout d’abord des règles harmoniques : on ne peut pas jouer n’importe quelle note n’importe quand. Suivant le contexte (la tonalité du morceau, l’accord de la grille, etc.), certaines notes vont sonner mieux que d’autres, certaines vont créer des tensions, etc. De même il y a des figures rythmiques récurrentes, et d’autres qui n’ont presque aucun sens.

L’autre élément qui fait que l’improvisation n’est pas juste aléatoire, c’est bien sûr le style du musicien ! Tous les musiciens de jazz ont leurs propres habitudes, leurs façons de faire qui définissent un style. Là où Miles Davis fera quelque chose d’aéré avec des notes longues, Charlie Parker essayera de caser un maximum de notes dans chaque mesure comme si sa vie en dépendait [Disclaimer : en fait j’aime pas du tout Charlie Parker…]

Un des éléments du style, c’est aussi justement la capacité à briser de temps en temps les règles harmoniques supposées définir « ce qui sonne bien ». (Pour les fans, on peut penser à l’usage des accords M7b9 par Thelonious Monk par exemple).

La notion de grammaire

Lors d’une improvisation, la tâche principale du musicien consiste essentiellement à décider en permanence de quelle sera la prochaine note. Pour qu’un algorithme fasse de même et que ce soit vraiment de l’improvisation, il faut qu’il fasse appel au hasard.

Choisir la prochaine note, c’est principalement décider de sa hauteur et de sa durée. L’algorithme va donc devoir choisir au hasard parmi les hauteurs et les durées possibles. Il peut par exemple faire appel à une loi de probabilité

Probabilité(hauteur, durée)

qui donnerait la fréquence d’apparition de chaque type de note.

Mais nous venons de voir qu’à cause des règles harmoniques et des éléments de style, ce hasard ne peut pas être n’importe quoi. Les choix possibles pour la prochaine note vont dépendre de ce qui a déjà été joué, de l’accord sur lequel on est, de la position dans la mesure, etc. On peut capturer tout ça à l’aide de la notion de probabilité conditionnelle, en modulant la probabilité de la prochaine note en fonction du contexte. Avec la notion habituelle où P(A | B) désigne la probabilité de A sachant B, on cherche donc à définir

Probabilité(hauteur, durée   |   notes précédentes, accord, position, …)

Choisir ces probabilités, c’est définir ce qu’on appelle une grammaire. On peut définir des grammaires assez simples qui encodent les règles harmoniques de base (du genre telle note est interdite, etc.). Mais on peut aussi essayer de choisir des probabilités qui reflètent les styles des musiciens. Je vous l’ai dit, Charlie Parker va jouer beaucoup plus dense que Miles Davis, donc on peut s’attendre à ce que les probabilités d’apparition des notes courtes soient très différentes pour les deux.

Avec l’idée de probabilité conditionnelle et de grammaire, on peut comprendre comment capturer les différents styles des uns et des autres, et les faire imiter par un algorithme. Tout le problème, c’est qu’écrire une grammaire complète (c’est à dire la liste des probabilités) pour un musicien donné est extrêmement fastidieux !

L’apprentissage des grammaires

Heureusement, il y a une solution. Depuis des décennies déjà, il existe un format – le MIDI – permettant d’encoder la musique de manière simplifiée pour qu’un ordinateur soit capable de la comprendre et de la traiter. Il est alors possible de collecter des improvisations des grands maîtres en format MIDI, et de les donner à manger à notre algorithme pour qu’il apprenne tout seul les grammaires de Parker, Davis, etc.

J’écris ça comme si c’était facile, mais il s’agit d’outils algorithmiques qui peuvent être assez complexes, et que l’on retrouve dans ce champ de recherche appelé « apprentissage automatique » (machine learning). Hérité des grandes heures de l’intelligence artificielle, ce domaine cherche à créer des algorithmes capables de reconnaître des motifs récurrents dans des données, et à les apprendre pour pouvoir les restituer. Ces algorithmes (comme les plus connus : les réseaux de neurones) sont aujourd’hui utilisés partout : dans la détection des spams ou des fraudes, la reconnaissance des caractères ou des visages, et bien sûr le ciblage de la pub sur Internet.

En utilisant certains algorithmes d’apprentissage automatique sur les fichiers musicaux des grands jazzmen, on peut donc faire en sorte d’encoder leur style dans une grammaire, de manière à ce qu’un programme informatique puisse ensuite improviser en se basant sur cette grammaire.

Est-ce que ça marche ?

Si vous voulez vous rendre compte du résultat, vous pouvez vous tourner vers le logiciel Impro-Visor, créé par Robert Keller de l’Université de Harvey Mudd College. Il ne s’agit pas de la seule tentative, loin de là, mais celui-ci est léger et plutôt simple à utiliser. Et en plus il est libre !

Impro-Visor est déjà « pré-chargé » avec des grammaires de plusieurs jazzmen connus. Je me suis amusé à considérer la grille de Blue Bossa (un autre classique du genre), et à lui demander d’improviser « à la Miles Davis » puis « à la Charlie Parker ».

Ci-dessous, vous voyez les partitions obtenues. Même si vous ne lisez pas la musique, vous vous rendez compte que les styles sont différents, notamment la densité des notes.

Blue bossa Miles DavisBlue Bossa Charlie ParkerComment est le résultat, artistiquement parlant ? Clairement meilleur qu’un piètre improvisateur comme moi, mais loin du niveau des grands ! Mais après tout mon avis à moi ne vaut pas grand chose, alors Keller et ses collaborateurs ont fait une expérience un peu mieux contrôlée [1].

Ils ont considéré trois trompettistes (Freddie Hubbard, Clifford Brown et Miles Davis) et ont fait écouter à un panel de 20 personnes des vrais morceaux, et des improvisations réalisées selon les 3 grammaires correspondantes. Les sujets devaient essayer de faire correspondre chaque improvisation « informatique » avec une improvisation « réelle » des maîtres. Et 85% d’entre eux ont correctement identifié les imitations des 3 jazzmen !

Attention toutefois il ne s’agissait pas d’un véritable test à l’aveugle, puisqu’il était facile de différencier le vrai musicien de son imitation informatique.

D’après les auteurs, la principale faille des improvisations algorithmiques était notamment le manque de construction globale des solos. Si vous aimez la musique, vous savez qu’une belle improvisation est aussi beaucoup une affaire de gestion des tensions et de l’émotion sur l’ensemble du solo, et ça un ordinateur a encore du mal ! Mais on peut imaginer que des progrès soient faits dans les prochaines années.

Ainsi le vrai test serait de pouvoir tromper un jury de musiciens professionnels pour qu’ils ne sachent pas s’ils écoutent une vraie improvisation de Parker ou un imitation par un algorithme. Une sorte de test de Turing-Parker, donc ! Mais paradoxalement j’ai l’impression que ça intéresse moins les gens que le test de Turing !

Pour votre peine, je vous mets ma version préférée de Blue Bossa, par Michel Camilo

[youtube=https://www.youtube.com/watch?v=-0mNSP1452o]

Billets reliés, ici ou ailleurs

Références

[1] Gillick, Jon, Kevin Tang, and Robert M. Keller. « Machine learning of jazz grammars. » Computer Music Journal 34.3 (2010): 56-66.

Crédits

Charlie Parker et Miles Davis, William Goetlieb, Public Domain, Wikimedia Commons

Comments

  1. « Il y a quelques semaines, il a beaucoup été question du fameux « test de Turing » de l’intelligence artificielle, où un algorithme essaye de tromper un humain au cours d’une conversation, en se faisant passer pour un autre humain. »

    Personnellement, je pense que l’intelligence artificielle n’existe pas (et n’existera jamais) ; on devrait plutôt employer les termes d’obéissance artificielle. Les ordinateurs sont des calculateurs, voire des imitateurs ; mais le fait qu’ils ne vivent pas les prive d’horizon. Ils sont condamnés à être des machines dont la seule utilité est de nous servir. Ce qui leur manque c’est une conscience, une conscience propre comme pour les espèces. Pour être, une espèce demande beaucoup de temps partagé ; une machine ne connaît que ce qu’on lui donne à connaître.

    • Je plussoie. La machine peut imiter mais de là à faire de l’Art avec un grand A… Cela dit ça n’empêche pas que les programmateurs arrivent à réaliser des prouesses assez remarquables et étonnantes.

      • Ne sommes nous pas nous-même des machines qui répondons à des stimuli, codés par de l’ADN et « obéissants » à des normes qui nous sont inculquées ?
        Avec l’intelligence artificielle, nous essayons simplement de recréer ce que nous connaissons déjà. C’est-à-dire nous…

    • En même temps, qu’est ce qui fait que nous ayons une conscience ? Comment pouvez vous savoir que la conscience est et restera propre à l’homme ? Nous n’avons une conscience, un raisonnement que parce que notre cerveau est le plus développé, avec le plus de connexion inter-neurones ! (Il me semble, pour plus de précision, lire La Formule de Dieu de José Rodriges Dos Santos). Qui ne vous dit pas que les robots, ou intelligences artificielles ne seront point capable de développer une « conscience » ? De raisonner et d’apporter justement de nouvelles idées, de se développer ?
      De plus, tout nos actes, nos actions sont guidés par le moi que nous sommes aujourd’hui, créé en premier lieu par notre patrimoine génétique et par la multitude d’expérience que nous avons vécu depuis notre naissance. Si on connaissait tout cela, et qu’on réussissait à en tirer un certain algorithme, tout le monde pourrait connaitre nos actions futures ! Nous pensons que nous avons une marge d’action alors que toutes nos actions sont guidés par ce que nous sommes. Et comme c’est très difficile à définir… CQFD! C’est comme la météo: on peut savoir les grandes constantes, mais comme un simple battement d’ailes de papillon peut changer la pression, cela entraînera des déformations minimes de la perturbation en question, et déterminer justement ces battements d’ailes est ce qui est le plus difficile dans le milieu météorologiste, c’est pourquoi il y a toujours une marge d’erreur dans leurs prévisions.
      Donc, nous ne sommes que des algorithmes, alors pourquoi une intelligence artificielle n’existerai pas ? Oui, nous pouvons les coder pour qu’ils nous obéissent, mais ils pourront toutefois devenir des êtres intelligents, de notre niveau ! Ne me dites pas qu’on ne peut pas être obéissant et intelligent à la fois !
      Et pour le manque d’horizon: ils en auront peut-être un plus étendu que nous, dans la mesure où ils connaîtront beaucoup plus de choses que nous, grâce à leur mémoire presque infini.
      Je crois en une intelligence artificielle, car, sinon, pourquoi y aurais-t-il de vrai problématiques issus justement de l’amélioration de plus en plus rapide d’intelligences artificielles ?

      • « Ne me dites pas qu’on ne peut pas être obéissant et intelligent à la fois ! »

        Si on le peut et plein d’autres espèces le peuvent ; mais les machines – au risque de vous décevoir- ne le peuvent irrésolument pas. S’il me faut lire « La Formule de Dieu » pour plus de précision, autant que je commence par lire la bible, les évangiles et le coran pour atteindre à des vérités plus grandes.

        « En même temps, qu’est ce qui fait que nous ayons une conscience ? »

        Le fait d’être en vie fait que nous avons une conscience ; et cette finitude est ce qui relie tout le vivant.

        Bien à vous…

  2. Pingback: Le test de Turing-Parker : un ordinateur peut-i...

  3. Ça ne marche pas très bien. L’algorithme que vous citez ne peut apprendre que des langages dits réguliers (représentés par des automates finis probabilistes), même si on peut ruser en apprenant la grammaire dans un autre espace que l’espace d’entrée. Pour apprendre simplement des grammaires plus complexes il faudrait donner en entrée de l’algorithme des exemples négatifs, c.a.d lui donner en exemple des morceaux qui ne sont pas du jazz. Or tout ou presque n’est pas du jazz. Du bruit n’est pas du jazz. Cela rend le problème particulièrement compliqué.

  4. Bonjour,

    J’ai eu l’occasion d’assister à une présentation de Omax par Gérard Assayag, et je dois dire que le résultat est assez bluffant. La méthode qui est derrière (un type particulier d’automate, les « Factor Oracle ») est aussi très intéressante, et pose des problèmes mathématiques assez intéressant. Par exemple, on ne sait pas trop quel est le langage total que reconnait l’oracle des facteurs d’une chaine de caractères donnés….

  5. Rebonjour David …

    Encore un article très intéressant mais inquiétant à la fois … mais non , j’espère, je crois devrais-je dire … que les ordinateurs ne pourront jamais faire aussi bien que les humains … surtout dans le domaine de la musique !!!
    Et pour ma part , trombone amateur , je préfère cette version de J.J Johnson de Blue Bossa:
    http://www.youtube.com/watch?v=MKAd2sogy9w&feature=kp

    cordi@micalement

    alain

  6. Pingback: Semaine 27 | PerrUche en Automne

  7. Je souhaiterais juste ajouter un tout petit complément. Même si la loi probabilité (hauteur, durée) est inscrite à des fins de simplification, un paramètre essentiel serait pour moi à ajouter à la combinaison : la nuance, ou dynamique.
    Ce paramètre est au moins aussi important que les 2 autres, surtout lors d’une improvisation, et fait partie intégrante de la grammaire, du style du musicien.

Write A Comment

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.