Principe : On part de séquences contenues dans des fichiers Midi, et on fabrique de nouveaux fichiers Midi contenant des séquences sonores, obtenues en recombinant les séquences d'origine.
On dispose de 5 séquences sonores.
|
|
|
|
|
| séquence a | séquence b | séquence c | séquence d | séquence e |
Format Midi : Quelque soit l'environnement de programmation choisi (API Javasound ou autre), les données musicales au format Midi qui sont manipulées se composent toujours de listes d'événements, chaque événement étant caractérisé par:
Piano-roll : C'est la représentation graphique la plus naturelle pour les séquence Midi. Chaque note est représentée par un segment horizontal.
Player Midi : Les fichiers Midi de résultat doivent pouvoir être joués par n'importe quel player Midi standard (TiMidity ou KMIDI sous Linux, Lecteur Windows Media sous Windows 2000).
Exemple de recombinaison pour les 5 séquences ci-dessus :
On fait les fonctions suivantes
transpose(n, liste-evts) qui ajoute n à toutes les notes des événements de la liste liste-evts
decale(d, liste-evts) qui ajoute d à toutes les dates des événements de la liste liste-evts
date-fin(liste-evts) qui détermine la date de la fin du dernier événement de liste-evts
regroupe(liste-evts1, liste-evts2, ...) qui fabrique une nouvelle liste d'événements en mettant bout-à-bout toutes les listes d'événements passées en argument, en commençant chaque liste à la date de fin de la liste précédente
On peut alors composer de la musique en recombinant et en transposant les séquences :
regroupe(a, transpose(-5, a), transpose(-10, a), transpose(2, b), transpose(2, d), transpose(7, d), transpose(12, e), c)
regroupe(a, b, c, transpose(5, d), transpose(5, d), transpose(8, e), b, f)
regroupe(d, transpose(-5, a), transpose(-5, b), transpose(7, d), d, transpose(5, d), transpose(4, b), c)