Nous avons modifié quelques événements dans notre planification. La construction commencera une semaine plus tard, puisque la recherche nous a pris plus longtemps que prévu, surtout dû à la technologie MIDI et les accéléromètres. Nous allons commencer à tester les accéléromètres au courant de la semaine prochaine. Voici les plans pour la construction:
Section 4 : La construction
Nous avons trois objets à construire, dont les baguettes, les pédales de la batterie et la boîte munie de boutons pour la guitare. En ce qui concerne les baguettes, nous devons juste tailler du bois en tenant compte des emplacements éventuels des accéléromètres ainsi que les émetteurs de lumière infrarouge. Pour les pédales, nous allons prendre des sandales et faire des trous pour insérer les accéléromètres. Enfin, pour la boîte de la guitare, nous allons tout simplement construire une boîte en bois, faire des trous pour les boutons de chaque doigt, et attacher les fils des boutons à une carte dans la boîte, qui sera reliée à l’ordinateur.
Pour les baguettes, nous allons trouver des branches puis les tailler en forme de baguette. Ensuite, nous allons tailler des petits trous pour insérer les accéléromètres dedans. En fonction de quelle tactique nous allons utiliser pour repérer les baguettes avec la Kinect, nous pourrons peinturer les baguettes en couleur distinctes (ex: rouge flash et vert flash).
Nous avons commencé à étudier la technologie de la Kinect et de l’infrarouge. C’est une technologie qui nous permettra de traquer le mouvement des baguettes lorsqu’on va jouer de la musique sur la batterie virtuelle. Par exemple, savoir lorsque nous changeons de tambour (de gauche à droite). La Kinect sera donc placée devant nous. Nous utiliserons une Kinect open-source, compatible avec Windows, ce qui nous permettra de modifier la technologie avec notre propre code. Avec la Kinect, Windows a implémenté un SDK (software development kit) pour faciliter la modification du système.
Section 3 : La technologie infrarouge & La Kinect
Tout d’abord, nous allons utiliser la lumière infrarouge, parce que c’est cette lumière que la Kinect peut repérer.
La Kinect possède trois petits yeux, dont un projecteur infrarouge, une caméra infrarouge et une caméra RGB. Le projecteur infrarouge projette de la lumière infrarouge dans la pièce, et la caméra infrarouge, tout comme un capteur, reçoit la lumière infrarouge. La lumière IR est projetée en milliers de petits points dans la pièce selon un modèle précis, c’est de cette façon que la Kinect est capable de faire un plan de la pièce.
Par exemple, si le capteur de lumière infrarouge reçoit les points dans la même configuration (le même modèle) qu’ils étaient émis, la Kinect est capable de déterminer que la surface est plate. Si certains points sont déformés, la Kinect analyse cette déformation et détermine la forme de l’objet. Elle utilise ce même principe pour déterminer la profondeur des objets dans une pièce. C’est pour cette raison que la caméra infrarouge sur la Kinect est généralement nommé un capteur de profondeur. D’autre part, la caméra RGB est simplement une caméra qui détecte la couleur des choses dans la pièce et en fait une image pixelisée de rouge, de vert et de bleu. Cette caméra agit comme une caméra standard de tous les jours.
Plusieurs librairies de code existent déjà pour la Kinect open-source, dont certains sont capable d’identifier les membres du corps humain et de les représenter dans un programme. Donc, nous devrons créer notre propre code pour être capable de détecter les baguettes de batterie que nous allons construire. Étant donné que nous allons utiliser une Kinect compatible avec Windows, nous pourrons utiliser le Windows SDK (software development kit) déjà développée pour la Kinect.
Une façon que nous pourrions aborder pour détecter la position des baguettes serait de, premièrement, restreindre la profondeur visible de la Kinect (f1). Donc, les baguettes seront à une certaine distance et zone précises de la Kinect pour qu’il puisse les identifier seuls. Ensuite, nous pourrions trouver le milieu d’une baguette en additionnant le total de pixels en x et en y que la Kinect est capable de voir, donc la baguette elle-même, et ensuite faire une moyenne par le nombre total de pixels visibles (f2). Cependant, nous voulons trouver la position de deux baguettes différentes. Donc, nous pourrons déterminer la position de l’autre baguette avec la même f2, mais cette fois ajouter une séparation au milieu de la batterie virtuelle, où chaque baguette occupe son propre côté (f3).
Nous avons terminé nos recherches sur la technologie MIDI. Nous savons maintenant que nous devons utiliser le code propre à MIDI pour pouvoir interagir avec notre programme de choix FL Studio.
Tout d’abord, la technologie MIDI (Musical Instrument Digital Interface) est un langage qui permet aux instruments de musique de communiquer avec les ordinateurs. L’interface n’envoie pas des signaux audio, mais plutôt de l’information sur la tonalité, la vélocité, la panoramique, le volume et plusieurs autres paramètres audio. Pour transmettre l’information à l’ordinateur, il est nécessaire d’avoir un contrôleur MIDI qu’on connecte à l’ordinateur, généralement, via un câble USB. L’information envoyée à partir de l’instrument est lue par le contrôleur MIDI et est ensuite envoyée à l’ordinateur, puis, dans notre cas, dans un VST (Virtual Studio Technology). Le VST prend simplement l’information audio et en produit du son à l’intérieur d’un DAW (Digital Audio Workspace). Comme DAW, nous allons utiliser la version producer de FL Studio.
Dans notre cas, nous allons seulement utiliser 2 paramètres en ce qui concerne la technologie MIDI, soit le “Note On” et le “Note Off”. Ces deux paramètres contiennent chacuns 2 informations, soit le numéro de la note ainsi que la vélocité de la note. Essentiellement, le numéro de la note est un code qui permet de savoir quelle note a été envoyée afin de faire jouer la bonne note sur l’instrument virtuel, et la vélocité est la force avec laquelle la note est jouée. Pour nous, le but est de prendre les informations trouvées à travers les accéléromètres et les capteurs infrarouges pour les transformer en langage MIDI. Par contre, nous allons gérer et utiliser la technologie MIDI à partir de l’ordinateur et non à l’intérieur du Arduino, car nous croyons qu’il serait peut-être trop demandé pour le Arduino de gérer en même temps l’accéléromètre, la Kinect ainsi que le MIDI.
La première fonction que nous devrons faire (f1) nous permettra d’utiliser le signal True ou False retourné par les fonctions de l’accéléromètre, puis prendre en paramètre l’accéléromètre et sa position pour déterminer le numéro de la note qu’il doit retourner, et aussi prendre l’intensité de la frappe retournée par une autre fonction d’accéléromètre pour calculer la vélocité de la frappe.
La deuxième fonction (f2) prendra les informations précédemment trouvées pour envoyer une information “Note On” au logiciel. Ensuite, après quelques secondes, il faudra envoyer un autre signal “Note Off”, qui envoie l’information que la frappe est arrêtée. Pour la pédale de hi-hat, nous devrons faire une spécification, car lorsque la pédale est contre le sol, elle est en mode “fermée”, et lorsqu’elle est dans levée, elle doit être “ouverte”.
Nous avons avancé considérablement sur notre recherche de la technologie MIDI. Nous devrons créer notre propre contrôleur MIDI , qui sera en mesure de lire nos instruments virtuels. C’est ici que commence la partie la plus facile en termes de programmation de notre projet.
Tout d’abord, la technologie MIDI (Musical Instrument Digital Interface) est un langage qui permet aux instruments de musique de communiquer avec les ordinateurs. L’interface n’envoie pas des signaux audio, mais plutôt de l’information sur la tonalité, la vélocité, la panoramique, le volume et plusieurs autres paramètres audio. Pour transmettre l’information à l’ordinateur, il est nécessaire d’avoir un contrôleur MIDI qu’on connecte à l’ordinateur, généralement, via un câble USB. L’information envoyée à partir de l’instrument est lue par le contrôleur MIDI et est ensuite envoyée à l’ordinateur, puis, dans notre cas, dans un VST (Virtual Studio Technology). Le VST prend simplement l’information audio et en produit du son à l’intérieur d’un DAW (Digital Audio Workspace). Comme DAW, nous allons utiliser la version producer de FL Studio.
Nous avons terminé de travailler sur la planification et la clarification de nos objectifs à travers le temps. Ceci nous a permis de mieux situer notre travail et nos attentes envers nous-même afin de mieux guider nos recherches pour les futures parties de notre projet. Pour visualiser nos objectifs à travers le temps, nous avons utilisé le site internet de TeamGantt, un outil qui nous est très utile car il nous permet de produire des diagrammes de Gantt en ligne, et en équipe. Étant donné que nous sommes encore à une étape préliminaire de notre projet, nous n’avons pas encore travaillé sur le produit final, mais nous voulons tout de même commencer à tester les accéléromètres dans Arduino dans les prochaines semaines.
Cliquez ici pour voir le diagramme de Gantt que nous avons produit pour la planification de notre projet.
Nous avons continué de planifier le projet et les recherches sont encore en cours. Étant donné que nous avons acquis les connaissances sur les accéléromètres, dont les résultats de notre recherche se trouvent ci-dessous, nous allons continuer notre deuxième thème de recherche, sur le fonctionnement de la technologie MIDI. Ceci nous permettra de mieux comprendre comment produire du son à l’aide du programme que nous allons développer pour déterminer les frappes à la batterie.
Section 1 : Les accéléromètres
La première technologie que nous devrons utiliser sera celle des accéléromètres. Ces pièces sont capables de mesurer la force des accélérations qu’elles subissent. Certaines accélérations seront alors statiques (la force de la gravité par exemple)1, mais la force que nous désirons mesurer est celle de l’accélération qui sera créée par le mouvement de nos bras.
Il sera donc très important de programmer dans Arduino une fonction (f1) qui détectera quand l’accéléromètre subit une force d’accélération considérable, afin qu’il ne détecte pas les simples mouvements qui seront fait avec les baguettes: il faut donc trouver une façon de programmer l’Arduino pour qu’il détecte le mouvement de fouetté du poignet avec son accélération plus grande que normalement, que l’on appellera “peak”, ou sommet.
Ensuite, il faudrait également programmer une deuxième fonction (f2) qui permettra de détecter seulement les peaks qui auront une trajectoire vers le bas (les y négatifs). Cela nous permettra donc de seulement prendre en compte les coups qui seront dirigés vers le bas. Nous réussirons à détecter cette partie du mouvement en faisant un code qui prend en compte la direction de la gravité2, et donc retourner une variable true lorsque le mouvement est dans le même sens que la gravité, et false lorsqu’elle est dans un sens contraire.
Nous devrons ensuite faire une troisième fonction (f3) qui nous permettra de mesurer l’intensité de la frappe sur une échelle de 1 à 100%. Cela pourra donc ajouter un certain effet de réalisme à chaque frappe. Nous devrons tester en temps et lieu les accélérations conséquentes, mais nous aurons donc une fonction qui déterminera la force de la frappe, en transformant l’accélération de la frappe en une donnée sur l’échelle en pourcentage, 1% étant le son le plus faible et 100% étant le son le plus fort.
Ensuite, pour la quatrième fonction de notre programme (f4), nous devrons trouver une façon de prendre en paramètre l’intensité et de faire jouer le son à travers les hauts parleurs de l’ordinateur. Il devra donc prendre en paramètre un fichier audio qu’il fera jouer sous un certain volume, concordant avec l’intensité de la frappe.
Nous avons continué à planifier le projet, et amorcé nos recherches sur les différentes technologies utilisées, majoritairement le fonctionnement de la technologie derrière les accéléromètres. Nous avons donc écrit en partie la première section de notre documentation, soit celle qui repose sur la technologie de l’accéléromètre, surtout de manière très théorique avec ce que nous avons trouvé sur le web.
Nous avons planifié ce par quoi nous voulions commencer le projet. Nous avons créé un gestionnaire de temps avec l’aide de https://trello.com/ , et travaillé sur la description et la planification de notre projet, pour gérer sa faisabilité et énumérer les tâches qui devront être accomplies.