Compression des silences

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :

\compressMMRests { }

mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart.
Quelle est la bonne syntaxe ?
Merci pour vos conseils.
Cordialement.
Christophe

Complément d'informations :
Le conducteur reprend le nom des instruments en abrégé au-delà de la première page.
Pour les parties séparées, ce n'est pas très utile, il n'y a qu'un instrument sur cette partition.
Comment les supprimer sur les parties séparées ?
Merci pour vos éclairages.
Cordialement.

Christophe

···

Le jeudi 31 mars 2022 à 16:56:10 UTC+2, xtof pno <****@****> a écrit :

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :

\compressMMRests { }

mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart.
Quelle est la bonne syntaxe ?
Merci pour vos conseils.
Cordialement.
Christophe

Bonjour

\layout {
\context {
\Score
skipBars = ##t
}
}

ou

global = {
\compressEmptyMeasures
}

cf LilyPond Notation Reference: 1.6.3 Writing parts
(et les mails précédents sur le sujet dans cette liste O:-) )

hth,
Frédéric

···

Le 31/03/2022 à 18:56, xtof pno a écrit :

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :
\compressMMRests{ } mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart. Quelle est la bonne syntaxe ? Merci pour vos conseils. Cordialement. Christophe

reBonjour liste,

LilyPond Notation Reference: 1.6.3 Writing parts traite de l'écriture des parties en général.
La partie LilyPond Notation Reference: 1.6.3 Writing parts s'occuppe des noms d'instruments.
Je cite :
« /La première ligne affichera la valeur de //|instrumentName|//, et les suivantes celle de //|shortInstrumentName|//./ »

Donc dans l'exemple de la page de la doc

\newStaff\with{
instrumentName="Violin "
shortInstrumentName="Vln. "
} {...}

enlever ou commenter la ligne short... n'affichera pas de nom.

reHth

Frédéric

···

Le 31/03/2022 à 19:03, Christophe Dubos a écrit :

Complément d'informations :
Le conducteur reprend le nom des instruments en abrégé au-delà de la première page.
Pour les parties séparées, ce n'est pas très utile, il n'y a qu'un instrument sur cette partition.
Comment les supprimer sur les parties séparées ?
Merci pour vos éclairages.
Cordialement.
Christophe

Le jeudi 31 mars 2022 à 16:56:10 UTC+2, xtof pno <****@****> > a écrit :

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :
\compressMMRests{ } mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart. Quelle est la bonne syntaxe ? Merci pour vos conseils. Cordialement. Christophe

Bonjour Christophe,

Pour info, ce message a dû être approuvé manuellement car il était
envoyé par une adresse qui n'est pas abonnée à la liste. Merci d'y
remédier en abonnant cette adresse, ou bien en utilisant votre autre
adresse (celle du post initial) qui est déjà abonnée.

À part cela, il me semble que ce que vous recherchez est ce qui est
décrit ici :

Par exemple :

\version "2.22.2"

laMusique = \new Staff {
\set Staff.instrumentName = "Violon"
\tag conducteur \set Staff.shortInstrumentName = "Vln."
c'1 g'1 \break c''1
}

{ \laMusique }
{ \removeWithTag conducteur \laMusique }

Subtilité : on ne peut pas faire \with { \tag conducteur shortInstrumentName = ... }
car une telle affectation (shortInstrumentName = ...) ne constitue pas
de la « musique » du point de vue de LilyPond. Par contre, on peut
le faire avec \set.

Cordialement,
Jean

···

Le 31/03/2022 à 17:03, Christophe Dubos a écrit :

Complément d'informations :
Le conducteur reprend le nom des instruments en abrégé au-delà de la première page.
Pour les parties séparées, ce n'est pas très utile, il n'y a qu'un instrument sur cette partition.
Comment les supprimer sur les parties séparées ?
Merci pour vos éclairages.
Cordialement.
Christophe

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :

\compressMMRests { }

mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart.
Quelle est la bonne syntaxe ?
Merci pour vos conseils.
Cordialement.
Christophe

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :
\compressMMRests{ } mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart. Quelle est la bonne syntaxe ? Merci pour vos conseils. Cordialement. Christophe

Un peu n'importe où, en fait, tant qu'elle est appliquée à de la « musique ». Par exemple, vous pouvez la mettre sur vos variables d'instrument :

violon = \compressMMRests \relative {
R1*5
}

violoncelle = \compressMMRests \relative {
R1*5
}

\score {
<<
\new Staff \violon
\new Staff \violoncelle
>>
}

Ou bien directement sur l'expression musicale du bloc \score :

violon = \relative {
R1*5
}

violoncelle = \relative {
R1*5
}

\score {
\compressMMRests <<
\new Staff \violon
\new Staff \violoncelle
>>
}

Pour faire une distinction entre conducteur et parties séparées, vous
pouvez l'appliquer seulement dans les \score des parties séparées :

violon = \compressMMRests \relative {
R1*5
}

violoncelle = \compressMMRests \relative {
R1*5
}

\score { \compressMMRests \violon }
\score { \compressMMRests \violoncelle }
\score { << \new Staff \violon \new Staff \violoncelle >> }

Cordialement,
Jean

···

Le 01/04/2022 à 09:43, xtof pno a écrit :

Oups, je voulais dire bien sûr :

violon = \relative {
R1*5
}

violoncelle = \relative {
R1*5
}

\score { \compressMMRests \violon }
\score { \compressMMRests \violoncelle }
\score { << \new Staff \violon \new Staff \violoncelle >> }

···

Le 01/04/2022 à 10:43, Jean Abou Samra a écrit :

Le 01/04/2022 à 09:43, xtof pno a écrit :

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il faudrait regrouper.
Je vois bien la commande :
\compressMMRests{ } mais je n'arrive pas à bien la placer. La compilation bloque dans le code général (saisie des notes) ou dans \bookpart. Quelle est la bonne syntaxe ? Merci pour vos conseils. Cordialement. Christophe

Un peu n'importe où, en fait, tant qu'elle est appliquée à de la « musique ». Par exemple, vous pouvez la mettre sur vos variables d'instrument :

violon = \compressMMRests \relative {
R1*5
}

violoncelle = \compressMMRests \relative {
R1*5
}

\score {
<<
\new Staff \violon
\new Staff \violoncelle
>>
}

Ou bien directement sur l'expression musicale du bloc \score :

violon = \relative {
R1*5
}

violoncelle = \relative {
R1*5
}

\score {
\compressMMRests <<
\new Staff \violon
\new Staff \violoncelle
>>
}

Pour faire une distinction entre conducteur et parties séparées, vous
pouvez l'appliquer seulement dans les \score des parties séparées :

violon = \compressMMRests \relative {
R1*5
}

violoncelle = \compressMMRests \relative {
R1*5
}

\score { \compressMMRests \violon }
\score { \compressMMRests \violoncelle }
\score { << \new Staff \violon \new Staff \violoncelle >> }

Bonjour Jean,
Merci pour votre réponse.

Malheureusement lorsque j'applique à la seule partie séparée la formule :

\bookpart {
\header {
subtitle = "Contrebasse" }
\score { \compressMMRests \scoreAContrabassPart }
\layout { }
\midi {
\tempo 4=100 } }
}

la compilation me renvoie le message d'erreur suivant :

/tmp/frescobaldi-jgiibyn_/tmpxrcy38cz/CK-Prélude-pour-bois-et-cordes.ly:885:18: Erreur : chaîne d'échappement inconnue : « \compressMMRests »

\score { {

\compressMMRests { \scoreAContrabassPart }


J'ai dû commettre une maladresse, mais laquelle ?
Merci pour votre indulgence et correction.
Bien cordialement.
Christophe

Bonjour,
Je souhaite éditer les parties séparées d'un conducteur.
Ces parties séparées comprennent de nombreuses mesures vides, qu'il
faudrait regrouper.
Je vois bien la commande :
\compressMMRests{ } mais je n'arrive pas à bien la placer. La
compilation bloque dans le code général (saisie des notes) ou dans
\bookpart. Quelle est la bonne syntaxe ? Merci pour vos conseils.
Cordialement. Christophe

Un peu n'importe où, en fait, tant qu'elle est appliquée à de la «
musique ». Par exemple, vous pouvez la mettre sur vos variables
d'instrument :

violon = \compressMMRests \relative {
R1*5
}

violoncelle = \compressMMRests \relative {
R1*5
}

\score {
<<
\new Staff \violon
\new Staff \violoncelle

}

Ou bien directement sur l'expression musicale du bloc \score :

violon = \relative {
R1*5
}

violoncelle = \relative {
R1*5
}

\score {
\compressMMRests <<
\new Staff \violon
\new Staff \violoncelle

}

Pour faire une distinction entre conducteur et parties séparées, vous
pouvez l'appliquer seulement dans les \score des parties séparées :

violon = \compressMMRests \relative {
R1*5
}

violoncelle = \compressMMRests \relative {
R1*5
}

\score { \compressMMRests \violon }
\score { \compressMMRests \violoncelle }
\score { << \new Staff \violon \new Staff \violoncelle >> }

Oups, je voulais dire bien sûr :

violon = \relative {
R1*5
}

violoncelle = \relative {
R1*5
}

\score { \compressMMRests \violon }
\score { \compressMMRests \violoncelle }
\score { << \new Staff \violon \new Staff \violoncelle >> }

···

Le vendredi 1 avril 2022 à 10:44:29 UTC+2, Jean Abou Samra <****@****> a écrit :
Le 01/04/2022 à 10:43, Jean Abou Samra a écrit :

Le 01/04/2022 à 09:43, xtof pno a écrit :

Ah… Je parie que vous utilisez une version ancienne tout en lisant une documentation récente. La commande \compressMMRests est apparue dans la série des 2.19. Faites un tour par la case mise à jour, la dernière version stable est la 2.22.2.

Cordialement,
Jean

···

Le 01/04/2022 à 15:02, xtof pno a écrit :

Bonjour Jean,
Merci pour votre réponse.
Malheureusement lorsque j'applique à la seule partie séparée la formule :

\bookpart {
\header {
subtitle = "Contrebasse" }
*\score { \compressMMRests \scoreAContrabassPart } *
\layout { }
\midi {
\tempo 4=100 } }
}

la compilation me renvoie le message d'erreur suivant :

/tmp/frescobaldi-jgiibyn_/tmpxrcy38cz/CK-Prélude-pour-bois-et-cordes.ly:885:18: Erreur : chaîne d'échappement inconnue : « \compressMMRests »

\score { {

\compressMMRests { \scoreAContrabassPart }

J'ai dû commettre une maladresse, mais laquelle ?
Merci pour votre indulgence et correction.

Ah oui, bien vu !
J'ai changé d'ordi pour vérifier votre hypothèse.

En passant de la 2.18 à la 2.22, aucun problème.
Merci.
Cordialement.
Christophe

···

Le vendredi 1 avril 2022, 16:20:01 UTC+2, Jean Abou Samra <****@****> a écrit :

Le 01/04/2022 à 15:02, xtof pno a écrit :

Bonjour Jean,
Merci pour votre réponse.
Malheureusement lorsque j'applique à la seule partie séparée la formule :

\bookpart {
\header {
subtitle = "Contrebasse" }
*\score { \compressMMRests \scoreAContrabassPart } *
\layout { }
\midi {
\tempo 4=100 } }
}

la compilation me renvoie le message d'erreur suivant :

/tmp/frescobaldi-jgiibyn_/tmpxrcy38cz/CK-Prélude-pour-bois-et-cordes.ly:885:18:
Erreur : chaîne d'échappement inconnue : « \compressMMRests »

\score { {

\compressMMRests { \scoreAContrabassPart }

J'ai dû commettre une maladresse, mais laquelle ?
Merci pour votre indulgence et correction.

Ah… Je parie que vous utilisez une version ancienne tout en lisant une
documentation récente. La commande \compressMMRests est apparue dans la
série des 2.19. Faites un tour par la case mise à jour, la dernière
version stable est la 2.22.2.

Cordialement,

Jean

Bonsoir,

Je ne sais pas si c'est une bonne pratique, mais il me semble que centraliser les réponses, même à plusieurs années d'intervalle, n'est pas hérétique, tant qu'on reste dans le sujet.

J'ai pris @jeanas au mot avec "Un peu n'importe où" pour \compressMMRests, et j'ai cela (j'ai laissé tout ce qu'il y a dans le \book si ça peut aider):

\book {
  \bookpart {
    \paper {
    page-count = #2
    }
  \include "instrument_cover_content.ly"
  \pageBreak
  \markup { " " }
  }
  \bookpart {
    \paper {
      bookTitleMarkup = ""
      page-count = #scorePageCount
      ragged-bottom = ##f
      ragged-right = ##f
      ragged-last = ##f
      ragged-last-bottom = ##f
    }
    \score {
      \compressMMRests <<
        \structurePart
        \tromboneIPart
      >>
      \layout {
        \context {
          \Staff
          \remove Instrument_name_engraver
        }
        #(layout-set-staff-size 14)
      }
      \midi { }
    }
  }
  \bookpart {
    \paper {
      bookTitleMarkup = ""
      page-count = #2
    }
    \markup { " " }
    \pageBreak
    \instrumentFourthPageMarkup
  }
}

Et les mesures ne sont absolument pas compressées.
image
Bon, j'ai essayé de le mettre à plein d'endroits, y compris au plus près, avant mon R1*5, avec le même résultat.
Est-ce qu'il y a quelque chose qui inhibe le \compressMMRests ? Un pragma lunatique, une définition globale facétieuse, un engraver susceptible...?

J'avoue que je perds souvent mon latin avec les histoires de compression.

Ah, au kazoo, je précise que j'inclus également swing.ly, même si je ne l'utilise qu'à un endroit (et pas celui-là).

Merci beaucoup,
Emmanuel

Bonjour,

Je ne suis pas devant mon PC donc je ne peux pas mettre un MWE mais il me semble que dans les versions récentes de lilypond il faut mettre

\compressEmptyMeasures

Personnellement, je couple ce paramètre avec

\override MultiMeasureRest.staff-position = 0 
\override MultiMeasureRest.expand-limit = #0

afin de règler la hauteur visuelle et la limite de compression des R1

J'espère que cela pourra vous être utile

Difficile à dire sans exemple de code minimal.
Qu'y a-t-il dans structurePart ? N'aurais-tu pas des s1 ou R1 sans multiplicateur ?

Voici le global:

global = {
  \set Score.caesuraType = #'((breath . curvedcaesura))
  \numericTimeSignature
  \key d \minor
  \time 4/4
  \set Timing.beamExceptions = #'()
  \set Timing.beatBase = #1/4
  \set Timing.beatStructure = 1,1,1,1

Voici la structure:

structure = {
  \set Score.rehearsalMarkFormatter = #format-mark-box-alphabet
  \structure
  \global
  \tweak self-alignment-X #LEFT
  \mark \markup { \box \pad-markup #0.1 \abs-fontsize #subPieceFontSize \smallCaps "Read this folks!" }
  \tempo "Fast" 4=144
  s1*4
  s1*3
  \tempo 4=150
  s1*2
  \tempo 4=108
  s1*4
  \bar "||"
}

et voici l'instrument:

tromboneI = \relative c' {
  \global
  % INTRO
  R1
  \resetRelativeOctave c'
  \beginTheme
  R1
  R1*4
tromboneIPart = \new Staff \with {
  midiInstrument = "trombone"
  instrumentName = "Trombone 1"
  shortInstrumentName = "Tbn1"
} <<
  \clef bass
  \override Staff.StaffSymbol.color = \tromboneColor
  \tromboneI
  \new Dynamics \tromboneIDynamics
  \tromboneIAnnotations
>>

Par contre dans trombone1Annotations et rombone1Dynamics je n'ai que des s1 sans multiplicateurs.
tromboneIDynamics = { \tromboneIDynamics s1 s1\ff s1 s1 s1 s1 s1 s1\fp s1 s1 s1 s1 s1 }
tromboneIAnnotations = { \tromboneIAnnotations s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 }

Ça peut venir de là?
Et question naïve du coup: je pensais que Lily était capable d'agréger les silences. Il ne se sort pas de "s1 s1" ? Ou c'est un choix pour dire qu'on ne veut pas qu'il compresse?

Emmanuel

Le 31/03/2026 à 09:29, Emmanuel Franquemagne via LilyPond a écrit :

tromboneI = \relative c' { \global % INTRO R1 \resetRelativeOctave c'
\beginTheme R1 R1*4
(Détail : il manque "}")

Lorsque je veux compresser les silences je fais simplement à chaque voix :
scoreASopranoOne = \relative c'' {
\global
% En avant la musique !
\compressMMRests {
les notes de musique et le rytme...
}
}

et ça marche. Je ne peux t'en dire plus, mes connaissances s'arrêtent là !
Amicalement.

--
Jean GOUJON,

Merci @Jean_GOUJON . Comme je l'ai dit, j'ai testé de mettre le \compressMMRests au plus près du code, c'est-à-dire englobant carrément le R1*4, mais sans succès. Il doit y avoir quelque chose d'autre qui l'ennuie...

Bonjour,

sans le code difficile de débuguer ,
mais pour moi oui les s1 sans multiplicateur en est la raison !
Exemple :

<<
 \new Staff \relative c'{   \compressEmptyMeasures R1*6 } 
 \new Staff \relative c'{   \compressEmptyMeasures s1 s1 s1 s1*3  } 
>>

1 « J'aime »

Erf, c'est plutôt persuasif comme démonstration! :slight_smile:
Je vais voir comment je fais du coup... Comme j'ai une partition qui est un peu longue avec beaucoup d'instruments, je mets les annotations et les dynamiques dans un excel pour avoir la grille de mesures. Je vais trouver un truc pour compresser les s1...
Merci beaucoup @MartialR !

Bonjour,
Il manque les {} qui englobent la partie qui doit être compressée.
Perso je mets ça en début de partition .
Donc \compressMMRests { ....(Tout le code) }
Bien à vous
Nicolas