Objectifs à atteindre 1. Pouvoir manipuler le rythme (du solfège) sous forme de texte. 2. Elaborer des mélodies (simples) à partir d'entrée rythmique, comme base de fichier d'entrée, ensuite de pouvoir compléter cette base avec le tempo et les hauteurs de notes. 3. Fournir un langage, le langage rythmique, comme base à d'autres applications rythmiques, mélodiques éventuellement harmoniques. Actuellement, seul l'objectif premier est atteint. Introduction Le logiciel réalisé permet la reconnaissance du rythme, du solfège de la Théorie de la musique. Pour analyser une mélodie (simple), on peut la décomposer en une phrase rythmique et une phrase mélodique. Je ne me suis intéressé qu'à la phrase rythmique en représentant une mesure par des symboles-notes et des symboles-silences. Pour les notes : o d ! [ f t q représentent une ronde, une blanche, une noire, une croche, une double, triple et quadruple croche. Pour les silences : - = < > k x w représentent une pause, une demi-pause, un soupir, un demi- soupir, un quart de soupir, un huitième et un seizième de soupir. Exemple d'entrée d'une mesure à deux temps à la noire /4 signifiant noire(!) : No de mesure 1 2 3 2/4 ! ! | [[ ! | d || 1 2 1 2 1&2 No de temps Première mesure : une noire pour le premier temps, une noire pour le deuxième temps (de la mesure). Deuxième mesure : deux croches pour le premier temps, une noire pour le second temps. Troisième mesure : une blanche pour le premier et le deuxième temps. Un interpréteur de rythme a été réalisé, il vérifie simplement la syntaxe rythmique en fonction des indications de mesure, ici : 2/4. L'interpréteur réalisé agit temps par temps. Le logiciel suivant, réalisé, est la partie-avant d'un compilateur de rythme ou frontal de compilation. La différence principale est de pouvoir pallier au manque de symbole entré ou à la surcharge d'une mesure. Par exemples : 2/4 ! | o || Dans la première mesure il manque le deuxième temps, dans la deuxième mesure (surchargée) la valeur maximale est la blanche. Le logiciel est << en mesure >> de compléter une mesure, puis de sérier une mesure surchargée pour rétablir une syntaxe juste : 2/4 ! ! | d || Le compilateur agit mesure par mesure. C'est l'indication de mesure, ici 2/4, qui établit la syntaxe de la grammaire à vérifier. Remarque : le compilateur n'est pas encore capable de reconnaître des 'wildcards' ou caractères spéciaux, substitutifs : '?' pour une note, '%' pour un silence. Ce qui sera nécessaire si l'on veut reconnaître des mesures avec de << véritables trous >> devant, entre les notes et non uniquement derrière les notes : 4/4 ? ! ? ! || pour 4/4 ! ! ! ! || Travaux de recherche Si un interpréteur de vérification du rythme est assez facile à réaliser, surtout si l'on utilise la programmation par objets : on représente chacune des notes et chacun des silences par des classes, on intègre ensuite en remontant, une classe TEMPS, puis on termine par une classe MESURE. Le compilateur qui agit mesure par mesure est plus difficile à réaliser. L'avantage d'un programme qui réagit mesure par mesure en complétant et en sériant la mesure est de permettre en plus d'une simple reconnaissance du rythme, une coercition de la mesure aux paramètres entrées par les indications de mesure : LA SYNTAXE DE LA MESURE. Ainsi, ce logiciel pourrait aider à résoudre les problèmes de variations dans la durée des notes ; grâce aux indications d'une mesure qui fixent sa syntaxe et aux facultés de complétion et de sériation de mesures de la partie-avant du compilateur. Voilà ce que m'a énoncé Marvin Minsky du MIT : " I would be very much interested in a program that could 'listen' to a real time midi stream‹for example, of some music improvised on a keyboard‹and then represent the music in the form of a score with conventional measures and beats, in spite of small variations of the notes' timing and changes of tempo. " << Je serais vraiment intéressé par un programme qui puisse capturer un flot d'événements midi (en temps réel), par exemple une musique improvisée à partir d'un clavier (piano), et la représente sous la forme de tempi(battements) et de mesures du solfège, et non pas sous la forme de petits changements soient du tempo, soient dans la durée des notes. >> Sa conclusion est la suivante : " I have tried to get some students to do this, but they did not make much progress! " << J'ai essayé de fournir ce travail à des étudiants, mais ils n'ont pas beaucoup progressé ! >> En résumé Même si l'approche textuelle et purement compilatoire du rythme, reprenant la théorie classique de la musique, et du solfège n'est, bien sûr, pas la panacée : - On peut sauter ou réunir des étapes en utilisant des interfaces graphiques de partition, ou ; - Rester avec une représentation des durées dans des fichiers puis leur associer une structure rythmique. Notre approche se situe entre ces deux cas, et l'on peut penser qu'en ajoutant des caractères substitutifs on puisse en partie résoudre le problème énoncé par Marvin Minsky. En effet, il manquera une couche d'analyse intelligente du rythme qui devrait permettre de simplifier ce que M. Minsky décrit comme de petits changements dans la durée des notes ; c'est-à-dire une intelligence artificielle, au-dessus du compilateur et/ou un environnement ad-hoc d'analyse. L'approche classique est bien celle qui consiste à séparer le rythme de la mélodie et a l'avantage d'être pédagogique. Ne dit-on pas << solfier >> là, où, l'on commence bien souvent par rhythmer ? ---- DRIDI Gilles gdridi@club-internet.fr