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

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

Sauts de système


From: Jean ABOU SAMRA
Subject: Sauts de système
Date: Tue, 1 Jan 2019 20:22:33 +0100

Bonjour,

Décidément, j'ai besoin de notations de plus en plus complexes… Je travaille sur deux extraits, l'un non-mesuré et l'autre polymétrique. LilyPond permet les deux notations avec une facilité remarquable. Toutefois, je rencontre quelques problèmes en ce qui concerne les sauts de système.
En effet, par défaut, un saut de système ne peut pas intervenir au milieu d'une mesure. Cela reste vrai pendant une cadence : les sauts de système sont désactivés. La solution officielle pour autoriser les sauts est de placer \bar "" à chaque endroit où un saut peut intervenir.
Toutefois, cela peut finir par rendre le code assez lourd. Dans cet exemple de Satie (fin des Airs à faire fuir), il n'y a aucune barre de mesure, sauf à la fin, où une double barre est présente. Je supprimerais volontiers le Bar_engraver , ce qui permet les sauts partout, mais je ne peux plus obtenir la double barre en fin de morceau.
https://www.dropbox.com/s/lbd3qnhz0gy3ygp/Exemple%20Satie.pdf?dl=0
Si l'on suit la documentation, pour autoriser les sauts n'importe où, il faut placer \bar "" après chaque note ! Je sais qu'il est possible de redéfinir le symbole | par l'instruction
"|" = \bar ""
et l'on place | au lieu de \bar "" . Mais cela reste assez lourd, et l'on ne dispose plus des contrôles de mesure (barcheck). (Je préfèrerais ne pas décider moi-même des sauts car LilyPond le fait automatiquement bien mieux que moi, et de plus il faut tout refaire si on ajoute trois note au beau milieu de la pièce.)
Une autre solution est d'imposer une métrique en interne, et de simuler \cadenzaOn sur la partition (comme dans notre précédent échange). Néanmoins, cela n'est pas toujours possible. Dans le cas d'une musique polymétrique, chaque portée a sa propre métrique, et l'on ne peut pas lui en donner une autre qui gèrerait les sauts de système, alors que j'aimerais que les sauts soient autorisés même au milieu d'une mesure. On doit alors revenir aux \bar "" (ou | avec "|" = \bar "" ) et le code est particulièrement incompréhensible, car il faut déterminer où tombent les mesures des autres portées.

Ma question est donc : est-il possible de régler l'algorithme de sauts de système, pour autoriser les sauts à n'importe quel endroit ? Ce serait encore mieux si l'on pouvait tenir compte des mesures d'une seule portée, et ignorer la mesure des autres.

À la fin de ce message se trouve un code avec quelques exemples comme illustration.

Merci pour votre aide,
Jean Abou Samra.

PS : Déplacer le Timing_translator et le Default_bar_engraver du contexte Score vers le contexte Staff semble régler le problème du premier avertissement, cela permet de placer un \break sans erreur. Mais cela n'autorise pas pour autant le saut implicite au milieu d'une mesure ou dans une cadence.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"

% diverses manières d'indiquer les sauts de système possibles

% mauvais ; génère un avertissement

\relative c' {
\time 2/4
c4 d |
c \break d |
c d
}

% bon

\relative c' {
\time 2/4
c4 d |
c \bar "" \break d |
c d
}

% code lourd, voire incompréhensible

\relative c' {
\cadenzaOn
c4 \bar "" d \bar "" e \bar "" f \bar "" g \bar "" a \bar "" b \bar "" c \bar "" d \bar "" e \bar "" f \bar "" g \bar "" a \bar "" b \bar "" c \bar "" b \bar "" a \bar "" g \bar "" f \bar "" e \bar "" d \bar "" c \bar "" b \bar "" a \bar "" g \bar "" f \bar "" e \bar "" d \bar "" c  \bar "" d \bar "" e \bar "" f \bar "" g \bar "" a \bar "" b \bar "" c \bar "" d \bar "" e \bar "" f \bar "" g \bar "" a \bar "" b \bar "" c \bar "" b \bar "" a \bar "" g \bar "" f \bar "" e \bar "" d \bar "" c \bar "" b \bar "" a \bar "" g \bar "" f \bar "" e \bar "" d \bar "" c
\bar "|."
}

% déjà mieux, mais toujours pas extraordinaire

"|" = \bar ""
\relative c' {
\cadenzaOn
c4 | d | e | f | g | a | b | c | d | e | f | g | a | b | c | b | a | g | f | e | d | c | b | a | g | f | e | d | c | d | e | f | g | a | b | c | d | e | f | g | a | b | c | b | a | g | f | e | d | c | b | a | g | f | e | d | 
\bar "|."
}

% compliqué quand la musique devient plus longue

\score {
  % autoriser chaque portée à avoir sa propre métrique
  \layout {
    \context {
      \Score
      \remove "Timing_translator"
      \remove "Default_bar_line_engraver"
    }
    \context {
      \Staff
      \consists "Timing_translator"
      \consists "Default_bar_line_engraver"
    }
  }
  <<
    \relative c' { \time 2/4  c4 d c \bar "" d c d c d c \bar "" d c d }
    \relative c' { \time 3/4  c4 d e c d e c d e c d e }
  >>
}

% ce que j'aimerais

%{
\relative c' {
\cadenzaOn
\breakAnywhereOn % à trouver
c4 d e f g a b c d e f g a b c b a g f e d c b a g f e d c
\cadenzaOff
\bar "|:"
%}



reply via email to

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