HomeProductsDownloadOrderSupportSearch
  
Myriad Forum « Curseur - Nouer des notes ! »
 Welcome, Guest.
 You can read all messages, but to be able to post,
 please Login or Register.
Mar 28th, 2024, 10:30am 
   Myriad Forum
   MyrScript Language
(Moderator: Forum Administrator)
   Curseur - Nouer des notes !
« Previous topic | Next topic »
Pages: 1  Reply | Notify of replies | Print
   Author  Topic: Curseur - Nouer des notes !  (Read 637 times)
ANdre_B
Board Master
*****





   
Email

Gender: male
Posts: 2846
Curseur - Nouer des notes !  
« on: Mar 23rd, 2021, 5:40am »
Quote | Modify

Dans un autre fil, s'était posée la question de localiser en MyrScript la position actuelle du curseur - là où s'insère  un symbole entré au clavier. Le manuel n'en parle pas.
 
Il se fait qu'il s'agit d'une sélection vide. Les FirstSelectedSymbol et autres n'indiqueront rien, mais bien les dimensions par Score.TimeBeginSelection/TimeEndSelection pour l'horizontal, et  Score.FirstSelectedStaff pour le vertical; la largeur est minimale (un 2520ème de quadruple croche).  
 
A partir de là tout est possible (enfin, beaucoup).
 
Mais je bute sur un autre problème; avec des notes "tied" (liaison de prolongation) il n'y a qu'un seul symbole, mais une table de composants avec origine et durée. Je veux ajouter un composant, mais j'ai du mal...  
 
Alors si quelqu'un avait déjà travaillé la-dessus? (On obtient cette table par Symbol.GetTiedElements()  -- Merci beaucoup
Logged

André Baeck, de retour en Belgique après 12 ans passés dans le Gard.
Windows 11, HA 997e (et précédents)
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1609
Re: Curseur - Nouer des notes !  
« Reply #1 on: Mar 23rd, 2021, 8:51am »
Quote | Modify

Bonjour André, je pense que la meilleure solution est d'utiliser la fonction "OnInsertSymbol" (voir le manuel). Ainsi tu as repéré le dernier symbole posé, "y a plus qu'à" poser le coulé avec la note précédente...  
Si tu veux plus de détails je peux t'envoyer un exemple de code.
Amistats, Danièl.
« Last Edit: Mar 23rd, 2021, 9:18am by Daniel Frouvelle » offline
ANdre_B
Board Master
*****





   
Email

Gender: male
Posts: 2846
Re: Curseur - Nouer des notes !  
« Reply #2 on: Mar 23rd, 2021, 9:23am »
Quote | Modify

Merci, Danièl
 
Si je comprends bien, OnInsertSymbol, comme tous les "On...", est pour les fenêtre flottantes (.myf), or je veux un .mys car ça doit devenir un raccourci clavier.  
 
Mais trouver le dernier symbole introduit, c'est OK puisque j'ai trouvé le curseur.  
 
Et ce que je dois placer, c'est un "tie" et non un "slur"...  
 
 
En a-côté, avec une fenêtre flottante, je ne suis pas encore arrivé à "redonner la main" à la partition sans sortir complètement du script.
Logged

André Baeck, de retour en Belgique après 12 ans passés dans le Gard.
Windows 11, HA 997e (et précédents)
ANdre_B
Board Master
*****





   
Email

Gender: male
Posts: 2846
Re: Curseur - Nouer des notes !  
« Reply #3 on: Mar 23rd, 2021, 11:06am »
Quote | Modify

on Mar 23rd, 2021, 9:23am, Andre_B wrote:
Et ce que je dois placer, c'est un "tie" et non un "slur"...  

 
J'ai trouvé Symbol.SplitDuration, grâce à une contribution au forum de Didier Guillon en 2007.  

Donc OK pour créer un "tie" de deux éléments. Et si j'en veux trois?

J'ai une piste...
« Last Edit: Mar 23rd, 2021, 12:44pm by ANdre_B » Logged

André Baeck, de retour en Belgique après 12 ans passés dans le Gard.
Windows 11, HA 997e (et précédents)
bubu42
Board Master
*****





   


Gender: male
Posts: 10505
Re: Curseur - Nouer des notes !  
« Reply #4 on: Mar 23rd, 2021, 11:52am »
Quote | Modify

on Mar 23rd, 2021, 9:23am, Andre_B wrote:
En a-côté, avec une fenêtre flottante, je ne suis pas encore arrivé à "redonner la main" à la partition sans sortir complètement du script.  
A ce sujet, j'ai remarqué que le comportement de Myrscript est différent selon qu'on est en phase de débogage/écriture ou qu'on exécute directement le script enregistré sur le disque dur.
offline

Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
ANdre_B
Board Master
*****





   
Email

Gender: male
Posts: 2846
Re: Curseur - Nouer des notes !  
« Reply #5 on: Mar 23rd, 2021, 12:48pm »
Quote | Modify

on Mar 23rd, 2021, 11:52am, bubu42 wrote:

A ce sujet, j'ai remarqué que le comportement de Myrscript est différent selon qu'on est en phase de débogage/écriture ou qu'on exécute directement le script enregistré sur le disque dur.

 
Il y a une différence documentée: dans un des cas, MSDefine est appelé automatiquement, dans l'autre pas.  
Cela me sert pour être sûr de ne pas lancer un script lorsque je veux l'éditer, comme signalé récemment.  
 
Mais ces derniers temps j'ai noté une certaine inconsistance...
Logged

André Baeck, de retour en Belgique après 12 ans passés dans le Gard.
Windows 11, HA 997e (et précédents)
ANdre_B
Board Master
*****





   
Email

Gender: male
Posts: 2846
Re: Curseur - Nouer des notes !  
« Reply #6 on: Mar 24th, 2021, 4:45pm »
Quote | Modify

J'avais dit que j'avais une piste, eh bien j'y suis arrivé.
 
J'ai pu détailler la création de notes nouées (tied) en MyrScript. Le moins qu'on puisse dire, c'est que la documentation ne fourmille pas de détails.
 
Comme on le sait, un jeu de notes nouées n'est qu'un seul symbole, qui ne sont détaillées que visuellement. Cela est conforme à l'implémentation MIDI, même s'il y en a à qui cela ne plaise pas.
 
Ce symbole a une seule valeur de durée, qui est la durée totale, qui peut d'ailleurs tout-à-fait se terminer dans une mesure ultérieure.
Mais lui est attachée une table de segments; si on écrit:
GTE = symbol.GetTiedElements()
on a dans n = getn(GTE) : le nombre de segments
    t1 = GTE[1].time     : la position temps du premier segment
    d1 = GTE[1].duration   : la durée du premier segment, dans la même unité.
    t2 = GTE[2].time     : la position temps du deuxième  segment
    d2 = GTE[2].duration   : la durée du deuxième segment, etc
la somme des durées étant la durée du symbole, évidemment.
 
La durée d'un segment ne peut pas lui faire chevaucher deux mesures, sauf probablement avec l'option de ne pas couper les notes (option dans Portées, aspect graphique).
 
Pour ajouter une note (de durée DD) liée à la précédente, on doit
 
- prendre la durée actuelle: D = symbol.Duration
- étendre la durée de cette précédente: symbol.Duration = D + DD
- si cette précédente était déjà nouée, il se creéra automatiquement un nouveau segment (sous réserve de compression, voir plus loin)
- si elle ne l'était pas, il faut la segmenter après la durée du premier segment:
symbol.SplitDuration(D)
 
Attention à la compression: c'est un processus pour limiter le nombre de segments, si possible.
S'il y a deux segments, ils ne sont (apparemment) jamais compressés.
S'il y en a plus, deux segments sont combinés pour n'en former qu'un seul, si la durée totale peut se représente par une seule note (ex. une blanche suivie d'une noire deviendra une blanche pointée; mais pas une noire suivie d'une blanche! Et le tout peut être "resegmenté" pour qu'un segment ne chevauche pas deux mesures.
Logged

André Baeck, de retour en Belgique après 12 ans passés dans le Gard.
Windows 11, HA 997e (et précédents)
PaulL
Board Master
*****




Retired organist and choir director; former progra

   


Gender: male
Posts: 1130
Re: Curseur - Nouer des notes !  
« Reply #7 on: Mar 26th, 2021, 9:50pm »
Quote | Modify

La durée d'un segment ne peut pas lui faire chevaucher deux mesures, sauf probablement avec l'option de ne pas couper les notes (option dans Portées, aspect graphique).
 
Actually, this isn't quite accurate.  A tied note can cross several bars, but with the following behavior:
 
First if you tie two notes in the first bar with notes in following bars, the resulting tied note is in two parts, with the first part being the value of the first note, and the second part being the entire value of all the other notes merged into one.  You can verify this by untying (Ctrl-L) and examining the value of the second note.  If there is only one note in the first bar to be tied together with the other notes, the first part of the result is that note, and the second part is the merged value of all the other notes.
 
Naturally, if you edit the newly tied note and remove the splitting, the note becomes one long note, with appropriate values appearing in each bar.
 
It is easier for you to check and uncheck the "Do not split notes" boxes, than for me to describe the behavior.
offline

Le coeur a ses raisons, que la Raison ne connaît point.
Paul Littlefield, retired Church musician

HA+VS+PdfToMusic Linux Mint 21.3 Cinnamon
ANdre_B
Board Master
*****





   
Email

Gender: male
Posts: 2846
Re: Curseur - Nouer des notes !  
« Reply #8 on: Mar 28th, 2021, 10:03am »
Quote | Modify

Hello Paul,  
 
Sure that a tied note can cross several bars, but, as far as I understood, it's a reason to have it split into segments. I said that a segment could not cross several bars, unless don't split notes is active. I did not go into details with that option, and compression anyway obeys several rules, my only objective was to mention that.  
 
Furthermore, the use of don't split notes in recent editions is quite rare.  
Thanks for your advice!  
 
Logged

André Baeck, de retour en Belgique après 12 ans passés dans le Gard.
Windows 11, HA 997e (et précédents)
Pages: 1  Reply | Notify of replies | Print

« Previous topic | Next topic »

« Myriad Forum » Powered by YaBB 1 Gold - SP 1.1!
YaBB © 2000-2002,
Xnull. All Rights Reserved.

Top of page
Legal information Cookies Last update:  (c) Myriad