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

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

Re: Bug de LilyPond : \bar "" avec note*a/b


From: Valentin Villenave
Subject: Re: Bug de LilyPond : \bar "" avec note*a/b
Date: Sun, 9 Dec 2018 20:02:16 +0100

On 12/9/18, Jean ABOU SAMRA <address@hidden> wrote:
> Bonjour,
> Merci pour vos réponses rapides.

De rien ; n’oubliez pas d’inclure la liste si vous souhaitez que la
discussion puisse se prolonger de façon plus élargie.

> Pour ce qui est du point ou non de « d2 », il est vrai que de le supprimer
> fait revenir le fonctionnement à la normale. Toutefois, il ne s’agit pas
> d’une faute de frappe mais bien d’un ajout délibéré : il est vrai que
> LilyPond gère la situation lorsque le ré est une blanche, mais il relève du
> bug qu’il échoue à faire la même chose avec une blanche pointée. D’ailleurs,
> selon mes expérimentations,  le problème se produit lorsque la durée du ré
> de la portée du bas devient supérieure à celle du do de la portée du haut
> (testé à l’aide d’un script qui a généré cent partitions et relevé les
> erreurs).

Oui, d’ailleurs peu importe l’ordre des deux portées, le bug se
produit de toute façon.

Plus intéressant : si l’on donne à la commande \bar un argument
qu’elle connaît, le bug n’advient pas.

\bar "|" % -> pas de bug
\bar "||" % -> pas de bug
\bar "|." % -> pas de bug
\bar "n'importequoi" % -> bug
\bar "" % -> bug

C’est ici que réside, à mon sens, le véritable bug : \bar "" est une
syntaxe tout à fait admise et recommandée officiellement, or il se
comporte comme un argument non-reconnu.

> Pour ce qui est de trouver un exemple de musique où l’on a besoin de notes
> qui chevauchent une mesure à la fin du morceau, voici un aperçu du genre de
> musique sur lequel je travaillais :
>
> \version "2.18.2"
> % exemple où l'on a besoin d'une note à cheval sur deux mesures en fin de
> morceau
> % les deux \omit et le \autoBeamOff peuvent se résumer dans un \cadenzaOn
> % cela évite l’espacement anormal sur la deuxième portée
> % et cela fige la mesure en cours
> <<
>   \new Staff \relative c' {
>     % désactiver l'impression de l'armure et des barres de mesure
>     \omit Staff.TimeSignature
>     \omit Staff.BarLine
>     % désactiver les ligatures automatiques
>     \autoBeamOff
>     f8 e f d e c d d1*15/8
>     \undo \omit Staff.BarLine
>     \bar "|."
>   }
>   \new Staff \relative c' {
>     \omit Staff.TimeSignature
>     \omit Staff.BarLine
>     \autoBeamOff
>     r1*7/8 f8 e f d e c d d1
>     \undo \omit Staff.BarLine
>   }
>>>
>
> Il s’agit d’une notation un peu ancienne transcrite avec des glyphes récents
> (d’où le choix dans l'exemple de la phrase du Dies Iræ). La ronde n’indique
> pas vraiment une durée de huit croches mais une note longue, de durée
> étirable, et l’alignement vertical avec l’autre portée doit indiquer
> l’endroit où l’on reprend.

Oui, c’est exactement ce à quoi sert \cadenzaOn comme vous le faites
remarquer. Sauf que ce que vous faites ici ne correspond pas
exactement à ce que fait \cadenzaOn, comme vous pouvez le voir dans le
fichier property-init.ly dans le répertoire ly/ de votre installation
de LilyPond :

cadenzaOn  = \set Timing.timing = ##f

cadenzaOff = \set Timing.timing = ##t

cadenzaOn a pour effet de désactiver entièrement (et pour toutes les
voix, toutes les portées) le compteur de temps et de mesures ; il n’y
a donc plus de barres de mesure ni de ligatures.

> Notez bien que dans cet exemple, les mesures sont bien présentes, même si
> l’on a désactivé l’affichage de l’armure et des barres de mesure. Pour
> preuve, il y a un espace anormal sur la deuxième portée entre la première et
> la deuxième croche, à l’endroit où l’on devrait normalement trouver une
> barre de mesure.

Cet inconvénient ne se produirait pas avec cadenzaOn, comme vous
l’avez fait remarquer. Une autre possibilité serait d’enlever
complètement le graveur de barres de mesure (ce qui n’affecte pas la
double barre finale) :

\layout {
  \context {
    \Score
    \remove Default_bar_line_engraver
  }
}

> Néanmoins, le bug constaté semble provenir de causes plus profondes que le
> chevauchement d’une mesure en fin de morceau, comme le montre la
> constatation plus haut : dans la nouvelle formulation proposée — qui est
> effectivement étonamment simple — le ré blanche pointée ne traverse pas la
> mesure à 4/4. De plus, j’avais été confronté au problème en utilisant
> \cadenzaOn plutôt que les deux \omit , or la commande \cadenzaOn est censée
> figer la mesure en cours, donc pas de chevauchement de mesure.

Donc si je comprends bien, vous avez besoin que les mesures existent
quand même, sans qu’on n’en voie aucune trace ? (Quid des numéros de
mesure en début de système, par exemple ?)

Posé comme cela, il me semble que le problème est moins d’adapter la
durée des rondes que celle des croches, de façon à les faire rentrer
dans des mesures à 4 temps, comme ceci :

  f8*8/7 e f d e c d d1

Ou bien en utilisant \scaleDurations :

<<
  \new Staff \relative c' {
    \omit Staff.TimeSignature
    \omit Staff.BarLine
    \autoBeamOff
    \scaleDurations 8/7 {f8 e f d e c d} d1*2
    \scaleDurations 8/9 {f8 g f e d c e f e} d1*2
    \undo \omit Staff.BarLine
    \bar "|."
  }
  \new Staff \relative c' {
    \omit Staff.TimeSignature
    \omit Staff.BarLine
    \autoBeamOff
    r1
    \scaleDurations 8/7 {f8 e f d e c d} d1
    r
    \scaleDurations 8/9 {f8 g f e d c e f e} d1
    \undo \omit Staff.BarLine
  }
>>

D’ailleurs je viens d’ajouter le snippet suivant sur le LSR, qui
offrirait une fonction encore plus simple d’utilisation que
\scaleDurations :

\scaleToLength 1 {f8 e f d e c d}

http://lsr.di.unimi.it/LSR/Item?id=1077

En tout cas puisque vous n’utilisez pas \cadenzaOn, vous avez la
possibilité d’utiliser bel et bien les mesures à quatre temps pour la
synchronisation verticale entre les voix, mais en adaptant ce qui se
passe à l’intérieur plutôt que de laisser les barres de mesure
(invisibles ou non) tomber au milieu des croches.

Cordialement,
V. Villenave.



reply via email to

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