Loading prj_rust_09_midi...

enib_small.png PRJ-Rust 09_Midi — Le format MIDI

Le protocole MIDI sert à faire communiquer du matériel électronique pour la musique.
Il existe notamment des fichiers qui reposent sur ce protocole pour décrire des partitions ; la crate midly sait les exploiter.

Étudiez alors la documentation de cette crate afin de réaliser un programme qui, à partir du fichier Isnt_she_lovely.mid, extrait toutes les notes jouées par les différents canaux (channels).
Vous réaliserez alors, dans le module note, une fonction load_midi() dont le rôle est de retranscrire le contenu d'un fichier MIDI en une partition Score.
Une utilisation minimale de cette fonction serait :
let my_score = load_midi("Isnt_she_lovely.mid")?;

Remarquez que l'analyse d'un tel fichier peut échouer ; la fonction doit envisager cet échec dans son type de retour.

Arrivé à ce stade, vous devez être suffisamment expérimenté pour exploiter la documentation de la crate midly.
Voici toutefois quelques informations éparses qui peuvent vous guider.

Dans le cas particulier de cet exemple, nous remanierons la partition obtenue pour en faire correspondre les canaux à ces instruments :

Dans ces conditions, vous devriez être en mesure de reconstituer une partition et la sérialiser dans un fichier au format json grâce à une fonction save_score() du module note.
Ce que vous avez réalisé à cette étape vous permettra de jouer le contenu du fichier ainsi généré.