Hampes trop longues avec NullVoice

Bonjour,

Je reviens avec un nouveau bug qui m'embête bien, et que j'aimerais
résoudre. Voici un exemple minimal : <http://lilybin.com/ds9e6q/1&gt;\.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"
notes = \relative c' { c8 d e4 e' f8 g }
\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice { \notes }
    >>
    \new Staff <<
      \new Voice { \notes }
      \new NullVoice { \notes }
    >>
  >>
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Le problème est que les hampes des croches avec ligature deviennent
trop longues aussitôt que l'on ajoute un NullVoice dans le Staff.

Je n'ai aucunement l'intention de supprimer le NullVoice parce que
j'en ai besoin pour aligner les paroles (non reproduites dans cet
exemple minimal). Du coup, comment rendre à mes croches des hampes
de longueur raisonnable ?

Cordialement,

···

--
Olivier Miakinen

Salut,

Je ne sais pas s'il y a un moyen de corriger cela en 2.18.2, mais en 2.19.48 c'est corrigé.

A+

···

Christophe Pochon

Bonjour Olivier,
Ça a l'air de fonctionner, à vérifier :

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new SansVoix { \notes }

\layout {
\context {
\name SansVoix
\type "Engraver_group"
\alias NullVoice
}
\context {
\Staff
\accepts "SansVoix"
}
}
}

···

Le dim. 28 oct. 2018 à 22:24, Olivier Miakinen <****@****> a écrit :

Bonjour,

Je reviens avec un nouveau bug qui m'embête bien, et que j'aimerais
résoudre. Voici un exemple minimal : <http://lilybin.com/ds9e6q/1>.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"
notes = \relative c' { c8 d e4 e' f8 g }
\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new NullVoice { \notes }

}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Le problème est que les hampes des croches avec ligature deviennent
trop longues aussitôt que l'on ajoute un NullVoice dans le Staff.

Je n'ai aucunement l'intention de supprimer le NullVoice parce que
j'en ai besoin pour aligner les paroles (non reproduites dans cet
exemple minimal). Du coup, comment rendre à mes croches des hampes
de longueur raisonnable ?

Cordialement,

Olivier Miakinen


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

Le 29/10/2018 17:21, Pierre Perol-Schneider m'a répondu :

Bonjour Olivier,
Ça a l'air de fonctionner, à vérifier :

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice { \notes }
    >>
    \new Staff <<
      \new Voice { \notes }
      \new SansVoix { \notes }
    >>
  >>
  \layout {
    \context {
      \name SansVoix
      \type "Engraver_group"
      \alias NullVoice
    }
    \context {
      \Staff
      \accepts "SansVoix"
    }
  }
}

Ça fonctionne parfaitement bien pour les hampes. Mais en revanche je ne
peux pas associer de Lyrics à un SansVoix, ça me donne le message :
Avertissement : impossible de repérer la voix (Voice) « nom »

Voir <lilybin.com; (mais n'affiche pas le message), ou :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice { \notes }
    >>
    \new Staff <<
      \new Voice { \notes }
      \new SansVoix = "sansvoix" { \notes }
      \new Lyrics \lyricsto "sansvoix" { c d e e f g }
    >>
  >>
  \layout {
    \context {
      \name SansVoix
      \type "Engraver_group"
      \alias NullVoice
    }
    \context {
      \Staff
      \accepts "SansVoix"
    }
  }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[désolé pour le premier envoi en privé]

Le 29/10/2018 08:27, Christophe Pochon m'a répondu :

Je ne sais pas s'il y a un moyen de corriger cela en 2.18.2, mais en
2.19.48 c'est corrigé.

Bon sang, tu as raison ! Alors que c'est si facile à vérifier avec
Lilybin, je n'avais même pas essayé.

Il faut alors vraiment que j'installe la version instable de LilyPond ?
Je n'étais pas très chaud pour le faire tant que je pouvais me
débrouiller avec la version stable.

···

--
Olivier Miakinen

Ah et moi j'ai répondu aussi en privé, du coup :

Personnellement je travaille depuis des années avec les versions instables sans déconvenues.
Et je crois qu'il est possible d'avoir les deux versions sur le même ordinateur sans problème.
Le problème sera plutôt la tentation d'utiliser les nouvelles fonctionnalités de la 2.19, incompatibles avec la 2.18.
Je me suis très vite habitué par exemple à des c8 8 4 4. 8 2~8 4. qui dérangeraient la 2.18 :slight_smile:

···

Christophe Pochon

Personnellement je travaille depuis des années avec les versions instables
sans déconvenues.
Et je crois qu'il est possible d'avoir les deux versions sur le même
ordinateur sans problème.

Oui, je le crois aussi, mais j'ai un peu la flemme. C'est si confortable
de laisser son Linux décider quelle version des logiciels il installe !

Le problème sera plutôt la tentation d'utiliser les nouvelles
fonctionnalités de la 2.19, incompatibles avec la 2.18.
Je me suis très vite habitué par exemple à des c8 8 4 4. 8 2~8 4. qui
dérangeraient la 2.18 :slight_smile:

J'avoue que c'est une fonctionnalité que j'attends depuis longtemps, et
que je risque d'en user et d'en abuser si elle m'est permise. :slight_smile:

···

Le 29/10/2018 22:23, Christophe Pochon a écrit :

--
Olivier Miakinen

Bonjour Olivier,

Ça fonctionne parfaitement bien pour les hampes. Mais en revanche je ne
peux pas associer de Lyrics à un SansVoix, ça me donne le message :
Avertissement : impossible de repérer la voix (Voice) « nom »

Il y a quelques trucs mal fichu dans ce NullVoice; j'enverrai un rapport à ce propos au BugSquad.
Essaie :

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new NullVoice = "sansvoix" { \notes }
\new Lyrics \lyricsto "sansvoix" { c d e e f g }

\layout {
\context {
\NullVoice
\override NoteHead.stencil = ##f
}
}
}

... et vérifie bien que ça n'entraîne pas de décalages des paroles.

Cordialement,
Pierre

···

Le lun. 29 oct. 2018 à 22:19, Olivier Miakinen <****@****> a écrit :

Bonjour Pierre,

Ça fonctionne parfaitement bien pour les hampes. Mais en revanche je ne
peux pas associer de Lyrics à un SansVoix, ça me donne le message :
Avertissement : impossible de repérer la voix (Voice) « nom »

Il y a quelques trucs mal fichu dans ce NullVoice; j'enverrai un rapport à
ce propos au BugSquad.

Merci.

Essaie :

[...]
  \layout {
    \context {
      \NullVoice
      \override NoteHead.stencil = ##f
    }
  }
[...]

... et vérifie bien que ça n'entraîne pas de décalages des paroles.

Ça me donne des erreurs sur la partition complète (de 26 pages en une
dizaine de fichiers source... j'essaierai de faire un exemple minimal
ce soir si nécessaire).

erreur de programmation : slur attachment is inf/nan
poursuite ; croisons les doigts.
erreur de programmation : slur attachment is inf/nan
poursuite ; croisons les doigts.
erreur de programmation : slur attachment is inf/nan
poursuite ; croisons les doigts.
erreur de programmation : slur attachment is inf/nan
poursuite ; croisons les doigts.
/home/om/Documents/Monteverdi/Saison 2018-2019/Antonín
Dvořák/notes/pInotes.ily:116:24: Avertissement : slur trying to
encompass an empty note column.
  sol4\pp sol sol | sol
                       (\< fad8[ mi]) re4\! | mi2 re4 |
/home/om/Documents/Monteverdi/Saison 2018-2019/Antonín
Dvořák/notes/pInotes.ily:116:24: Avertissement : slur trying to
encompass an empty note column.
  sol4\pp sol sol | sol
                       (\< fad8[ mi]) re4\! | mi2 re4 |
Arrêté avec le code de retour 11.

Bon, je dois partir. Je reviens ce soir.

Cordialement,

···

Le 30/10/2018 10:11, Pierre Perol-Schneider a écrit :
--
Olivier Miakinen

Autre tentative :

%%%%%

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new SansVoix = "sansvoix" { \notes }
\new Lyrics \lyricsto "sansvoix" { c d e e f g }

\layout {
\context {
\name SansVoix
\type "Engraver_group"
\alias Voice
\override NoteHead.no-ledgers = ##t
\override NoteHead.X-extent = #'()
\override NoteHead.stencil = ##f
\override Beam.stencil = ##f
\override Slur.stencil = ##f
\override Tie.stencil = ##f
squashedPosition = 0
}
\context {
\Staff
\accepts "SansVoix"
}
}
}

%%%%

Cdt,
Pierre

···

Le mar. 30 oct. 2018 à 10:56, Olivier Miakinen <****@****> a écrit :

Bonjour Pierre,

Ça me donne des erreurs sur la partition complète (de 26 pages en une
dizaine de fichiers source... [...]

Corrections :

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new SansVoix = "sansvoix" { \notes }
\new Lyrics \lyricsto "sansvoix" { c d e e f g }

\layout {
\context {
\name SansVoix
\type "Engraver_group"
\alias Voice
\override NoteHead.no-ledgers = ##t
\override NoteHead.X-extent = #'()
\override NoteHead.stencil = ##f
\override Beam.stencil = ##f
\override NoteHead.stencil = ##f
\override Accidental.stencil = ##f
\override AccidentalCautionary.stencil = ##f
\override Slur.stencil = ##f
\override Tie.stencil = ##f
squashedPosition = 0
}
\context {
\Staff
\accepts "SansVoix"
}
}
}

Pierre

···

Le mar. 30 oct. 2018 à 12:34, Pierre Perol-Schneider <****@****> a écrit :

Autre tentative :

%%%%%

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new SansVoix = "sansvoix" { \notes }
\new Lyrics \lyricsto "sansvoix" { c d e e f g }

\layout {
\context {
\name SansVoix
\type "Engraver_group"
\alias Voice
\override NoteHead.no-ledgers = ##t
\override NoteHead.X-extent = #'()
\override NoteHead.stencil = ##f
\override Beam.stencil = ##f
\override Slur.stencil = ##f
\override Tie.stencil = ##f
squashedPosition = 0
}
\context {
\Staff
\accepts "SansVoix"
}
}
}

%%%%

Cdt,
Pierre

Le mar. 30 oct. 2018 à 10:56, Olivier Miakinen <****@****> a écrit :

Bonjour Pierre,

Ça me donne des erreurs sur la partition complète (de 26 pages en une
dizaine de fichiers source... [...]

C'est de mieux en mieux, je n'ai plus d'erreur et les hampes sont
correctes, malheureusement les Slur et les Tie ne sont plus respectés
pour le placement des paroles.

Illustration : <lilybin.com - Informationen zum Thema lilybin..

P.-S. : J'ai installé LilyPond 2.19 sur une autre machine, un Windows,
mais je n'ai pas pu y compiler ma partition à cause de la disparition
de la directive \partcombineApartOnce. Il faut que j'essaye avec la
nouvelle syntaxe de \partcombine mais je n'ai pas accès tous les jours
à cet autre ordi.

···

Le 30/10/2018 12:49, Pierre Perol-Schneider a écrit :

[...]
  \layout {
    \context {
      \name SansVoix
      \type "Engraver_group"
      \alias Voice
      \override NoteHead.no-ledgers = ##t
      \override NoteHead.X-extent = #'()
      \override NoteHead.stencil = ##f
      \override Beam.stencil = ##f
      \override NoteHead.stencil = ##f
      \override Accidental.stencil = ##f
      \override AccidentalCautionary.stencil = ##f
      \override Slur.stencil = ##f
      \override Tie.stencil = ##f
      squashedPosition = 0
    }
    \context {
      \Staff
      \accepts "SansVoix"
    }
  }
[...]

... Bon...
On va faire simple, que donne :

\version "2.18.2"

notes = \relative c' { c8 d e4( e') f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new NullVoice = "nullevoix" { \notes }
\new Lyrics \lyricsto "nullevoix" { c d "2e" __ f g }

\new Staff <<
\new Voice { \notes }
\new Voice = "sansvoix" {
\override NoteColumn.ignore-collision = ##t
\hideNotes
\notes
}
\new Lyrics \lyricsto "sansvoix" { c d "2e" __ f g }

\layout { }
}

Pierre

···

Le mar. 30 oct. 2018 à 12:49, Pierre Perol-Schneider <****@****> a écrit :

Corrections :

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new SansVoix = "sansvoix" { \notes }
\new Lyrics \lyricsto "sansvoix" { c d e e f g }

\layout {
\context {
\name SansVoix
\type "Engraver_group"
\alias Voice
\override NoteHead.no-ledgers = ##t
\override NoteHead.X-extent = #'()
\override NoteHead.stencil = ##f
\override Beam.stencil = ##f
\override NoteHead.stencil = ##f
\override Accidental.stencil = ##f
\override AccidentalCautionary.stencil = ##f
\override Slur.stencil = ##f
\override Tie.stencil = ##f
squashedPosition = 0
}
\context {
\Staff
\accepts "SansVoix"
}
}
}

Pierre

Le mar. 30 oct. 2018 à 12:34, Pierre Perol-Schneider <****@****> a écrit :

Autre tentative :

%%%%%

\version "2.18.2"

notes = \relative c' { c8 d e4 e' f8 g }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new SansVoix = "sansvoix" { \notes }
\new Lyrics \lyricsto "sansvoix" { c d e e f g }

\layout {
\context {
\name SansVoix
\type "Engraver_group"
\alias Voice
\override NoteHead.no-ledgers = ##t
\override NoteHead.X-extent = #'()
\override NoteHead.stencil = ##f
\override Beam.stencil = ##f
\override Slur.stencil = ##f
\override Tie.stencil = ##f
squashedPosition = 0
}
\context {
\Staff
\accepts "SansVoix"
}
}
}

%%%%

Cdt,
Pierre

Le mar. 30 oct. 2018 à 10:56, Olivier Miakinen <****@****> a écrit :

Bonjour Pierre,

Ça me donne des erreurs sur la partition complète (de 26 pages en une
dizaine de fichiers source... [...]

C'est ok pour les hampes, ok aussi pour les paroles.

En revanche j'ai des tonnes d'avertissements « collision de silences
insoluble : positionnement du silence indéterminée » (bien que les
silences ne soient pas visibles en double). Et ce sont les nuances
qui sont visibles en double.

Un exemple de rendu ici : <https://i.goopics.net/LknbY.png&gt;\.

···

Le 31/10/2018 01:33, Pierre Perol-Schneider a écrit :

... Bon...
On va faire simple, que donne :

[...]
      \new Voice = "sansvoix" {
        \override NoteColumn.ignore-collision = ##t
        \hideNotes
        \notes
      }
[...]

Au \hideNotes j'ai ajouté :
  \override DynamicText #'stencil = ##f
  \override DynamicTextSpanner #'stencil = ##f
  \override Hairpin #'stencil = ##f

... et ça semble fonctionner. Bon, j'ai toujours une tonne
d'avertissements, mais le résultat du PDF semble correct.
Euh... ah, sauf les \fermata qui restent en double.

···

Le 31/10/2018 02:17, Olivier Miakinen a écrit :

Le 31/10/2018 01:33, Pierre Perol-Schneider a écrit :

... Bon...
On va faire simple, que donne :

[...]
      \new Voice = "sansvoix" {
        \override NoteColumn.ignore-collision = ##t
        \hideNotes
        \notes
      }
[...]

C'est ok pour les hampes, ok aussi pour les paroles.

En revanche j'ai des tonnes d'avertissements « collision de silences
insoluble : positionnement du silence indéterminée » (bien que les
silences ne soient pas visibles en double). Et ce sont les nuances
qui sont visibles en double.

Un exemple de rendu ici : <https://i.goopics.net/LknbY.png&gt;\.

J'avais aussi des liaisons redoublées, supprimées avec :
  \override Slur #'stencil = ##f

En revanche je ne sais pas comment supprimer les doublons de points
d'orgue (\fermata).

Aussi, j'utilise une fonction pour mettre un Hairpin entre crochets,
et cette fonction redéfinit le Hairpin.stencil... autant dire que ça
annule l'effet de mon « \override Hairpin #'stencil ». :wink:

···

Le 31/10/2018 02:34, Olivier Miakinen a écrit :

Au \hideNotes j'ai ajouté :
  \override DynamicText #'stencil = ##f
  \override DynamicTextSpanner #'stencil = ##f
  \override Hairpin #'stencil = ##f

... et ça semble fonctionner. Bon, j'ai toujours une tonne
d'avertissements, mais le résultat du PDF semble correct.
Euh... ah, sauf les \fermata qui restent en double.

Ok, un dernier essai :

\version "2.18.2"

notes = \relative c' { c8< d\fermata e4( e') f8 g! }

\score {
\new ChoirStaff <<
\new Staff <<
\new Voice { \notes }

\new Staff <<
\new Voice { \notes }
\new NullVoice = "nullevoix" { \notes }
\new Lyrics \lyricsto "nullevoix" { c d "2e" __ f g }

\new Staff <<
\new Voice { \notes }
\new Voice = "sansvoix"
\with {
\override NoteColumn.ignore-collision = ##t
\remove Dots_engraver
\remove Dynamic_engraver
\remove Script_engraver
\remove Drum_notes_engraver
\remove New_fingering_engraver
\remove Rest_engraver
\remove Multi_measure_rest_engraver
\override Stem.length = #0
\override Stem.ignore-collision = ##t
\override Slur.transparent = ##t
\override Tie.transparent = ##t
%% ... etc si nécessaire
\hideNotes
} { \notes }
\new Lyrics \lyricsto "sansvoix" { c d "2e" __ f g }

\layout { }
}

... Sinon, pour la version 2.19 -- très stable, la 2.20 devrait voir le jour sous peu -- uninstall-lilypond suivi de sh lilypond-2.19... devrait prendre moins d'une minute...

Cordialement,
Pierre

···

Le mer. 31 oct. 2018 à 02:53, Olivier Miakinen <****@****> a écrit :

Le 31/10/2018 02:34, Olivier Miakinen a écrit :

Au \hideNotes j'ai ajouté :
\override DynamicText #'stencil = ##f
\override DynamicTextSpanner #'stencil = ##f
\override Hairpin #'stencil = ##f

... et ça semble fonctionner. Bon, j'ai toujours une tonne
d'avertissements, mais le résultat du PDF semble correct.
Euh... ah, sauf les \fermata qui restent en double.

J'avais aussi des liaisons redoublées, supprimées avec :
\override Slur #'stencil = ##f

En revanche je ne sais pas comment supprimer les doublons de points
d'orgue (\fermata).

Aussi, j'utilise une fonction pour mettre un Hairpin entre crochets,
et cette fonction redéfinit le Hairpin.stencil... autant dire que ça
annule l'effet de mon « \override Hairpin #'stencil ». :wink:


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

Ok, un dernier essai :

[...]

... qui n'a pas fonctionné. Le moindre \remove Whatever_engraver
entraîne une erreur fatale. Tant pis. Je te remercie d'avoir passé
tout ce temps à essayer de m'aider, même si finalement ça n'a pas
fonctionné.

... Sinon, pour la version 2.19 -- très stable, la 2.20 devrait voir le
jour sous peu -- uninstall-lilypond suivi de sh lilypond-2.19... devrait
prendre moins d'une minute...

Il y a juste une chose qui m'inquiète un peu, maintenant que j'ai
essayé avec une 2.19 sur Windows, c'est la compatibilité de mes
anciens fichiers. On peut avoir le convert-ly de la 2.19 avant de
désinstaller la 2.18 ?

···

Le 31/10/2018 10:37, Pierre Perol-Schneider a écrit :