lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BarNumber et mesure à cheval sur 2 lignes


From: Éditions IN NOMINE
Subject: Re: BarNumber et mesure à cheval sur 2 lignes
Date: Mon, 20 Sep 2010 10:09:51 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100802 Lightning/1.0b2 Thunderbird/3.1.2

Bon, c'est lundi matin, il fait beau sur Lyon, donc ça devrait le faire...
Merci Cécile pour ta gentille contribution qui m'a bien éclairé. Je remets donc le couvert :

1. j'isole le code \displayMusic}
(make-music
          'ContextSpeccedMusic
          'context-type
          'Score
          'element
          (make-music
            'PropertySet
            'value
            50
            'symbol
            'currentBarNumber))

2. je construit ma fonction en coppiant/collant un exemple de la doc ce qui donne :
mesureD = #(define-music-function (parser location event-chord)(ly:music?)
"force la numérotation 50 en tête de portée après un break"
(let ((result-event-chord (ly:music-deep-copy event-chord)))
  (set! (ly:music-property result-event-chord 'elements)
    (cons (make-music
          'ContextSpeccedMusic
          'context-type
          'Score
          'element
          (make-music
            'PropertySet
            'value
            50
            'symbol
            'currentBarNumber))
(ly:music-property result-event-chord 'elements)))
  result-event-chord)
  )


3. je consulte les messages d'erreur de Lily :
Interprétation en cours de la musique...
erreur de programmation : Envoi d'un non-événement au contexte
poursuite ; croisons les doigts.
erreur de programmation : Not a music type
poursuite ; croisons les doigts.
Avertissement : Classe d'événement inconnue : « context-specced-music »


4. j'ouvre la fenêtre pour me jeter dans le vide...

Bon, je crois avoir trouvé d'où vient l'erreur :

Le fait est que le code
(make-music
          'ContextSpeccedMusic
          'context-type
          'Score (...)

que j'utilise dans ma fonction n'est pas rattaché au même "noeud" que celui utilisé dans la fonction Bravo!

Dans cette dernière, le code utilisé faisait partie d'une liste de propriétés de EventChord :
(make-music
   'EventChord
   'elements

  (list (make-music (mon code)...

Ma variable d'entrée était un élément EventChord...

Or dans la fonction mesureD, le code que je récupère est en-dehors de EventChord, et se rattache au "noeud" supérieur :
(make-music
  'SequentialMusic
  'elements

  (list (make-music
         ...)
...plusieurs
:
        (make-music
        'EventChord
        ...)
       (make-music
          'ContextSpeccedMusic
          'context-type
          'Score (...)



Donc ce n'est pas la même chose, donc normal que ça plante : je referme la fenêtre pour l'instant !
D'où ma question : comment modifier ma fonction d'origine pour que ça fonctionne ?

J'ai l'impression de faire du parachute sans parachute, marrant...

Merci d'avance !

JMarc

Ci-dessous une réponse à Cécile pour sa proposition :

Par contre si je peux me permettre : la numérotation m'a l'air programmée pour n'être affichable qu'aux changement de mesure effectifs, et non sur les barres de mesures. Donc tu peux forcer tout ce que tu veux avec des \break, indiquer à la main \bar "|" ou autre, ça ne t'affichera pas ton numéro en milieu de mesure.

C'est très porc (encore une fois) mais c'est un porc sioux et ça peut peut-être te dépanner en attendant mieux :

--- fichier partA.ly ---
\relative c'' {
    \time 4/4
    \partial 2
    c4 c c d e2 d c4 e d d c2 ~ \partsMesDeux c2 \bar ":|:" \partsBreak
    \partsMesSix d4 d \bar "|" d d a2 \partsMesQuatre a d4 c b a g2 ~ g2}


--- fichier partB.ly ---
\relative c'' {
    \time 4/4
    \partial 2
    c4 c c d e2 d c4 e d d c2 ~ \partsMesDeux c2 \bar ":|:" \partsBreak
    \partsMesSix d4 d \bar "|" d d a2 \partsMesQuatre a d4 c b a g2 ~ g2}


--- fichier score.ly ---
\version "2.13"

noTime = \once \override Staff.TimeSignature #'stencil = ##f


% Parties séparées
partsMesDeux = {\noTime \time 2/4}
partsMesQuatre = {\noTime \time 4/4}
partsMesSix = {\noTime \time 6/4}
partsBreak = \break

\score { \include "partA.ly" }
\score { \include "partB.ly" }


% Partition complète
partsMesDeux = {}
partsMesQuatre = {}
partsMesSix = {}
partsBreak = {}

\score {
    <<
        \new Staff = "PartA" {\include "partA.ly"}
        \new Staff = "PartB" {\include "partB.ly"}
    >>
}

Comme tu peux le voir, tu touches à la partition... mais la bidouille spéciale parties séparées n'affecte pas le conducteur.
Bon, je retourne à mes Legos, c'est moins compliqué.
Cécile

    
J'imagine la tête des Lego que tu fais ! Bravo pour cette solution : je vais m'en "contenter" le temps de percer les mystères des #(define...) !

A bientôt
JMarc
_______________________________________________ liste de diffusion lilypond-user-fr address@hidden http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

reply via email to

[Prev in Thread] Current Thread [Next in Thread]