Des séances de cours (de novembre à janvier) permettront de présenter différentes approches de l'improvisation avec ordinateur, et différentes conceptions de l'interactivité en musique, avec demonstration de logiciels et projection de videos. Les formats musicaux utilisés midi et audio seront également décrits.
Choix du langage de programmation libre.
Le piano-roll du haut donne une vue d'ensemble du fichier midi (style rock). En bas à gauche, un fichier midi créé par le programme. On reconnaît deux accords de guitare A et B du fichier d'origine (zoomé en bas à droite).
Des séances de cours (de novembre à janvier) permettront de présenter les formats musicaux utilisés (midi et audio), et différents logiciels d'édition et de création musicales dont on analysera les fonctionalités et les interfaces. Les extensions proposées dans le projet auront pour but de remplacer le traitement de fragments musicaux préenregistrés réalisés par ces logiciels, par la création de fragments musicaux nouveaux calculés pendant l'exécution du programme. Différents algorithmes seront présentés.
Choix du langage de programmation libre. On verra plus particulièrement les possibilités musicales de Lisp ou Scheme d'une part, et de Java d'autre part permettant de programmer des applications musicales tournant sur le Web (à l'aide de l'API Javasound du langage Java).
Une première approche consistera à calculer les boucles sonores en fonction d'algorithmes utilisant des grammaires formelles. Une deuxième approche introduira dans le processus une notion d'apprentissage, c'est-à-dire que l'utilisateur pourra jouer de la musique sur un clavier et modifier le comportement de l'ordinateur en fonction de ce qui est joué.
Dans les séances de présentation du projet (qui se dérouleront de novembre à janvier), les différents formats musicaux seront abordés (midi ou audio), et des utilitaires de traitements musicaux seront présentés. Le choix du langage de programmation pour le projet est libre, mais on verra plus particulièrement les possibilités musicales de Lisp d'une part, et de Java d'autre part, dans le but de programmer des applications musicales tournant sur le Web (à l'aide de l'API Javasound du langage Java).
Le programme consiste à combiner des fragments musicaux échantillonnés, d'une manière analogue à la technique utilisée dans les musiques électroniques actuelles (house, techno, hip-hop), mais en généralisant et en automatisant les procédures de combinaison. Ces fragments sont rangés dans des tables qui seront mises à jour au moyen d'interfaces adéquats.
Des maquettes en Commun Lisp seront présentées. Le langage de développement du projet est libre. Mais on envisagera sa programmation en Java, pour réaliser des générateurs musicaux sur le Web.
Analyse de corpus musicaux. Recherche de régularités dans des corpus musicaux, représentés ou non par des fichiers Midi, puis automatisation de ces procédures de recherche. Divers corpus musicaux seront proposés (formules de rythme aksak, grilles de jazz), ainsi qu'un corpus non musical de dessins vanuatu à traiter selon la même approche.
Générateurs musicaux : Il s'agit d'implémenter un ensemble de règles permettant d'engendrer des séquences musicales dans un style donné. Divers exemples de règles seront proposés aux étudiants (chorals dans le style de Bach, improvisation Jazz, musique contemporaine). Les résultats (notation musicale et contrôle de synthétiseur) seront traités soit en les traduisant dans un format existant (MidiFile pour les séquenceurs, ou format PatchWork), soit en réalisant les outils adaptés au matériel utilisé.
Quantification : Le problème consiste à traduire une séquence musicale enregistrée sous forme de MidiFile en données exploitables pour la notation musicale. Ce problème revient à calculer une approximation des durées exprimées en millisecondes qui sont contenues dans le fichier, pour obtenir des durées ayant entre elles un rapport simple. Plusieurs méthodes seront proposées.