Projet C IG (1A)

IHM (2A)


VR/AR/Post-WIMP (3A)


Projet image (2A)


HCI (MoSIG 2)


Test Logiciel


Projects Docs

Interaction à clavier intégré pour la composition musicale

STUBER Louis - LESPINET Rémi - GALAN ALFONSO Rémi

Introduction


Une vidéo du système en cours d'utilisation

La 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'utilisateur

L'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 WIMP

Souris ou clavier ?

Dans les logiciels actuels, l'introduction de nouvelles notes sur la partition peut se faire de deux manières :

  • Ecrire les notes à la souris, en cliquant à l’endroit dans la partition où on souhaite les introduire (la durée des notes a été préalablement signalée au logiciel). Mais ceci demande une certaine précision; or, l’utilisateur doit constamment déplacer la souris pour placer les notes suivantes, et ceci occasionne des erreurs qui sont assez pénibles à corriger (surtout quand il aimerait finir d’écrire rapidement une mélodie qu’il a en tête). Il s’agit de plus d’une composition très peu intuitive. En pratique, la souris est surtout gênante quand on veut introduire une longue série de notes.
  • Taper une série de notes sur le clavier numérique, après avoir là aussi indiqué leur durée dans le logiciel. Il s’agit d’un moyen beaucoup plus rapide (environ 3 fois plus), et beaucoup plus intuitif. Le problème de cette méthode est qu’on a besoin d’être en face du clavier, qui est assez volumineux et n’offre plus d’accès à la souris, et donc aux options du logiciel. En particulier, on ne peut pas changer rapidement la durée des notes, ou se repositionner sur la partition. Ceci n’est donc utilisé que lorsqu’on veut taper une longue série de notes de durée déterminée, et l’on revient assez vite à la souris.

L'interface de l'éditeur de partitions Finale Notepad 2012, où l'utilisateur entre les notes à la souris.

Objectifs

L'utilisateur veut garder les avantages d'utiliser un éditeur de partitions :

  • écriture, modification, visualisation rapide des notes jouées
  • écoute en temps réel du morceau composé
  • fonctionnalités avancées (copier/coller d’ensemble de notes, transposition…)

Sans la souris, l'utilisateur devra pouvoir accéder à ces fonctionnalités via des boutons/gestes appropriés.

,

,

,

,

,

Description de la solution envisagée

Nous 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'information

Quand 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 Synthesia


Affichage 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
  • Insertion de notes : meilleure avec l'affichage Synthesia, puisqu'on utilise un clavier.
  • Modification de notes : meilleure en Synthesia. Les cibles (les "bâtons") sont plus grosses donc moins de problèmes d'occultation ou de précision (sur une partition, les notes sont assez petites).
  • Visualisation de l'ensemble des notes jouées : bien meilleure sur partition. L'affichage Synthesia semble plus simple pour les novices mais présente en réalité très peu d'informations, en plus de ne pas pouvoir remonter très loin dans l'affichage des notes précédentes.

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

  • Composé de 3 octaves soit 21 touches blanches et 15 touches noires
  • Touches de taille réelle pour mieux permettre un potentiel transfert d'apprentissage

Le sélecteur d'octave

  • Juste au dessus du piano : permet de changer les 3 octaves auxquelles les touches correspondent (un vrai piano comporte beaucoup plus de touches).

La partition

  • Affiche les notes qui ont été jouées
  • Déplacement par un mouvement vertical à 2 ou 3 doigts pour pouvoir voir ce qui a été joué
  • Possibilité de changer la hauteur d'une note en la déplaçant horizontalement
  • Permet de rajouter des notes à une partie déjà jouée

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 bords du cercle présentent des icônes (par exemple pour la longueur de note : une noire, une blanche, une croche ...) que l'utilisateur peut activer. Par exemple, en cliquant sur "noire" les futures notes jouées auront la durée d'une noire.
  • Le centre du cercle permet de choisir les icônes affichées autour (par exemple, afficher aussi les double croches, ou changer complètement de mode).

Les différents composants de l'application.
Boutons/Gadgets :
  • Bouton "Jouer la partition" avec un compteur de mesures qui peut être modifié : Une fois cliqué sur ce bouton, la partition est jouée à partir de la mesure introduite dans le compteur.
  • Silence : touche dédiée, pour permettre de jouer des silences (affichés sur une partition).
  • Bouton Copier / Bouton pour Coller
  • Bouton Undo (et un Redo) : Les actions doivent être facilement réversibles.
  • Bouton pour passer en mode Synthesia/partition
  • Tous types d'autres boutons trouvables dans les interactions WIMP

Les gestes :

  • jouer une note : appuyer sur la touche du piano correspondante
  • changer les octaves : appuyer sur les carrés du sélecteur d'octaves
  • sélectionner une note : appuyer dessus sur la partition
  • sélectionner plusieurs notes :
    • soit appuyer dans une zone où il n'y a rien pour faire apparaître un cadre de sélection
    • soit appuyer au même endroit avec 2 droits puis élargir, là aussi cela fait apparaître un cadre
  • décaler la partition :
    • soit appuyer avec 2 doigts et faire glisser vers le haut ou vers le bas
    • soit utiliser le slider
  • changer la durée d'une note :
    • soit appuyer avec 2 doigts et faire glisser dans des directions opposées
    • soit sélectionner la note et changer la durée en utilisant le cercle
  • modifier la hauteur d'une note : déplacer la note sélectionnée de gauche à droite (glisser)
  • allonger la durée d'un groupe de notes : sélectionner les notes puis utiliser le cercle
  • supprimer note(s) : sélectionner puis jeter hors de l'écran (comme l'écran est grand, pas besoin de jeter très loin, la Diamond Play détecte un mouvement vif)

Réalisation

Nous 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és

Ré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 :

  • (x1, y1) et (x2, y2)
  • (x1, y2) et (x2, y1)

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és

Nous 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 place

En 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'utilisateur ne peut quasiment pas utiliser les touches noires.
  • Hormis lorsqu'il appuie sur le piano, l'utilisateur ne peut effectuer des appuis à plusieurs doigts que dans certaines conditions
  • Les appuis sont correctement détectés si l'utilisateur joue seulement sur les touches blanches, peu importe le nombre de doigts.

L'algorithme actuel est composé de plusieurs étapes:

  • Fitting de gaussiennes à partir des inputs envoyés par la diamond touch et amélioration de ces gaussiennes (Monte-Carlo)
  • Prétraitement des inputs qui correspondent à des appuis sur le piano
  • Détection des problèmes de synchronisation
  • Détermination des alignements des doigts
  • Détermination des points déplacés en fonction de la position des points précédents
  • Ajout de nouveaux points basés sur les gaussiennes non traitées et l'alignement des doigts

Évaluation

L'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 WIMP

L'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ème du 'fat finger' (le doigt cache la cible) : N'est pas génant car les cibles mesurent quelques centimètres (piano, cercle, partition).
  • L'utilisateur ne sait pas quel est le point actif du doigt : L'utilisateur fait simplement comme si il jouait d'un vrai piano. Pour les boutons, le problème car l'utilisateur aura "plus de temps" pour placer son doigt dessus.
  • Calibration très importante, le doigt peut être assez proche d'une autre touche. La résolution spatiale de la Diamond Play est très bonne (0.3 mm en théorie) mais l'affichage sur projecteur rend la calibration assez technique.

Problèmes liés au "piano" intégré à la surface.

  • Pas de retour de force : L'utilisateur ne peut pas appuyer fort/faiblement contrairement à un vrai piano. Mais ce n'est pas gênant puisqu'on écrit la musique sans nuance. Ceci aurait posé problème si l'interaction était un simulateur de piano.
  • L'utilisateur doit enlever le doigt des touches pour les arrêter : Sur un vrai piano, on peut laisser les doigts sur la touche une fois qu'elle est remontée. Ceci gêne certains utilisateurs mais ils arrivent à s'y habituer.
  • Pas de friction -> génant ?
  • Pas de ressenti de la séparation entre les touches : Sur un vrai piano, un "creux" sépare les touches, ce qui peut aider à se positionner. Gênant pour certains utilisateurs (force à regarder le clavier).

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é.)

Latence

La fréquence de la Diamond Play est faible (40Hz) et occasionne une certaine forme de latence.

  • La latence spatiale est visuellement très perceptible lorsque l'utilisateur glisse le doigt sur la table et voit les touches précédentes réagir.
  • La latence est auditivement perceptible dans la même mesure que la latence spatiale : si l'utilisateur glisse sur la partition, il peut percevoir un temps de latence en comparant ce qu'il joue actuellement avec la note qu'il entend.
  • En revanche, les latences spatiale et auditive ne sont pas perceptibles lorsque l'utilisateur appuie ponctuellement sur la Diamond Play. L'utilisateur joue une note et l'entend immédiatement, et la voit s'afficher sur l'écran.

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érimentation

Nous avons évalué les 2 aspects améliorés par la Diamond Play :

  • Le côté "naturel" de l'utilisation (qui correspond formellement au transfert d'apprentissage).
  • L'efficacité d'introduction des notes par rapport à l'interaction WIMP

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 Δ
Idéalement ici, un graphe détaillant la comparaison de performances...

  • A sur ordinateur, sans expérience du piano
  • B sur ordinateur, avec expérience du piano mais pas du logiciel
  • C sur ordinateur, avec expérience du logiciel
  • D sur Dimaond Play, sans expérience du piano
  • E sur Diamond Play, avec expérience du piano

Résultats :

Transfert d'apprentissage :

  • E meilleur que D. L'interaction Diamond Play est naturelle. Un sujet sachant jouer des notes au piano en tire un bénéfice.
  • A est identique à B. L'interaction WIMP est peu naturelle. Un sujet sachant jouer du piano n'en tire pas de bénéfice.

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é :

  • E est bien meilleur que B, surtout en ce qui concerne l'introduction de notes.
  • E est meilleur que C. L'introduction de notes est plus rapide sur la Diamond Play, même pour un utilisateur expert de l'interaction WIMP (environ 3 fois plus)

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.

Conclusion

Nous pensons avoir imaginé une interaction viable mais techniquement difficile à réaliser.

Techniquement,

  • La précision des appuis est cruciale. Il faut une grande surface capable de mesurer précisément la position des doigts et ne présentant pas de problèmes de synchronisation.
  • La latence est tolérable dans une certaine mesure, bien que l'utilisateur pourra la percevoir et être plus ou moins gêné.
  • L'interaction gagnerait à comporter un piano physique intégré. Les utilisateurs pourront en effet être dérangés par le fait de jouer sur une surface plane.

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.

  • L'insertion de notes est bien plus rapide, même pour les utilisateurs ayant l'habitude du logiciel.
  • L'interaction est plus naturelle pour les compositeurs.
  • La taille de l'interaction élimine les défauts du toucher direct, et permet de conserver les avantages de l'interaction WIMP.

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).

Edit - History - Upload - Print - Recent Changes - Search
Page last modified on February 10, 2016, at 11:58 AM