Subject: Fonction : insérer un bloc Score dans un markup

From: Remy CLAVERIE <[email-masked]>
Date: Sun, 6 Sep 2020 08:48:47 +0200 (CEST)

Bonjour à tous,

Régulièrement pour des notes éditoriales, j'utilise des extraits de musiques que s'insère dans un markup. Je me suis servi de la solution décrite ici : https://lists.gnu.org/archive/html/lilypond-user/2013-12/msg01239.html

Par exemple :

\score {
        \new Staff \with {
          \remove "Time_signature_engraver"
          fontSize = #-4
          \override StaffSymbol #'staff-space = #(magstep -4)
          \override StaffSymbol #'thickness = #(magstep -4)
        }
        \relative do {
          \time 2/1
          \clef "G_8"
          \bar"|"
          mi2. fad4 sold la si mi, 
        }
        \layout {
          indent = 0\cm
          ragged-last = ##t
        }
      }

Afin de minimiser le code, j'aimerai définir une comande ou une fonction. Je pensais utiliser quelque chose comme :

#(define-markup-command (insertMusic layout props theMusic) (markup?)
   "mini score inside a markup "
   (interpret-markup layout props
     #{
       \markup
       \score {
         \new Staff \with {
           \remove "Time_signature_engraver"
           fontSize = #-4
           \override StaffSymbol #'staff-space = #(magstep -4)
           \override StaffSymbol #'thickness = #(magstep -4)
         }
         \relative do {
           #theMusic
         }
         \layout {
           indent = 0\cm
           ragged-last = ##t
         }
       }
     #}))

Cela ne marche pas. Certainement car il faut un objet 'music' et non 'markup' pour theMusic.

Mais je ne sais pas comment faire, et je n'ai pas trouvé dans les mailing-lists.

L'un de vous pourrait-il me dire si c'est possible et me donner un lien ?

Merci de votre aide,

Bon dimacnhe,

Rémy

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 6 Sep 2020 10:10:35 +0200

Le 06/09/2020 à 08:48, Remy CLAVERIE a écrit :

> Bonjour à tous,
>
> Régulièrement pour des notes éditoriales, j'utilise des extraits de 
> musiques que s'insère dans un markup. Je me suis servi de la solution 
> décrite ici : 
> https://lists.gnu.org/archive/html/lilypond-user/2013-12/msg01239.html
>
> Par exemple :
>
> \score {
>         \new Staff \with {
> Afin de minimiser le code, j'aimerai définir une comande ou une 
> fonction. Je pensais utiliser quelque chose comme :
>
Bonjour,

En effet, l'argument à insertMusic doit être déclaré comme satisfaisant 
le prédicat ly:music?, et non pas markup?. Vous trouverez une liste des 
prédicats de type définis par LilyPond ici :

https://lilypond.org/doc/v2.20/Documentation/notation/predefined-type-predicates.html

Le code devient donc (vous noterez au passage la nouvelle syntaxe des 
\override) :

\version "2.21.6"
\language français

#(define-markup-command (insertMusic layout props theMusic) (ly:music?)
    "mini score inside a markup "
    (interpret-markup layout props
      #{
        \markup
        \score {
          \new Staff \with {
            \remove Time_signature_engraver
            fontSize = -4
            \override StaffSymbol.staff-space = #(magstep -4)
            \override StaffSymbol.thickness = #(magstep -4)
          }
          \relative do {
            #theMusic
          }
          \layout {
            indent = 0\cm
            ragged-last = ##t
          }
        }
      #}))

\markup \insertMusic { ré'1 }

Cordialement,
Jean Abou Samra

---

From: Remy CLAVERIE <[email-masked]>
Date: Sun, 6 Sep 2020 10:42:53 +0200 (CEST)

Merci Jean-Abou.

Je vais tester ton code.

Pourquoi c'est "ly:music?" et non pas "music?" (ce que j'avais essayé) ; comme pour "markup?" ?

Merci,

Rémy

> Message du 06/09/20 10:10
> De : "Jean Abou Samra" 
> A : "Remy CLAVERIE" , "Mialing list Lilypond" 

> Copie à : 
> Objet : Re: Fonction : insérer un bloc Score dans un markup
>

---

From: Remy CLAVERIE <[email-masked]>
Date: Sun, 6 Sep 2020 11:15:58 +0200 (CEST)

Bonjour Jean-Abou,

encore merci pour ta proposition, mais elle ne foncitonne pas chez moi (2.18.2). Voici mon code :

\version "2.18.2"
\include "italiano.ly"

#(define-markup-command (insertMusic layout props theMusic) (ly:music?)
   "insert a mini score inside a markup "
   (interpret-markup layout props
     #{
       \markup
       \score {
         \new Staff \with {
           \remove Time_signature_engraver
           fontSize = -4
           \override StaffSymbol . staff-space = #(magstep -4)
           \override StaffSymbol . thickness = #(magstep -4)
         }
         \relative do {
           #theMusic
         }
         \layout {
           indent = 0\cm
           ragged-last = ##t
         }
       }
     #}))

\markup \insertMusic {
  \clef treble 
  \relative do { do3 re mi fa sol la si do}
}

Une idée ?

Merci pour tout,

Bonne journée,

Rémy

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 6 Sep 2020 15:07:40 +0200

Bonjour Rémy, bonjour Jean,
Je me permets de m'insérer dans la conversation.
Certaines commandes ont évoluée entre le 2.18 et la 2.21 ; de plus, pour un
'markup, perso j'éviterai d'utiliser le 'fontSize dans la commande, et
j'ajusterai les distances, e.g.:

\version "2.18"
\include "italiano.ly"

#(define-markup-command (insertMusic layout props theMusic) (ly:music?)
   "insert a mini score inside a markup "
   (interpret-markup layout props
     #{
       \markup
       \score {
         \new Staff \relative do {
           $theMusic
         }
         \layout {
           #(layout-set-staff-size 14)
           indent = 0
           ragged-last = ##t
           \context {
             \Score
             \override Clef.space-alist = #'((key-signature minimum-space .
2.5)
                                             (first-note
minimum-fixed-space . 3.5))
             \override KeySignature.space-alist = #'((first-note
fixed-space . 0))
           }
           \context {
             \Staff
             \remove Time_signature_engraver
             %fontSize = -4
             \override StaffSymbol . staff-space = #(magstep -4)
             \override StaffSymbol . thickness = #(magstep -4)
           }
         }
       }
     #}))

test = {
  \clef bass
  do8 re mi fa sol la si do
}

\markup \insertMusic ##{ \test #}

Cordialement,
Pierre

PS. le mode 'relatif est déjà dans 'insertMusic

Le dim. 6 sept. 2020 à 11:16, Remy CLAVERIE <[email-masked]> a
écrit :

> > De : "Jean Abou Samra" <[email-masked]>
> > A : "Remy CLAVERIE" <[email-masked]>, "Mialing list Lilypond" <
> [email-masked]>
> > Copie à :

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 6 Sep 2020 15:09:12 +0200

Ooops, "évoluées"... ;)
Le dim. 6 sept. 2020 à 15:07, Pierre Perol-Schneider <
[email-masked]> a écrit :

> Certaines commandes ont évoluée
>

---

From: Jean-Jacques Gerbaud <[email-masked]>
Date: Sun, 6 Sep 2020 15:30:13 +0200

>> Certaines commandes ont évoluée

mais non ;-) ...

"ont évalué" tout court !  (verbe avoir...)

--

JJG

---

From: Remy CLAVERIE <[email-masked]>
Date: Sun, 6 Sep 2020 16:31:39 +0200 (CEST)

Impécable.

Merci Pierre !

Bonne soirée,

Rémy

> Message du 06/09/20 15:07
> De : "Pierre Perol-Schneider" 

> A : "Remy CLAVERIE" 
> Copie à : "Jean Abou Samra" , "Mialing list Lilypond" 

Bonjour Rémy, bonjour Jean,
Je me permets de m'insérer dans la conversation.
Certaines commandes ont évoluée entre le 2.18 et la 2.21 ; de plus, pour un 'markup, perso j'éviterai d'utiliser le 'fontSize dans la commande, et j'ajusterai les distances, e.g.:

\version "2.18"
>              \override Clef.space-alist = #'((key-signature minimum-space . 2.5)
>                                              (first-note minimum-fixed-space . 3.5))
>              \override KeySignature.space-alist = #'((first-note fixed-space . 0))
>            }
>            \context {
>              \Staff 

Cordialement,
Pierre

Le dim. 6 sept. 2020 à 11:16, Remy CLAVERIE  a écrit :

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 6 Sep 2020 19:03:24 +0200

@ Jean-Jacques : ma tête semble être restée un peu en vacances... ;)
Pierre

---

From: Jean-Jacques Gerbaud <[email-masked]>
Date: Mon, 7 Sep 2020 10:52:17 +0200

> @ Jean-Jacques : ma tête semble être restée un peu en vacances... ;)

Pierre, tu es pardonné.

Mais si tu n'avais pas réagi à ta propre faute d'orthographe, personne
n'aurait rien dit !

--

JJG