BarNumber et mesure à cheval sur 2 lignes

Bonjour à toute la liste !

Je me cogne à un petit pb qui a l'air bête comme chou : j'ai une ligne qui se termine par 2 temps + \bar":|:" puis retour à la ligne pour la seconde partie qui commence donc par une demi mesure.

L'usage répandu et assez élégant, quand on numérote en début de ligne, c'est que le chiffre en tête de cette seconde ligne soit le n° de la première mesure complète de la dite ligne (j'espère que ce n'est pas confus !). Or je n'arrive pas à atteindre ce résultat.

Un petit bout de code :

\version "2.13"
{\clef bass \time 2/2
c4 c c d e2 d c4 e d d c2 \bar ":|" \break
r4 c d4 d d d a,2 a, d4 c b, a, g,1 \break
c4 c c d e2 d c4 e d d c1 \bar "|."
}

Il devrait y avoir un chiffre 5 en début de seconde ligne, en fait...
Une solution sioux dans \layout serait impeccable, parce que je n'ai pas vraiment envie de toucher aux fichiers de notes (il s'agit d'extractions de parties séparées).

Merci d'avance !
JMarc

Pas d'idée dans le \layout mais peut-être que:

   \set Score.currentBarNumber = #4 % Changer pour le chiffre voulu
   \bar "" % Permit first bar number to be printed

judicieusement placé pourrait "saucissonner" l'histoire.

c4 c c d e2 d c4 e d d c2 \bar ":|" \break
\set Score.currentBarNumber = #3 % Changer pour le chiffre voulu
\bar "" % Permit first bar number to be printed
r4 c d4 d d d a,2 a, d4 c b, a, g,1 \break

Phil.

···

Le 15/09/2010 17:27, Éditions IN NOMINE a écrit :

Bonjour à toute la liste !

Je me cogne à un petit pb qui a l'air bête comme chou : j'ai une ligne
qui se termine par 2 temps + \bar":|:" puis retour à la ligne pour la
seconde partie qui commence donc par une demi mesure.

L'usage répandu et assez élégant, quand on numérote en début de ligne,
c'est que le chiffre en tête de cette seconde ligne soit le n° de la
première mesure complète de la dite ligne (j'espère que ce n'est pas
confus !). Or je n'arrive pas à atteindre ce résultat.

Un petit bout de code :

\version "2.13"
{\clef bass \time 2/2
c4 c c d e2 d c4 e d d c2 \bar ":|" \break
r4 c d4 d d d a,2 a, d4 c b, a, g,1 \break
c4 c c d e2 d c4 e d d c1 \bar "|."
}

Il devrait y avoir un chiffre 5 en début de seconde ligne, en fait...
Une solution sioux dans \layout serait impeccable, parce que je n'ai pas
vraiment envie de toucher aux fichiers de notes (il s'agit d'extractions
de parties séparées).

Merci d'avance !
JMarc

======= 15-09-2010 17:33:52 =======

Bonjour à toute la liste !

Je me cogne à un petit pb qui a l'air bête comme chou : j'ai une ligne
qui se termine par 2 temps + \bar":|:" puis retour à la ligne pour la
seconde partie qui commence donc par une demi mesure.

L'usage répandu et assez élégant, quand on numérote en début de ligne,
c'est que le chiffre en tête de cette seconde ligne soit le n° de la
première mesure complète de la dite ligne (j'espère que ce n'est pas
confus !). Or je n'arrive pas à atteindre ce résultat.

Un petit bout de code :

\version "2.13"
{\clef bass \time 2/2
c4 c c d e2 d c4 e d d c2 \bar ":|" \break
r4 c d4 d d d a,2 a, d4 c b, a, g,1 \break
c4 c c d e2 d c4 e d d c1 \bar "|."
}

Il devrait y avoir un chiffre 5 en début de seconde ligne, en fait...
Une solution sioux dans \layout serait impeccable, parce que je n'ai pas
vraiment envie de toucher aux fichiers de notes (il s'agit d'extractions
de parties séparées).

Merci d'avance !
JMarc

Bonsoir à tous,

Effectivement, j'ai déjà rencontré ce problème, dans la partie orchestrale ou les parties séparées.
Je me demande s'il ne serait pas préférable de soumettre le problème aux développeurs pour qu'ils proposent une option permettant l'impression de ce numéro.

Ça éviterait que le problème arrive aléatoirement en fonction d'une mise en page qui n'est pas conduite par des \break.

Qu'en pensez-vous ?

Jean-François

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

= = = = = = = = = = = = = = = = = = = =

Merci pour cette réponse, mais en fait, la succession de \bar ":|" et de \bar "" donne \bar"", et donc la barre de reprise disparait. Oh, il serait tout à fait possible de faire un truc du style :

version "2.13"
{\clef bass \time 2/2
c4 c c d e2 d c4 e d d c22 \bar ":|" \break
r4
2 c4*2 d4 d d d a,2 a, d4 c b, a, g,1 \break
c4 c c d e2 d c4 e d d c1 \bar "|."
}

pour ruser Lilypond et lui faire croire qu'il s'agit de mesures entières, mais encore une fois, je souhaite ne pas toucher au code musical. S'il n'y a pas de solution, je ferai comme ça quand-même.

A bientôt

JMarc

···

On 15/09/2010 20:18, Phil Hézaine wrote:

c4 c c d e2 d c4 e d d c2 \bar ":|" \break
\set Score.currentBarNumber = #3   % Changer pour le chiffre voulu
\bar ""   % Permit first bar number to be printed
r4 c d4 d d d a,2 a, d4 c b, a, g,1 \break

Bonsoir à tous,

Effectivement, j'ai déjà rencontré ce problème, dans la partie orchestrale ou les parties séparées.
Je me demande s'il ne serait pas préférable de soumettre le problème aux développeurs pour qu'ils proposent une option permettant l'impression de ce numéro.

Ça éviterait que le problème arrive aléatoirement en fonction d'une mise en page qui n'est pas conduite par des \break.

Qu'en pensez-vous ?

Jean-François

Bonjour !
J'en pense 3 choses :

aaaaaaarrrrrrgghhhhh il n'y a pas de solution à ce pb sans modifier le code musical.... :cry:

et :

yes, je vais soumettre cette demande d'amélioration aux développeurs.

et :

au fait, il n'y aurait pas un champion du monde de Scheme qui pourrait faire un peu de magie et créer une fonction \cleverBarNumber qui fasse ça :

- si la ligne n-1 se termine par une mesure entière alors pass (numérotation normale)
- si la ligne n-1 se termine par une mesure incomplète alors :
         * numérotation ligne n = numérotation dernière mesure ligne (n-1) + 1
         * et on dit que la première mesure de la ligne n est la première mesure complète (pour que l'incrémentation sache où continuer)

En l'écrivant, je me dis qu'il est bien dommage que je ne sache pas écrire une fonction Scheme ! (il a qu'a s'y mettre, le monsieur !)

A bientôt !
JMarc

Allez, je me lance ! Après lecture et étude approfondie de la doc Extensions (très bien faite mais un peu courte pour moi)... que dolor ! :stuck_out_tongue:
Toutes mes excuses par avance pour la longueur de ce post : je souhaite montrer ce qui se passe dans ma cervelle, alors forcément, ça prend du temps ! Le but peu visible est de trouver à terme une solution pour le sujet "BarNumber et mesure à cheval sur 2 lignes".

Par où commencer... Par ce que je sais faire...
Prenons ce bout de code :
\version "2.13"
{c4 c c d e2 d \bar "|."}

Si je veux écrire Bravo ! au-dessus du premier c4, en Scheme, voici comment je procède :
\version "2.13"
\displayMusic{
c4^"Bravo !" c c d e2 d \bar "|."
}
puis :
lilypond machin.ly>display.txt

Dans display.txt, je repère le code qui crée le Bravo ! :
(make-music
'EventChord
'elements
(list (make-music
'NoteEvent
'duration
(ly:make-duration 2 0 1 1)
'pitch
(ly:make-pitch -1 0 0))
(make-music
'TextScriptEvent
'direction
1
'text
"Bravo !")
C'est donc dans une liste de propriétés liées à EventChord. Je fais un honteux plagiat de la doc (page 13 et suivantes) et je ponds la fonction du siècle :
bravo = #(define-music-function (parser location event-chord)(ly:music?)
;la variable est event-chord de type ly:music
"écrit Bravo ! au dessus de la note"
(let ((result-event-chord (ly:music-deep-copy event-chord)))
;declaration de la variable locale result-event-chord. On lui donne la valeur de music-deep copy
(set! (ly:music-property result-event-chord 'elements)
(cons (make-music ;ici je copie la partie de display.txt qui m'intéresse
'TextScriptEvent
'direction
1
'text
"Bravo !") (ly:music-property result-event-chord 'elements)))
result-event-chord)
)
et on modifie le code de la parto pour utiliser cette fonction :
\version "2.13"
{\bravo c4 c c d e2 d \bar "|."}

Et ça marche.
Le pied.

Par où finir... Par ce que je ne sais pas faire...
Maintenant, je souhaite en venir aux numéros de mesure. Même méthode :

Un petit \displayMusic sur le code suivant :
\version "2.13"
\displayMusic{
c4 c c d \break
\set Score.currentBarNumber=#50 e2 d \bar "|." }
}

J'obtiens le code interressant suivant (en partant "du haut") :
(make-music
'SequentialMusic
'elements
(list (make-music
...)
;la partie concernant le \break, qui est ratachée à un EventChord, comme plus haut
(make-music
'EventChord
'elements
(list (make-music
'LineBreakEvent
'break-permission
'force)))
;la partie concernant le n° de mesure, pas du tout de la même forme que plus haut ! >:o
(make-music
'ContextSpeccedMusic
'context-type
'Score
'element
(make-music
'PropertySet
'value
50
'symbol
'currentBarNumber))

Allons-y quand-même !

mesureD = #(define-music-function (parser location score)(ly:music?)
;question : la variable score et son type sont-ils bon ?
"force la numérotation en tête de ligne à 50"
(let ((result-score (ly:music-deep-copy score)))
(set! (ly:music-property result-score 'elements)
(cons (make-music
'PropertySet
'value
50
'symbol
'currentBarNumber) (ly:music-property result-score 'elements)))
result-score)

Le hasard ayant pu de place en cette matière, ça plante complet à l'utilisation avec les messages suivants :
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 : « property-set »

Or j'ai un mal fou à faire évoluer ce bourrin copier/coller...

Quelqu'un(e) saurait m'aider à trouver comment faire un bon raisonnement, avant que mon enthousiasme quasi-juvénile baisse drapeau ?

Merci d'avance !
JMarc

======= le 17-09-2010, 15:24:44 vous écriviez: =======

Allez, je me lance ! Après lecture et étude approfondie de la doc
Extensions (très bien faite mais un peu courte pour moi)... que dolor ! :stuck_out_tongue:
Toutes mes excuses par avance pour la longueur de ce post : je souhaite
montrer ce qui se passe dans ma cervelle, alors forcément, ça prend du
temps ! Le but peu visible est de trouver à terme une solution pour le
sujet "BarNumber et mesure à cheval sur 2 lignes".

_Par où commencer... Par ce que je sais faire..._
Prenons ce bout de code :
\version "2.13"
{c4 c c d e2 d \bar "|."}

Si je veux écrire Bravo ! au-dessus du premier c4, *en Scheme*, voici
comment je procède :
\version "2.13"
\displayMusic{
c4^"Bravo !" c c d e2 d \bar "|."
}
puis :
lilypond machin.ly>display.txt

Dans display.txt, je repère le code qui crée le Bravo ! :
(make-music
          '*EventChord*
          'elements
          (*list* (make-music
                  'NoteEvent
                  'duration
                  (ly:make-duration 2 0 1 1)
                  'pitch
                  (ly:make-pitch -1 0 0))
                (make-music
                  'TextScriptEvent
                  'direction
                  1
                  'text
                  "Bravo !")
C'est donc dans une liste de propriétés liées à EventChord. Je fais un
honteux plagiat de la doc (page 13 et suivantes) et je ponds la fonction
du siècle :
bravo = #(define-music-function (parser location event-chord)(*ly:music?*)
;la variable est event-chord de type ly:music
"écrit Bravo ! au dessus de la note"
(let ((result-event-chord (ly:music-deep-copy event-chord)))
;declaration de la variable locale result-event-chord. On lui donne la
valeur de music-deep copy
  (set! (ly:music-property result-event-chord 'elements)
    (cons (make-music *;ici je copie la partie de display.txt qui
m'intéresse*
          'TextScriptEvent
          'direction
          1
          'text
          "Bravo !") (ly:music-property result-event-chord 'elements)))
  result-event-chord)
  )
et on modifie le code de la parto pour utiliser cette fonction :
\version "2.13"
{\bravo c4 c c d e2 d \bar "|."}

Et ça marche.
Le pied.

_Par où finir... Par ce que je ne sais pas faire..._
Maintenant, je souhaite en venir aux numéros de mesure. Même méthode :

Un petit \displayMusic sur le code suivant :
\version "2.13"
\displayMusic{
c4 c c d \break
\set Score.currentBarNumber=#50 e2 d \bar "|." }
}

J'obtiens le code interressant suivant (en partant "du haut") :
(make-music
  'SequentialMusic
  'elements
  (list (make-music
        ...)
*;la partie concernant le \break, qui est ratachée à un EventChord,
comme plus haut*
        (make-music
          'EventChord
          'elements
          (list (make-music
                  'LineBreakEvent
                  'break-permission
                  'force)))
*;la partie concernant le n° de mesure, pas du tout de la même forme que
plus haut ! >:o
* (make-music
          'ContextSpeccedMusic
          'context-type
          'Score
          'element
          (make-music
            'PropertySet
            'value
            50
            'symbol
            'currentBarNumber))

Allons-y quand-même !

mesureD = #(define-music-function (parser location score)(ly:music?)
;question : la variable score et son type sont-ils bon ?
"force la numérotation en tête de ligne à 50"
(let ((result-score (ly:music-deep-copy score)))
  (set! (ly:music-property result-score 'elements)
        (cons (make-music
            'PropertySet
            'value
            50
            'symbol
            'currentBarNumber) (ly:music-property result-score 'elements)))
  result-score)

Le hasard ayant pu de place en cette matière, ça plante complet à
l'utilisation avec les messages suivants :
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 : « property-set »

Or j'ai un mal fou à faire évoluer ce bourrin copier/coller...

Quelqu'un(e) saurait m'aider à trouver comment faire un bon
raisonnement, avant que mon enthousiasme quasi-juvénile baisse drapeau ?

Merci d'avance !

Bravo, ce petit tutoriel permet de découvrir bien des choses sur l'interface entre LilyPond et Scheme
Grand merci,

Jean-François

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

= = = = = = = = = ========= = = = = = = = = = =

Pas de mérite, vraiment : la doc est assez explicite et "ils" expliquent bien comment partir de 0 sans pour autant réinventer le code.
Dois-je en déduire que tu ne pourras pas m'aider ? :cry:

A bientôt !
JMarc

**???:**Éditions_IN_NOMINE
**????:**17-09-2010 17:04:06
**???:**j-f.lucarelli
**??:**Lilypond User FR
**??:**Re: BarNumber et mesure à_cheval_sur_2_lignes

Pas de mérite, vraiment : la doc est assez explicite et "ils" expliquent bien comment partir de 0 sans pour autant réinventer le code.
Dois-je en déduire que tu ne pourras pas m'aider ? :cry:

A bientôt !
JMarc

Je n'ai pas encore mis les mains dans le cambouis. Mais ce n'est pas l'envie qui manque.
Malheureusement, à 60 ans, l'assimilation de nouvelles techniques est très lente, et c'est ce qui me rebute un peu.

Alors, quand il y a une difficulté dans LilyPond, j'ai tendance à bricoler un peu, avec les risques d'une portabilité
défectueuse lors du passage à une version ultérieure.

Jean-François

Joli raisonnement. J'apporte ma très maigre contribution :

Le hasard ayant peu de place en cette matière, ça plante complet à l'utilisation
Dans ta fonction mesureD tu as oublié un bout, c'est pour cela que ça plante, il faut vraiment écrire toutes les lignes ci-dessous, car le 2e make-music est inclus dans le premier, il ne se suffit pas à lui-même. Donc :
(make-music
'ContextSpeccedMusic
'context-type
'Score
'element
(make-music
'PropertySet
'value
50
'symbol
'currentBarNumber))

>;question : la variable score et son type sont-ils bon ?
Explication, je reprends le début de ta fonction :

mesureD = #(define-music-function (parser location score)(ly:music?)
... )

Que tu utilises comme ceci :
{ do4 do do re mi2 re \mesureD do4 mi re re do1}
Telle qu'elle est écrite ta fonction attend un argument. Cet argument vient tout de suite après le nom de la fonction quand elle est appelée.
Quand tu avais utilisé ta fonction "bravo" elle prenait un argument, dans ton exemple {\bravo c4 c c d e2 d \bar "|."} il s'agissait de ce qui suivait, c'est à dire "c4", et ça tombe bien tu avais besoin d'une note où accrocher ton markup. Cet argument avait été baptisé "event-chord", parce que c'est un nom intelligent qui indique bien ce que contient l'argument, mais on aurait très bien pu lui donner un nom idiot. Cet exemple marche aussi :

bravo = #(define-music-function (parser location nom-idiot)(ly:music?)
(let ((pas-mieux (ly:music-deep-copy nom-idiot)))
(set! (ly:music-property pas-mieux 'elements)
(cons (make-music ;ici je copie la partie de display.txt qui m'intéresse
'TextScriptEvent
'direction
1
'text
"Bravo !") (ly:music-property pas-mieux 'elements)))
pas-mieux)
)
\relative c' {\bravo c4 c c d e2 d \bar "|."}

Donc pour répondre à ta première partie de question, que ta variable s'appelle "score" ou "superqualifragnagnagna" on s'en fout, ce qui compte c'est que tu saches à quoi cela correspond. Pour le type, pas d'erreur, quand tu écris { do4 do do re mi2 re \mesureD do4 mi re re do1} ce qui suit \mesureD, donc dans mon exemple do4, est bien du type ly:music

Ma maigre contribution scheme s'arrête là... je suis trop une crasse.
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

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

Bon. J'ai branché le cerveau et j'ai trouvé, comme quoi mon intuition de ce matin était la bonne !

Après avoir mouliné quelques fonctions (j'ai les mains pleines de cambouis) et notamment comparé l'échelonnement des blocs (make-music des résultats de \displayMusic, je me suis (ré) aperçu du fait que le passage forçant le n° de mesure n'était pas dans un Event-Chord mais en dehors, et directement attaché à la racine 'SequentialMusic... comme toutes les notes d'ailleurs...

J'ai testé un truc tout bête : une fonction sans argument (p.18 de la doc pdf) qui ajoute un do là où il n'y en avat pas :

ajouterDo = #(define-music-function (parser location)() ==>pas d'argument, donc
"fonction sans argument insérant un c4"
(make-music ==>je copie/colle un bolc complet \displayMusic{c4}
'EventChord
'elements
(list (make-music
'NoteEvent
'duration
(ly:make-duration 2 0 1 1)
'pitch
(ly:make-pitch -1 0 0))))
)

et rien d'autre.

{
c4 s c d e2 d \bar "|." \break
c4 \ajouterDo c d e2 d \bar"|."
}

vous convaincra sûrement !

Je me dis donc qu'il suffit de faire la même chose pour mon mesureD, puisque le (music-make correspondant est au même niveau hiérarchique que (make-music 'Event-Chord... Allons-y :

mesureD =#(define-music-function (parser location)() ==>une fonction sans argument
"force BarNumber to 50 after a break"
(make-music ==>le copier/coller du \displayMusic
'ContextSpeccedMusic
'context-type
'Score
'element
(make-music
'PropertySet
'value
50
'symbol
'currentBarNumber))
)

{c4 c c d \break
\mesureD e2 d \bar "|."
}

YES !!!

Merci pour votre soutient !

Dans nos prochains aventures extraordinaires, nous tâcherons d'aboutir au sujet de ce post, quand-même !

A bientôt
JMarc

Parce qu'au bout d'un moment à force d'essais et de petites fonctions de débutant on va finir par devenir bons... Si si j'y crois.
J'aurais fait beaucoup plus simple pour ta fonction :

mesureD = #(define-music-function (parser location)()
#{ \set Score.currentBarNumber = 50 #} )
``
La lilypondienne laisse la parole à la musicienne : perso je n'aime pas voir un numéro de mesure en début de ligne dans les cas de mesures à cheval sur 2 lignes. J'ai toujours une grosse hésitation sur "oui mais l'éditeur à choisi d'écrire le numéro de la mesure en cours ou le suivant ?", si bien que je me retrouve quand même à compter depuis le système d'avant ou d'après, ou alors je choisis la solution de facilité : "nan finalement on va reprendre à la barre de reprise" :-p Ce que j'apprécie le plus c'est quand la mesure suivante (donc la 1ère entière du système) est numérotée.
Enfin... les goûts et les couleurs...
Cécile

···

Le 20/09/2010 14:41, Éditions IN NOMINE a écrit :

Bon. J'ai branché le cerveau et j'ai trouvé, comme quoi mon intuition de ce matin était la bonne !

Après avoir mouliné quelques fonctions (j'ai les mains pleines de cambouis) et notamment comparé l'échelonnement des blocs (make-music des résultats de \displayMusic, je me suis (ré) aperçu du fait que le passage forçant le n° de mesure n'était pas dans un Event-Chord mais en dehors, et directement attaché à la racine 'SequentialMusic... comme toutes les notes d'ailleurs...

J'ai testé un truc tout bête : une fonction sans argument (p.18 de la doc pdf) qui ajoute un do là où il n'y en avat pas :

ajouterDo = #(define-music-function (parser location)() ==>pas d'argument, donc
"fonction sans argument insérant un c4"
(make-music ==>je copie/colle un bolc complet \displayMusic{c4}
'EventChord
'elements
(list (make-music
'NoteEvent
'duration
(ly:make-duration 2 0 1 1)
'pitch
(ly:make-pitch -1 0 0))))
)

et rien d'autre.

{
c4 s c d e2 d \bar "|." \break
c4 \ajouterDo c d e2 d \bar"|."
}

vous convaincra sûrement !

Je me dis donc qu'il suffit de faire la même chose pour mon mesureD, puisque le (music-make correspondant est au même niveau hiérarchique que (make-music 'Event-Chord... Allons-y :

mesureD =#(define-music-function (parser location)() ==>une fonction sans argument
"force BarNumber to 50 after a break"
(make-music ==>le copier/coller du \displayMusic
'ContextSpeccedMusic
'context-type
'Score
'element
(make-music
'PropertySet
'value
50
'symbol
'currentBarNumber))
)

{c4 c c d \break
\mesureD e2 d \bar "|."
}

YES !!!

Merci pour votre soutient !

Dans nos prochains aventures extraordinaires, nous tâcherons d'aboutir au sujet de ce post, quand-même !

A bientôt
JMarc

Parce qu'au bout d'un moment à force d'essais et de petites fonctions de débutant on va finir par devenir bons... Si si j'y crois.
J'aurais fait beaucoup plus simple pour ta fonction :

mesureD = #(define-music-function (parser location)()
#{ \set Score.currentBarNumber = 50 #} )
``
La lilypondienne laisse la parole à la musicienne : perso je n'aime pas voir un numéro de mesure en début de ligne dans les cas de mesures à cheval sur 2 lignes. J'ai toujours une grosse hésitation sur "oui mais l'éditeur à choisi d'écrire le numéro de la mesure en cours ou le suivant ?", si bien que je me retrouve quand même à compter depuis le système d'avant ou d'après, ou alors je choisis la solution de facilité : "nan finalement on va reprendre à la barre de reprise" :-p Ce que j'apprécie le plus c'est quand la mesure suivante (donc la 1ère entière du système) est numérotée.
Enfin... les goûts et les couleurs...
Cécile

···

Le 20/09/2010 14:41, Éditions IN NOMINE a écrit :

Bon. J'ai branché le cerveau et j'ai trouvé, comme quoi mon intuition de ce matin était la bonne !

Après avoir mouliné quelques fonctions (j'ai les mains pleines de cambouis) et notamment comparé l'échelonnement des blocs (make-music des résultats de \displayMusic, je me suis (ré) aperçu du fait que le passage forçant le n° de mesure n'était pas dans un Event-Chord mais en dehors, et directement attaché à la racine 'SequentialMusic... comme toutes les notes d'ailleurs...

J'ai testé un truc tout bête : une fonction sans argument (p.18 de la doc pdf) qui ajoute un do là où il n'y en avat pas :

ajouterDo = #(define-music-function (parser location)() ==>pas d'argument, donc
"fonction sans argument insérant un c4"
(make-music ==>je copie/colle un bolc complet \displayMusic{c4}
'EventChord
'elements
(list (make-music
'NoteEvent
'duration
(ly:make-duration 2 0 1 1)
'pitch
(ly:make-pitch -1 0 0))))
)

et rien d'autre.

{
c4 s c d e2 d \bar "|." \break
c4 \ajouterDo c d e2 d \bar"|."
}

vous convaincra sûrement !

Je me dis donc qu'il suffit de faire la même chose pour mon mesureD, puisque le (music-make correspondant est au même niveau hiérarchique que (make-music 'Event-Chord... Allons-y :

mesureD =#(define-music-function (parser location)() ==>une fonction sans argument
"force BarNumber to 50 after a break"
(make-music ==>le copier/coller du \displayMusic
'ContextSpeccedMusic
'context-type
'Score
'element
(make-music
'PropertySet
'value
50
'symbol
'currentBarNumber))
)

{c4 c c d \break
\mesureD e2 d \bar "|."
}

YES !!!

Merci pour votre soutient !

Dans nos prochains aventures extraordinaires, nous tâcherons d'aboutir au sujet de ce post, quand-même !

A bientôt
JMarc

Parce qu'au bout d'un moment à force d'essais et de petites fonctions de débutant on va finir par devenir bons... Si si j'y crois.
J'aurais fait beaucoup plus simple pour ta fonction :

mesureD = #(define-music-function (parser location)()
#{ \set Score.currentBarNumber = 50 #} )
``

Ben oui, mais c'est moins drôle, comme ça ! Mettre des gants pour aller dans le cambouis, quel dommage ! :stuck_out_tongue:

La lilypondienne laisse la parole à la musicienne : perso je n'aime pas voir un numéro de mesure en début de ligne dans les cas de mesures à cheval sur 2 lignes. J'ai toujours une grosse hésitation sur "oui mais l'éditeur à choisi d'écrire le numéro de la mesure en cours ou le suivant ?", si bien que je me retrouve quand même à compter depuis le système d'avant ou d'après, ou alors je choisis la solution de facilité : "nan finalement on va reprendre à la barre de reprise" :-p

Pareil, mais on subit souvent le saut de ligne, et il n'est pas très élégant, à mon sens, de laisser un chti bout de texte en fin de ligne après une barre de reprise... J'aime bien la ligne qui commence avec la levée de la seconde partie, comme au début de la partition... En fait, j'ai compulsé mes diverses bibles, dont les suites de Bach pour violoncelle (pour avoir des gavottes qui présentent ce pb) éditées chez Bärenreiter (décidément, je trouve leurs mises en page très belles), eh bien tous ont choisi de numéroter toutes les lignes en tête de système uniquement, et de résoudre notre pb en donnant le n° de la mesure n+1 en cas de mesure incomplète. Une sorte de consensus sur cette pratique m'a fait adopter, Panurge parmi tant d'autres (sautons du cochon au mouton !), ce système.

Ce que j'apprécie le plus c'est quand la mesure suivante (donc la 1ère entière du système) est numérotée.

Oui, mais si toutes les lignes sont numérotées, SAUF celle-ci, je trouve ça bizarre, non ?

Enfin... les goûts et les couleurs...

Yes Madam' ! Ya qu'à choisir ! C'est fou ce que c'est dur ! Je te fouttrai pas de n° du tout, et hardi petit : rendez-vous au point d'orgue !

Cécile

JMarc
PS : j'ai généralisé ta solution à mon édition en cours (tablatures allemandes de Gerle), en attendant la solution ultime. Mais en fait, ça n'est pas si lourd. Merci encore !