Thymio vous souhaite ses meilleurs vœux:
Le but est de faire de Thymio un orgue de Barbarie. Cet instrument lit et joue une partition musicale codée. Les capteurs de proximité frontaux de Thymio peuvent servir à lire des valeurs codées dans une sorte de langage binaire (un capteur détecte une présence ou non). Un de ses moteurs peut faire défiler une partition. Thymio possède donc tout ce qui est nécessaire à la réalisation de cet automatophone.
Sept notes sont codées de 0b100 à 0b111 (Σ i * 2^(i+1), 0 ≤ i ≤ 2); un bit est ajouté pour indiquer une note courte (0) ou longue (1). Enfin, un bit de parité est ajouté au milieu; il permet d’éviter les erreurs de lecture dues à la construction LEGO approximative. Chaque note est donc codée sous forme d’un quintet.
Les bits d’un quintet sont lus de gauche à droite, du senseur 0 au senseur 4.
Par exemple, la note 1 courte est codée 0b10100 et la longue, 0b10001; la note 6 courte est codée 0b01010 et la longue, 0b01111. Les codes non utilisés par les notes servent à contrôler l’exécution.
Le bit de parité, présent statistiquement dans 50% des notes, a été placé au milieu car c’est la place qui consomme le moins de briques LEGO.
Voici un exemple de partition que peut lire ThymiOrgue de Barbarie (les quintets sont placés verticalement) :
Il s’agit du début de Frère Jacques. L’exécution du programme donne:
On remarque assez vite que ce n’est pas avec ça qu’on va rameuter la foule. La partition est lourde, difficile à faire avancer et consomme beaucoup de pièces LEGO. Mais bon, la POC est faite !
La seconde version du programme virtualise la partition ainsi que sa lecture. Un 2ème Thymio (ici simulé dans un playground) va envoyer des valeurs de senseurs de proximité frontaux directement au 1er Thymio de manière régulière sous forme d’événements.
Le 2ème Thymio ne connaît rien aux notes, il ne fait qu’envoyer des valeurs brutes de distances de proximité.
Cela permet de jouer des morceaux plus long:
N.B.: l’extrait musical en début d’article est produit de cette manière.
Le programme permet de choisir une partition réelle ou une partition simulée via la télécommande (1 ou 2). Le bouton GO lance la lecture tandis que le bouton STOP l’arrête avant la fin. Si le programme est lancé avec un seul Thymio, seul le mode partition réelle fonctionnera (ignorer le message d’erreur concernant le nœud non trouvé). D’autres explications se trouvent dans le code.
Fichiers Aseba Studio (1.6.1 linux) : ThymiOrgueDeBarbarie.2.1.aesl & Playground: todb.playground