Gilles Mathieu Stagiaire IRCAM (06 mai - 23 aöut 2002) Real-time Systems Team, work on Score Following ___________________________________________________ | | | Score Following | | Historique | |___________________________________________________| ----------------------------------------------------------------------------------------- 06-05 ----------------------------------------------------------------------------------------- Présentation sujet. Présentations co-workers. Recherche de docs. "Visite" IRCAM. lecture littérature sur HMMs ----------------------------------------------------------------------------------------- 07-05 ----------------------------------------------------------------------------------------- lecture littérature HMM et score Following. Travail sur les algos MATLAB du suivi. Réunion avec Serge Lemouton et Philippe Manoury ----------------------------------------------------------------------------------------- 10-05 ----------------------------------------------------------------------------------------- lecture littérature essai d'utilisation du score Following avec jMax ----------------------------------------------------------------------------------------- 13-05 ----------------------------------------------------------------------------------------- littérature toujours premier "plongeon" dans le code C du suivi MIDI Définition des axes de travail à privilégier ----------------------------------------------------------------------------------------- 14-05 ----------------------------------------------------------------------------------------- Structuration de la documentation Littérature lecture de code pour le suivi MIDI Tests avec code MATLAB. Réflexions sur le modèle et la topologie ----------------------------------------------------------------------------------------- 15-05 ----------------------------------------------------------------------------------------- Lecture doc / familiarisation jMax Lecture code C du suivi démo avec Andrew Gerzso sour le suivi midi Installation, config, récupération du code du suivi pour jMax et MATLAB ----------------------------------------------------------------------------------------- 16-05 ----------------------------------------------------------------------------------------- Création de la bibliographie liée au travail sur le suivi. Travail dans jMax. Création de fichiers de tests pour essayer de débuguer le plantage ----------------------------------------------------------------------------------------- 17-05 ----------------------------------------------------------------------------------------- Utilisation du premier fichier de test. Mise en évidence d'un comportement "bizarre" du système de suivi, qui semble continuer de suivre même après la fin de la partition... Création et utilisation d'autres fichiers de tests pour jMax ----------------------------------------------------------------------------------------- 21-05 ----------------------------------------------------------------------------------------- travail avec jMax, en mode debugage. Traçage du code de suivimidi.c avec gdb Réalisation et utilisation de patchs de tests pour suivimidi avec jMax Les tests sont dans le dossier ScoreFollowing/TestFiles/ Mise en évidence de certains problèmes et comportements étranges ----------------------------------------------------------------------------------------- 22-05 ----------------------------------------------------------------------------------------- Récupération, compilation et tests de la nouvelle version de suivimidi.c Tests comparatifs avec l'ancienne version ----------------------------------------------------------------------------------------- 23-05 ----------------------------------------------------------------------------------------- Tests et traçage de la nouvelle version avec le patch utilisé par Andrew et qui provo- quait le crash. Réalisation de nouveaux fichiers de tests pour essayer d'intégrer la notion de noteon et noteoff dans le suivi ----------------------------------------------------------------------------------------- 24-05 ----------------------------------------------------------------------------------------- Essais de petites modifs dans le suivimidi. Tests ----------------------------------------------------------------------------------------- 27-05 ----------------------------------------------------------------------------------------- Essai du suivi avec la modif sur le calcul des observations : dans la fonction "obscalc" de suivimidi, remplacement de la ligne ev->osbli[2] = prob_s; par : ev->obsli[2] = prob_r; Tests avec un patch utilisant "makenote" pour générer une note de pitch 0 après chaque note de la séquence. Première approche du code Matlab ----------------------------------------------------------------------------------------- 28-05 ----------------------------------------------------------------------------------------- Rencontre de problèmes pour l'instant insolubles avec le code Matlab Il doit me manquer des fichiers, je ne peux pas lancer le test... ----------------------------------------------------------------------------------------- 29-05 ----------------------------------------------------------------------------------------- Problèmes de plantage avec jMax. au bout d'un certain temps il se met à réagir très lentement au clics sur les éléments du patch... Modifs dans le code de suivimidi.c : L'argument représentant la note en entrée n'est plus uniquemement un int qui correspond au pitch : c'est une liste à 2 éléments comprenant le pitch et la vélocité. (modif faite pour pouvoir gérer les noteoffs) Ajout de code pour la gestion de ces noteoffs. modification des fonctions suivimidi_newnote et suivimidi_update. Tests du nouveau code ----------------------------------------------------------------------------------------- 30-05 ----------------------------------------------------------------------------------------- Suite des modifications dans suivimidi.c ajout d'une variable globale int newnote_occured, qui vaut 1 s'il y a eu une noteon. l'update de nouvel event ne se fait que si cette variable vaut 1 (on ne reconnait de nouvelle note que s'il y a eu un noteon pour cette note). Cela évite les problèmes de reconnaissance après la fin de la performance. Modification des patches de test en fonction des nouveaux paramètres d'entrée de l'objet suivimidi, notamment du patch de démo "midi_demo.jmax" qui ne fonctionne plus avec la nouvelle version, remplacé par new_midi_demo.jmax". Tests de la nouvelle version. premiers essais de tests avec suiviaudio ----------------------------------------------------------------------------------------- 31-05 ----------------------------------------------------------------------------------------- Nouveaux tests sur le suivimidi. Essai de suivi avec des performances contenant des erreurs per rapport à la partition. traçage / déboguage ----------------------------------------------------------------------------------------- 03-06 ----------------------------------------------------------------------------------------- Tests encore. Modification des valeurs de la variable newnote_occured. Cette variable n'est plus globale, mais élément de la structure suivimidi_t Elle ne vaut plus seulement 0 ou 1, mais est incrémentée quand une nouvelle note arrive, et décrémentée quand une note a été reconnue. Ecriture du code gérant les zig-zags (Diemo) ----------------------------------------------------------------------------------------- 04-06 ----------------------------------------------------------------------------------------- Ecriture de tests systématiques pour différents types de séquences. Etude du comportement du suivi dans différents cas. ----------------------------------------------------------------------------------------- 05-06 ----------------------------------------------------------------------------------------- Modifications dans suivimidi.c : test de validité des valeurs dans suivimidi_refill pour éviter les SEGMENTATION FAULT si on fait un refill sur un state TYPE_REST (dans ce cas la polyphonie vaut 0 et il y a une erreur si on accède à l'évenement indexé [poly-1]) essai d'ajout d'une boucle pour allumer toutes les notes d'un accord qui est reconnu ajout de compteurs pour variables statistiques en mode debug (notes jouées, notes recon- nues, taux de reconnaissance, passage dans les g_states...) Suite des tests. Tests avec différentes vitesses relatives score/performance ----------------------------------------------------------------------------------------- 06-06 ----------------------------------------------------------------------------------------- Poursuite des tests Création de fichiers de tests dédiés au suivi d'"Explosante Fixe" (première urgence) Mise sur CVS des changements effectués jusqu'ici. ----------------------------------------------------------------------------------------- 07-06 ----------------------------------------------------------------------------------------- Tests de la séquence d'"Explosante Fixe" avec une partition modélisée à double tempo. CVS check-in pour tous les fichiers de test réalisés jusqu'à présent. Test de la nouvelle version de suivimidi avec les patchs d'Explosante fixe utilisés par Andrew, sur son portable. Détection d'un problème de reconnaissance de la dernière "cue". Pb de label ? ----------------------------------------------------------------------------------------- 10-06 ----------------------------------------------------------------------------------------- Séance de tests avec la flutiste. Enregistrement de séquences pour une utilisation ultérieure. Dans suivimid.c : ajout d'un flag pour définir le niveau d'affichage de debug. ----------------------------------------------------------------------------------------- 11-06 ----------------------------------------------------------------------------------------- Récupération de nouvelles séquences pour les tests Changements dans suivimidi.c : - Dans suivimidi_newnote, le flag this->isnew est passé à 1 seulement pour les noteons - Dans suivimidi_update, quand on est dans un g-state, on envoie en sortie le pitch de la note associée, et on ne l'envoie qu'une fois; - Dans suivimidi_obscalc, prob_r reçoit rest_ok quand la velocité la note vaut 0 (noteoff) et non plus quand le pitch vaut 0. Check-in CVS des derniers changements ----------------------------------------------------------------------------------------- 12-06 ----------------------------------------------------------------------------------------- Réécriture de la fonction suivimidi_update : structure de la fonction plus lisible et optimisée commentaires "nettoyés" : plus clairs, suppression des commentaires inutiles Réunion avec Serge Lemouton et Philippe Manoury : avancement du suivi Début de création d'un objet jMax dédié à l'évaluation qualitative du suivi ----------------------------------------------------------------------------------------- 13-06 ----------------------------------------------------------------------------------------- Tests comparatifs nouvelle / ancienne version de suivimidi par la création d'un objet suivimidi_old2 correspondant à l'ancienne version Travail sur l'objet suivieval ----------------------------------------------------------------------------------------- 14-06 ----------------------------------------------------------------------------------------- Travail sur suivieval. ----------------------------------------------------------------------------------------- 17-06 ----------------------------------------------------------------------------------------- travail sur suivieval. Première version "compilable" CVS check-in correspondant ----------------------------------------------------------------------------------------- 18-06 ----------------------------------------------------------------------------------------- travail sur la fonction add_labels de suivimidi.c (pour correction bug) travail sur suivieval ----------------------------------------------------------------------------------------- 19-06 ----------------------------------------------------------------------------------------- tests et déboguage de suivieval ----------------------------------------------------------------------------------------- 20-06 ----------------------------------------------------------------------------------------- Utilisation et déboguage de suivieval tests et travail sur le "problème" concernant les varibales "alpha, in_alpha et out_alpha" dans suivimidi.c ----------------------------------------------------------------------------------------- 21-06 ----------------------------------------------------------------------------------------- dans suivieval.c : affichage des données plus claires dans les fichiers de log bug du setfilename résolu. le "error-threshold" est paramétrable par l'utilisateur CVS check-in ----------------------------------------------------------------------------------------- 24-06 ----------------------------------------------------------------------------------------- dans suivieval.c : - problème de la reallocation mémoire résolue : elle ne se fait plus en temps réel la taille est par défaut assez grande, et est paramétrable par l'utilisateur. Si le nombre d'événements dépasse cette taille, ils ne sont plus enregistrés, mais il n'y a pas de bug - nettoyage du code - un 4ème fichier est écrit, reprenant les infos des fichiers de log de manière "lisible" avec en plus toutes les infos statistiques (variance, écart-type, nb d'erreurs, % de reconnaissance ) et les conditions du test (modes utilisés, valeur du error-threshold) ----------------------------------------------------------------------------------------- 25-06 ----------------------------------------------------------------------------------------- tests des sequences d'Explosante Fixe avec l'objet Eval dans suivimidi.c : - changement du mode de traitement des trilles ----------------------------------------------------------------------------------------- 26-06 ----------------------------------------------------------------------------------------- Tests sur Pluton Création d'un objet jMax qui ajoute les cues synchronisées : suivimakecue ----------------------------------------------------------------------------------------- 27-06 ----------------------------------------------------------------------------------------- Travail sur suivimakecue.c ----------------------------------------------------------------------------------------- 28-06 ----------------------------------------------------------------------------------------- Travail sur suivimakecue.c travail avec jMax (intégration de l'objet suivieval pour les patches avec suiviaudio) ----------------------------------------------------------------------------------------- 01-07 ----------------------------------------------------------------------------------------- Tests du traitement des trilles avec suivimidi suivieval sort un liste avec les variables statistiques ----------------------------------------------------------------------------------------- 02-07 ----------------------------------------------------------------------------------------- travail sur suivimakecue Tests de "Pluton" avec Piano midi (Ph. Manoury) ----------------------------------------------------------------------------------------- 03-07 ----------------------------------------------------------------------------------------- tests de "En Echo" avec Donatienne. Dernière version de suivimakecue ----------------------------------------------------------------------------------------- 04-07 ----------------------------------------------------------------------------------------- suivimidi.c : Les fonctions de création du modèle sont dans un fichier séparé (suivimakenet.c et .h) ----------------------------------------------------------------------------------------- 05-07 ----------------------------------------------------------------------------------------- Tests. Ajout de patches d'aide pour les nouveaux objets du suivi. Intégration des fichiers d'aide au package. Regroupement des versions du branch CVS et du Trunk en une seule. ----------------------------------------------------------------------------------------- 08-07 ----------------------------------------------------------------------------------------- suivimakenet.c : ajout d'un ghoste state (type GREST) pour chaque silence. Max_diff est un paramètre modifiable par l'utilisateur, par le biais de suivimidi. ----------------------------------------------------------------------------------------- 09-07 ----------------------------------------------------------------------------------------- Deboguage de suivimakenet.c Changements dans le modèle : les g-rests sont modélisés avant les rests ----------------------------------------------------------------------------------------- 10-07 ----------------------------------------------------------------------------------------- Refonte du modèle : g-states et g-rests sont modélisés avant leur n-state ou rest correspondant. Changement dans les tables de transitions ----------------------------------------------------------------------------------------- 11-07 ----------------------------------------------------------------------------------------- Travail sur suivimakenet Modélisation des états en suivant un nouveau principe de polyphonie Code, tests et deboguage ----------------------------------------------------------------------------------------- 12-07 ----------------------------------------------------------------------------------------- suite travail modélisation tests, code et déboguage ----------------------------------------------------------------------------------------- 15-07 ----------------------------------------------------------------------------------------- toujours travail dans suivimakenet.c Première version qui fonctionne à peu près. Quelques problèmes encore dans la reconnaissance des "alive_notes". Réécriture de addevents : nombreux if emboités remplacés par un switch, plus général et plus lisible. Nouvelle politique de traitement des événements. ----------------------------------------------------------------------------------------- 16-07 ----------------------------------------------------------------------------------------- suivimakenet.c : Récupération "correcte" des alive-notes déboguage ----------------------------------------------------------------------------------------- 17-07 ----------------------------------------------------------------------------------------- suivimakenet.c : suite et fin déboguage : le modèle crée correspond à la "spécification" du modèle souhaité ----------------------------------------------------------------------------------------- 18-07 ----------------------------------------------------------------------------------------- Déboguage (segmentation fault au suivi) ----------------------------------------------------------------------------------------- 19-07 ----------------------------------------------------------------------------------------- Déboguage ----------------------------------------------------------------------------------------- 22-07 ----------------------------------------------------------------------------------------- Déboguage. Dans la structure realevent_t, le membre ev_fro_seq devient un (event_t *) au lieu d'un (event_t). Bug fixé. ----------------------------------------------------------------------------------------- 23-07 ----------------------------------------------------------------------------------------- Déboguage sur le refill. changements dans suivimakenet.c Début d'adaptation de suivimidi au modèle (changements dans obscalc) ----------------------------------------------------------------------------------------- 24-07 ----------------------------------------------------------------------------------------- déboguage du obscalc ----------------------------------------------------------------------------------------- 25-07 ----------------------------------------------------------------------------------------- déboguage - tests ----------------------------------------------------------------------------------------- 26-07 ----------------------------------------------------------------------------------------- travail dans makenet. Pb dans le refill ----------------------------------------------------------------------------------------- 29-07 ----------------------------------------------------------------------------------------- déboguage refill ----------------------------------------------------------------------------------------- 30-07 ----------------------------------------------------------------------------------------- déboguage refill - tests. gestion des alive-notes dans le refill ----------------------------------------------------------------------------------------- 31-07 ----------------------------------------------------------------------------------------- déboguage - tests Première version de l'objet suivimapper ----------------------------------------------------------------------------------------- 01-08 ----------------------------------------------------------------------------------------- Objet suivimapper terminé. Rédaction de doc en LaTex ----------------------------------------------------------------------------------------- 02-08 ----------------------------------------------------------------------------------------- Doc LaTex ----------------------------------------------------------------------------------------- 05-08 ----------------------------------------------------------------------------------------- Doc LaTex Ajout d'un "poids" pour les attaques dans suivimidi ----------------------------------------------------------------------------------------- 06-08 ----------------------------------------------------------------------------------------- Doc Déboguage du système de ATTACK_WEIGHT ----------------------------------------------------------------------------------------- 07-08 ----------------------------------------------------------------------------------------- Doc Ajout de fonctions pour forcer suivimidi à avancer ou reculer ----------------------------------------------------------------------------------------- 08-08 ----------------------------------------------------------------------------------------- Doc Update des fichiers d'help et de démo