Page 1 of 1

Joue tes partitions sur le TI-Innovator avec ta 83 Premium

Unread postPosted: 08 Oct 2016, 14:04
by critor
7289Aujourd'hui après le code Morse nous allons te proposer un nouveau projet construit, autour du périphérique TI-Innovator de cette rentrée 2016.
Il s'agit encore une fois d'utiliser son buzzer intégré, mais de façon différente. ;)

70367035Au salon de l'Orme 2.16 à Marseille en juin dernier, Texas Intruments démontrait à l'aide d'un mini programme qu'il était possible de jouer de la musique, ci-contre même si ça ne s'entend pas un petit extrait de bon anniversaire.

Mais voilà le problème. A partir d'une partition de musique, comment obtenir de façon simple et juste, la liste des fréquences jouables ?



Problématique à laquelle répond le projet d'aujourd'hui, MUSICATOR.
Le projet définit une façon textuelle de retranscrire de façon simple et complète des partitions :
  • notation anglaise unicaractère des notes : C=Do, D=Ré, E=Mi, F=Fa, G=Sol, A=La, B=Si
  • caractère espace pour un silence
  • chiffres pour spécifier la durée des notes/silences suivants : 8=ronde, 7=blanche, 6=noire, 5=croche...
  • possibilité de régler l'octave de façon absolue avec O0, O1, ... O9, ou bien relative en demandant le passage à l'octave supérieur/inférieur avec les caractères * ou ,
  • support des altérations dièse, bémol ou point de la note ou du silence précédent, à l'aide des caractères +, - et .
  • et même, possibilité de préciser librement le rythme en bpm (battements par minute, c'est-à-dire nombre de noires par minute) en début de texte :bj:

Quelques exemples de retranscriptions simples :
  • gamme majeure ascendante : CDEFGAB*C
  • gamme mineure ascendante : CDE-FGA-B-*C
  • gamme chromatique ascendante : CC+DD+EFF+GG+AA+B*C

Deux outils permettent alors :
  • la compilation de ces transcriptions texte en listes de fréquences+durées jouables
  • la lecture de ces liste sur le TI-Innovator si connecté

La seule contrainte est que le TI-Innovator ne représente qu'un seul et unique instrument à une seule voie.
A moins d'en avoir plusieurs et autant de calculatrices compatibles, ne pourront donc être retranscites sans modifications :
  • les partitions faisant jouer plusieurs instruments en même temps
  • l'éventuelle partie accompagnement des partitions
  • les partitions demandant à un même instrument de jouer plusieurs notes en même temps

Nous allons voir de suite ce que cela donne avec la vraie partition ci-contre, dont voici la transcription complète :
Code: Select all
128:O35 AAA6AAGECCAAGF7G 6FB-B-B-AGFFAAGF8A6 5AAAA6AGE7C6AAGF7G 5 B-B-B-6B-B-AGFFAAGF7A5 A*CD6 5,AA6*CD7D ..CDEF6E.D5C,A*CD6 7D6DC,AF5FG6AAGF7A5 A*CD6 5,AA6*CD7D ..DDEF6E.D7C6,B-*FFFCF7FF6FFE5,AA6*CDD5,AA*CD6F



Comme tu peux l'entendre, la transcription de la partition est bien correcte. :)



Un petit défaut subsiste toutefois. Ici tout a été fait pour que la calculatrice n'ait rien d'autre à faire pendant la lecture du morceau :
  • compilation à priori de la transcription en une liste de fréquences directement jouable
  • aucun affichage pendant la lecture
Malgré cela, la calculatrice perd du temps entre chaque note, puisqu'il y a un silence non négligeable alors qu'absent de la transcription.
C'est donc le temps perdu à chaque itération de la boucle de lecture.
Nous ignorons la raison exacte de ce retard, mais à notre avis c'est sûrement le temps mis :
  • soit pour envoyer la commande construite au TI-Innovator
  • soit pour construire cette commande, notamment avec la nouvelle instruction eval( du système 5.2 permettant d'inclure une valeur numérique dans une chaîne de caractères
En conséquence, pour que le morceau colle bien avec l'accompagnement, nous avons dû énormément augmenter le rythme.
Au lieu de 128bpm pour du moderately fast, il nous a fallu régler 860bpm.

Si l'on pouvait récupérer le temps perdu dès la première note, on pourrait corriger en rognant sur la durée des notes ou silences ultérieurs. Mais malheureusement, les instructions d'horloge du seul langage Basic retournent toutes un nombre entier de secondes, et ne permettent pas de connaître la fraction de seconde perdue dès la première note. :'(



Au final, encore une fois un projet qui s'inscrirait parfaitement dans le contexte des enseignements de ICE, TPE et ISN au lycée, ou des nouveaux EPI de la réforme du collège depuis cette rentrée.
Dans ce dernier cas, ce serait d'ailleurs une excellent moyen d'associer activement au sein d'un même projet scientifique l'enseignement d'Education musicale, afin de voir avec ses collègues et les élèves comment construire l'ensemble des différentes valeurs de fréquences nécessaires à la lecture de partitions. :bj:



Téléchargement : archives_voir.php?id=687757

Crédits : partition

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:28
by critor
Maintenant, plutôt que d'avoir à taper une ligne de caractères, ne serait-il pas possible d'avoir un éditeur visuel de partitions sur calculatrice, qui au final bien sûr sauvegarderait dans ce format ?

Il n'y avait pas ça sur TI-z80 ?

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:30
by Adriweb
J'avais plus moins fait ça il y a fort longtemps (il y a 8 ans apparemment), mais bon, je ne garantis rien à ce propos :P
archives_voir.php?id=986

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:39
by critor
Ce serait sympa de l'adapter, alors :)

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:47
by critor
Voilà, trouvé le problème qui fait que le rythme du morceau joué n'est pas exact, et donc non-superposable à l'accompagnement sans trucages (dont celui de passer le rythme calculatrice de 128bpm à 860bpm).

Le code donné en exemple par TI pour jouer une note tout en en contrôlant la durée, c'est :
Code: Select all
Send("SET SOUND eval(F) TIME eval(T)
Wait(T


En effet, le Send( n'attend pas que la note ait terminé de jouer avant de redonner la main au programme.

Problème, la durée d'exécution de ce code est nettement supérieure à T, car les eval( et Send( prennent du temps.

On peut mesurer le temps d'exécution avec par exemple STOPWATCH de PT_ :
archives_voir.php?id=438972

En soustrayant T à la valeur obtenue, on obtient le temps perdu, variable mais restant autour de D=0,39s sur ma machine.


Une correction qui a l'air de bien marcher et qui me joue les notes de façon presque continue et en rythme avec l'accompagnement, c'est donc de rattraper le temps perdu en faisant Wait(T-D), au moins pour les notes durant plus longtemps que D.

La mise à jour est prête.
Elle calcule le temps perdu D avec STOPWATCH (car il sera peut-être différent d'une machine à une autre, ce qui finirait alors par se ressentir pour les musiques les plus longues) lors de 2 itérations-test jouant du vent, puis joue tout le morceau en tenant compte de cette valeur D.


Je tenterai de vous faire une nouvelle vidéo montrant l'amélioration. :)

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:52
by Adriweb
critor wrote:Ce serait sympa de l'adapter, alors :)

Je serai incapable de retoucher à un tel code (du TI-Basic probablement un peu optimisé, écrit assez rapidement pour un concours...), et puis ça nécessitait (du moins pour certaines parties) Omnicalc si mes souvenirs sont bons.

Sur CE, il faudrait faire ça en C, mais pour le moment on n'a pas accès à de l'USB en C, et je crois qu'il n'est pas trivial de faire exécuter des commandes Basic, aussi (mais ça reste à voir...).

Mais bref, c'est probablement un truc bien trop de niche pour que ca vaille le temps passé à essayer de porter ça :P

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:56
by critor
J'ai juste parlé de la nécessité d'un éditeur plus visuel, pour que chacun puisse écrire facilement ses morceaux.
Pas besoin donc du lecteur, et pas besoin donc de l'USB. :)

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 09 Oct 2016, 13:59
by Adriweb
Certes, mais ça représente un gros boulot, et c'est certainement pas (plus) moi qui auraient le temps (ni l'envie) de faire un éditeur de partition :P
Mais si certains ont des du temps... go ahead, Basic, C, ou ASM même :P

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 10 Oct 2016, 19:01
by critor
Voilà, démo de la nouvelle version qui commence par caluler le temps passé dans deux itérations-tests jouant un son inaudible, puis en tient compte pour jouer le morceau avec les itérations suivantes.

Les notes peuvent maintenant être jouées quasiment en continu, le seuls silences étant ceux prévus dans la partition. :)

Donc maintenant, quand en début de partition on précise un rythme de 128bpm, ça joue vraiment en 128bpm ! :bj:

Re: Joue tes partitions sur le TI-Innovator avec ta 83 Premi

Unread postPosted: 10 Oct 2016, 19:04
by Adriweb
C'est effectivement beaucoup plus fluide :)