Interaction à clavier intégré pour la composition musicaleSTUBER Louis - LESPINET Rémi - GALAN ALFONSO Rémi IntroductionLa composition musicale assistée par ordinateur est aujourd’hui facilitée par de nombreux logiciels. Il en existe de nombreux types, dont font partie les éditeurs de partitions (qui permettent de composer des partitions sur l’ordinateur) et les séquenceurs musicaux (qui enregistrent des instructions musicales et les jouent). Dans ces cas, l’utilisateur peut composer de la musique en indiquant les notes à utiliser, soit à la souris/clavier, soit en branchant un clavier numérique. En revanche, ces logiciels sont développés pour l’interaction WIMP, qui est très peu adaptée à la saisie de notes. Ils permettent, néanmoins, d'utiliser un appareil MIDI externe. La plupart des utilisateurs de ces logiciels utilisent d’ailleurs un clavier numérique, qui est soit positionné devant l’écran (ce qui est encombrant) ou à proximité (ce qui occasionne du homing). Nous souhaitons donc concevoir une interaction permettant à un artiste d’écrire des partitions musicales effaçant ces problèmes et contenant en particulier un clavier intégré. Cette interaction a été baptisée Diamond Play en référence aux outils utilisés pour sa conception. Profil de l'utilisateurL'utilisateur de la Diamond Play cherche un comportement semblable à celui des éditeurs de partitions. Ces logiciels se présentent sous de multiples formes et sont utilisés pour de multiples tâches, allant de la simple composition de partitions à l’élaboration d’un vrai fichier sonore. Les échantillons de sons utilisés sont d’origines diverses (banques de sons, enregistrements physiques …), mais l’écriture se fait note par note : toutes les notes présentes dans la partition ont été introduites par l’utilisateur, soit au clavier, soit à la souris dans les interactions WIMP. Deux exemples de logiciels concernés sont Finale Notepad (éditeur de partitions possédant une version gratuite populaire) et LMMS (logiciel polyvalent libre et gratuit permettant aussi de composer des pistes note par note). Par ailleurs, de très nombreux logiciels utilisent une interaction WIMP alliée au branchement d’un clavier et pourraient bénéficier d’une nouvelle interaction, comme les logiciels d’apprentissage du piano ou de simulation de synthétiseurs. L’idée est de brancher son piano numérique à son ordinateur pour bénéficier de fonctionnalités supplémentaires. En revanche, d’autres façons totalement différentes existent pour composer de la musique (mixage, montage d’enregistrements ...), mais nous ne nous y intéresserons pas. Limitations des interactions WIMPSouris ou clavier ? Dans les logiciels actuels, l'introduction de nouvelles notes sur la partition peut se faire de deux manières :
L'interface de l'éditeur de partitions Finale Notepad 2012, où l'utilisateur entre les notes à la souris. ObjectifsL'utilisateur veut garder les avantages d'utiliser un éditeur de partitions :
Sans la souris, l'utilisateur devra pouvoir accéder à ces fonctionnalités via des boutons/gestes appropriés. , , , , , Description de la solution envisagéeNous sommes dans une interaction au toucher direct. Avec la souris : sélectionner directement des notes sur la partition, fonctionne assez bien pour les utilisateurs experts du logiciel Mais pas proche de la nature : le compositeur sait jouer du piano et a pratiqué plusieurs années Retour d'informationQuand l'utilisateur appuie, la table lui envoie un retour graphique et sonore très important. L'utilisateur ne doit pas attendre à chaque note jouée. Modes Partition et SynthesiaAffichage des notes interactif type "Synthesia" Mode Partition : La vraie partition est directement affichée sur l'écran. Mode Synthesia : Les notes sont affichées façon "Synthesia" au dessus du piano (cf illustration). L'axe vertical représente l'échelle temporelle. Lorsque l'utilisateur introduit de nouvelles notes, des bâtons représentant ces notes apparaissent et les précédentes sont décalées plus haut. Dans l'interaction WIMP, aucun logiciel ne combine les deux. Les logiciels d'édition utilisent plutôt l'affichage "partition" adapté à la souris, quant au logiciel Synthesia, il se manipule uniquement avec un clavier branché à l'ordinateur (peu d'options disponibles en dehors de l'insertion de notes). Comparatif
Ainsi, l'interaction devra laisser la possibilité de repasser en mode partition, mais présentera le mode Synthesia par défaut. L'interface :Objets d'intérêt :Le piano
Le sélecteur d'octave
La partition
Objets secondaires :Le cercle Il s'agit d'un disque manipulé avec la main gauche (l'utilisateur n'aura pas besoin de beaucoup de précision pour l'activer, et préfèrera garder la main droite sur le piano) et permettant à l'utilisateur de changer les propriétés des notes qu'il joue : longueur de notes, etc.
Les différents composants de l'application. Boutons/Gadgets :
Les gestes :
RéalisationNous visualisons l'interaction comme une surface tactile avec dans l'idéal un clavier numérique intégré dans la surface. L'interaction réelle utilisée pour développer notre prototype est une Diamond Touch. Il s'agit d'une grande surface multi-touch en dévelopement. Problèmes rencontrésRéception et traitement des input (tracking)De très importants problèmes sont liés à la façon dont la Diamond Touch nous envoie les inputs de l'utilisateur: Si l'utilisateur appuie sur la diamond touch, celle ci renvoie 2 tableaux, l'un de 128 octets correspondant à la ligne, l'autre de 96 octets correspondant à la colonne. Chaque case du tableau contient un nombre (uint8) correspondant à l'amplitude de la projection sur la ligne (ou la colonne) des gaussiennes correspondant aux appuis de l'utilisateur. Ainsi l'appui en (x, y) va avoir un impact sur le nombre à l'indice x de la ligne renvoyée par la diamond touch et le nombre à l'indice y de la colonne. Cela pose un problème : lorsque l'utilisateur appuie à deux endroits (x1, y1) (x2, y2) en meme temps, il y a une ambiguïté sur les endroits ou il a appuyé. Ces deux choix sont possibles :
Il y a aussi un problème lorsque deux points ont leur abscisse ou leur ordonnée qui se croise (qui peut être résolu en utilisant la vitesse de ces points). On peut aussi ajouter le problème que la mise à jour des ligne et des colonnes n'est pas synchronisée, c'est à dire que lorsque l'on appuie sur la table, il est possible que les nouveaux appuis soient pris en compte dans la ligne suivante renvoyée mais non dans la colonne. Ces problèmes, bien que nécessitant une attention particulière dans l'implémentation, ne sont pas très génants dans beaucoup d'applications. En revanche, pour une interaction basée sur un piano, ce phénomène est très génant. En effet, nous voulions conserver une interaction aussi proche que possible d'un piano, et les pianistes sont habitués à appuyer simultanément pour faire un accord. Dans ce cas précis, il est absolument impossible de déterminer l'accord effectué si il utilise des touches noires. DifficultésNous avons choisi d'utiliser très peu de bibliothèques externes dans ce projet. Nous utilisons OpenGL et glfw pour la partie graphique ainsi que rtmidi et timidity pour la gestion du son. Cela nous a permis d'apprendre des choses dans différents domaines, avec la contrepartie de représenter une charge de travail très importante (plus de 6000 lignes de codes, beaucoup plus que tous nos autres projets ENSIMAG). Solution mise en placeEn clair, la Diamond Play ne détecte pas toujours correctement les positions des appuis de l'utilisateur. Ce problème augmente en fonction du nombre d'appuis simultanés effectués par l'utilisateur. Un algo de tracking a été implémenté mais les problèmes exposés précédemment le rendent beaucoup trop couteux en temps de calcul et très complexe à développer (disjonction de cas). En pratique, si l'utilisateur effectue plus de 2 appuis en même temps (à 1/40ème de seconde près), la Diamond Play calculera mal leur position et pourra déclencher des actions indésirables. Afin de pallier ce problème de manière simple, nous avons implémenté une méthode de tracking très naïve et choisi de faire des sacrifices sur les choix possibles de l'utilisateur. Dans le cadre d'une interaction qui serait réellement commercialisée, il faudrait remplacer la Diamond Touch (matériel utilisé pour la Diamond Play) par une interaction adaptée à l'utilisation de plusieurs doigts. Dans notre prototype :
L'algorithme actuel est composé de plusieurs étapes:
ÉvaluationL'usage de l'interaction est facile et intuitif, notamment grâce aux gestes qui suivent les conventions ordinaires. L'utilisateur comprend très vite le principe de l'affichage "Synthesia" en appuyant sur quelques touches. Comparaison avec l'interaction WIMPL'interaction classique WIMP consiste à manipuler, à la souris, un logiciel d'édition de type Finale Notepad 2012 présenté en introduction. La Diamond Play présente des boutons et se manipule au touché direct (mieux que la souris). Donc elle permet, en théorie, de réaliser les mêmes actions au moins aussi vite que l'interaction WIMP. Quand devient-on expert ?Le niveau d'expertise de l'utilisateur correspond à ses capacités à manipuler la partition et l'éditer. L'utilisateur ne devient donc malheureusement pas plus vite expert que sur l'interaction WIMP. Problèmes liés au toucher :La Diamond Play présente les défauts "habituels" des interactions au toucher.
Problèmes liés au "piano" intégré à la surface.
Le fait d'utiliser une surface tactile au lieu d'un vrai piano est génant mais pas suffisamment pour invalider l'interaction. Une solution consisterait à remplacer la partie piano de la surface par un vrai piano physique. (Interaction à clavier vraiment intégré.) LatenceLa fréquence de la Diamond Play est faible (40Hz) et occasionne une certaine forme de latence.
Au final, la latence est peu gênante bien que très perceptible. Elle est ressentie par exemple lorsque l'utilisateur joue un accord. Mais c'est le rôle de retour d'information qui est important : l'utilisateur appuie sur une touche et veut savoir le plus vite possible si elle a été prise en compte, ce qui est le cas sur la Diamond Play. Protocole d'expérimentationNous avons évalué les 2 aspects améliorés par la Diamond Play :
On teste les performances de différents utilisateurs (sujets) devant composer une certaine musique avec les deux interactions. Tous les sujets s'y connaissent en musique mais ne sont pas forcément compositeurs. On leur demande de "recomposer" un air connu (un air dont ils connaissent les notes) et on mesure le temps nécessaire pour y arriver. Attach:graphe.jpg Δ
Résultats :Transfert d'apprentissage :
En pratique, les compositeurs de musique savent tous jouer des notes au piano. De ce fait, la Diamond Play leur paraîtra plus naturelle que l'interaction WIMP. Efficacité :
Ce phénomène était déjà connu, puisqu'on sait que certains compositeurs branchent un piano à leur ordinateur pour introduire les notes. L'introduction sur un vrai piano est plus rapide, puisqu'elle nécessite simplement d'appuyer sur une touche correspondant à la hauteur, alors qu'il faut déplacer la souris verticalement dans une interaction WIMP (indirection + taille réduite). La Diamond Touch, multi-utilisateurs ... mais pas multi-doigts. ConclusionNous pensons avoir imaginé une interaction viable mais techniquement difficile à réaliser. Techniquement,
La Diamond Touch ne permet pas de réaliser cette interaction correctement. Il s'agit clairement d'une interaction adaptée à plusieurs utilisateurs, mais n'utilisant qu'un seul doigt. Les bénéfices pour l'utilisateur sont notables.
En ce qui concerne le projet lui-même, nous avons beaucoup réfléchi à l'interaction elle-même, mais avons mis un temps considérable avant d'obtenir quelque chose de fonctionnel permettant réellement de tester nos idées sur un prototype. A cause des problèmes de tracking, beaucoup d'éléments présentés n'ont pas été implémentés dans le prototype et certains sont tout simplement impossibles à réaliser sur la Diamond Touch (notamment, jouer des touches blanches et noires en même temps). |