Subject: Mettre un epsfile en arrière-plan du header

From: Radar loukoum <[email-masked]>
Date: Sun, 17 May 2020 14:17:40 -0700 (MST)

Bonsoir à tous,

En compulsant les informations du forum, j'ai (laborieusement) réussi à
intégrer un epsfile simulant un tampon (*) en haut de ma partition en
définissant la variable suivante :

logo = \markup { 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate #'(5 . 8)
    \epsfile #X #18 #"tampon_chorale_V1.eps" } }

Tout est nickel à l'exception d'une chose : j'aimerais du coup que mon
tampon soit "à l'arrière-plan", que le texte du \header (poet) soit/
au-dessus/ de l'image et non en dessous comme mon rendu actuel :

Capture_logo.PNG
<http://lilypond-french-users.1298960.n2.nabble.com/file/t344826/Capture_logo.PNG>  

\with-dimensions #'(0 . 0) #'(0 . 0) permet effectivement de le mettre à
l'arrière-plan de la musique, mais pas du \header.

Je n'ai rien trouvé dans la documentation sur ce point précis ou alors c'est
bien caché.

Pouvez-vous m'aider ?

Un grand merci pour vos réponses.

(*) Pour ceux que ça intéresse, j'ai suivi à la lettre  ce tuto
<https://www.lestutosdepepin.fr/gimp_tampon_encreur.V.htm>   pour la
création de mon tampon avec Gimp et le rendu est plutôt sympa.

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: Valentin Villenave <[email-masked]>
Date: Mon, 18 May 2020 00:20:03 +0200

>   \with-dimensions #'(0 . 0) #'(0 . 0) {

Attention, mettre les dimensions à 0 risque de poser un problème pour
ce qui est de l’alignement.

> tampon soit "à l'arrière-plan"

Vous devriez essayer la commande \combine :

\header {
  poet = \markup \combine \logo "Mon texte"
}

> Je n'ai rien trouvé dans la documentation sur ce point précis ou alors
> c'est bien caché.

Euh, carrément bien caché en effet.
Pour être vraiment vraiment vraiment sûrs que personne ne trouverait,
on l’a soigneusement camouflé dans la rubrique «Éléments graphiques
dans du texte formaté» (ce qui ne correspond vraiment vraiment mais
alors vraiment pas du tout à ce que vous cherchez).
http://lilypond.org/doc/v2.21/Documentation/notation/formatting-text.fr.html#graphic-notation-inside-markup
Et histoire de brouiller encore un peu plus les pistes, on a ajouté
l’exemple suivant qui n’a vraiment vraiment rien à voir avec le sujet,
c’est dire si on est taquins :
«
Ces objets peuvent même se combiner, à l’instar de n’importe quelle
expression markup.
\markup {
  \combine
    \draw-circle #4 #0.4 ##f
    \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1
}
»
Totalement introuvable en effet.

> création de mon tampon avec Gimp et le rendu est plutôt sympa.

Il existe des filtres Inkscape qui permettent de faire plus ou moins
le même genre de choses en vectoriel (c’est-à-dire qu’on ne voit pas
les pixels quel que soit l’agrandissement). Je recommanderais plutôt
cette méthode lorsqu’il s’agit de texte ; en voici un exemple :
http://oumupo.org/galerie/oumupo.svg

Cordialement,
-- V. V.

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Mon, 18 May 2020 09:10:49 +0200

Bonjour Radar, bonjour Valentin,
Je trouve la question intéressante car elle m'en rapporte d'autres comme :
- le *header *a-t-il un *layer *infini ?
- dans la négative, comment accéder au *layer *du *header *?
- pourquoi le 1er système a-t-il un *layer *inférieur aux autres ?
- comment accéder au *layer *du 1er système ?
(liste non exhaustive...)

Bref...
Une solution bancale est d'éviter que le pseudo-filigrane recouvre tout ou
partie du titre.
Ex.

\version "2.20.0"

logo = \markup {
  \with-dimensions-from \null {
    \translate #'(2 . -10)
    \rotate #20
    \epsfile #X #40 #"dumb.eps" }
}

\header { title = "Dumb Title" }
{
  s1
  -\tweak layer #-10000 % <= redéfinir !! -5 doit être suffisant...
  -\markup\logo
  \repeat unfold 100 s1 \bar "|."
}

Cordialement,
Pierre

Le lun. 18 mai 2020 à 00:22, Valentin Villenave <[email-masked]> a

---

From: Valentin Villenave <[email-masked]>
Date: Mon, 18 May 2020 10:43:52 +0200

> (liste non exhaustive...)

Je ne m’étais jamais posé ces questions, mais après réflexion,
j’aurais tendance à dire que les titres ne sont pas vraiment des Grobs
à part entière (ils sont juste rattachés au grob NonMusicalPaperColumn
comme tout le reste). Donc je ne suis pas sûr qu’il soit pertinent de
parler de 'layer dans ce cas précis. (C’est pour cela que dans le cas
de notre ami «Radar Loukoum» il vaut mieux, à mon avis, se débrouiller
directement à l’intérieur du markup (ou en trafiquant avec
bookTitleMarkup) plutôt que de se prendre la tête avec des questions
de layer.)

Les systèmes étant ajoutés l’un après l’autre dans l’output (y compris
le header, qui finalement est le premier "système" en haut de la page,
même sans être un grob System en tant que tel), je ne pense pas qu’il
soit possible de passer "par-dessous" le système précédent, quel que
soit le 'layer :

\relative {
  \override TextScript.layer = #-10000
  R1_\markup
    \with-color #darkred
    \filled-box #'(0 . 20) #'(0 . 20) #0
  \break
  \override TextScript.layer = #100000
  R1^\markup
    \with-color #blue
    \with-dimensions #'(0 . 20) #'(0 . 0)
    \filled-box #'(0 . 20) #'(0 . 20) #0
  \break
}

Même chose pour ton autre question : la propriété 'layer n’existe que
pour chaque Grob individuellement, or je ne pense pas qu’on puisse
dire qu’un système soit un Grob unique. Si c’est du StaffSymbol que tu
veux parler, tu peux vérifier facilement que son layer est à 0 quel
que soit le système :

{
  b1
  \override Staff.TimeSignature.whiteout = ##t
  \override Staff.TimeSignature.layer = -1
  \time 6/4
  b1. \break  b
  \time 4/4 b1
}

Après bien sûr il ne faut pas confondre la propriété 'layer avec
'remove-layer, qui là pour le coup traite le premier système
différemment des autres et qui est utilisée pour tout ce qui est
\RemoveEmpty.

J’espère que ça répond à peu près à tes questions.

V.

---

From: Radar loukoum <[email-masked]>
Date: Mon, 18 May 2020 02:42:19 -0700 (MST)

Bonjour Valentin

Merci beaucoup de votre réponse

Effectivement, \combine me permet d'arriver exactement à ce que je souhaite
mais je n'aurais pas eu l'idée de l'utiliser pour mon problème, alors que
j'avais bien repéré la doc correspondante.
Habituellement le combo documentation + forum me permet de trouver toutes
les réponses à mes questions, mais là je séchais lamentablement, faute de
comprendre l'info que j'avais sous le nez.

Encore merci d'avoir éclairé ma lanterne.

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Mon, 18 May 2020 12:23:55 +0200

Le lun. 18 mai 2020 à 10:43, Valentin Villenave <[email-masked]> a
écrit :
...

> J’espère que ça répond à peu près à tes questions.

Merci Valentin, oui ça m'ouvre certaines pistes, assurément.
Amitiés,
Pierre

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Tue, 19 May 2020 10:07:54 +0200

Finalement je pense que, pour éviter toute surprise, il vaut mieux intégrer
l'image dans le bloc \paper plutôt que dans le \header.
Par ex. le combiner à "poet" risque de le faire apparaître par-dessus les
"title", "subtitle", etc., et, si combiné au "title", le faire apparaître
sur le "dedication".
J'ai ajouté un exemple au LSR : http://lsr.di.unimi.it/LSR/Item?id=1113
Cordialement,
Pierre

Le lun. 18 mai 2020 à 12:23, Pierre Perol-Schneider <
[email-masked]> a écrit :

> Le lun. 18 mai 2020 à 10:43, Valentin Villenave <[email-masked]>
> a écrit :
> ...
>

---

From: Valentin Villenave <[email-masked]>
Date: Tue, 19 May 2020 11:08:55 +0200

> J'ai ajouté un exemple au LSR : http://lsr.di.unimi.it/LSR/Item?id=1113

Joli (et le \with-dimensions-from \null est très élégant). L’étape
suivante serait bien sûr d’arriver à caler ça automatiquement en
fonction des dimensions de la page, mais là ça devient assez méchant.
(Voir par exemple la commande \fill-page de Nicolas Sceaux, que je
m’acharne depuis quelques années à essayer de rendre plus robuste.)

V.

---

From: david <[email-masked]>
Date: Thu, 21 May 2020 10:38:47 +0200

Bonjour,

J'ai été très intéressé par cet échange, et j'ai essayé de voir ce que 
je pouvais en faire...
Du coup, j'ai voulu essayer un truc rigolo

Je comprends beaucoup mieux les choses à partir d'un exemple concret, 
donc je voulais vous demander si l'un de vous aurait la patience de 
m'expliquer ce que fait chacune des lignes du code ? (dans le la 
définition de la variable logo et dans la partition, la ligne -\tweak )

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\version "2.20.0"
\language "français"

logo = \markup {
   \with-dimensions-from \null {
     \translate #'(1 . -135 ) % 1 ?
                              % -135 : position verticale du personnage
     %\rotate #20             % angle de rotation de l'image
     \epsfile #X #110 #"captain.eps" } % #110 : taille de l'image
                                       % #X ?
}

\paper { systems-per-page = 14 }

\header { title = "compo style avengers" }

\score {
\relative do' {
   do1
   -\tweak layer #-5 % <= redéfinir !! -5 doit être suffisant...
                     % ancienne valeur : -10000 je ne vois pas de 
changement
   -\markup\logo
   \repeat unfold 56 do1 \bar "|."
} }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

(l'eps est en pièce jointe)
il ne reste plus qu'à jouer sur la transparence de l'image, on ne lit 
pas super bien sur ses jambes et sur ses bottes...

Merci
David

---

From: Valentin Villenave <[email-masked]>
Date: Fri, 22 May 2020 10:49:50 +0200

> logo = \markup {

La première accolade n’est pas indispensable, puisqu’ici il n’y a
qu’un seul objet dans le \markup.

>    \with-dimensions-from \null {

Le but est de donner l’illusion à LilyPond que le markup n’a aucune
hauteur ni largeur (pour qu’aucune portée ni note ne soit décalée à
cause de lui).

C’est l’équivalent de dire
  \with-dimensions #'(0 . 0) #'(0 . 0)

On pourrait dire aussi
  \with-dimensions-from \hspace #0

D’ailleurs, encore une fois l’accolade n’est pas indispensable ici,
puisqu’il n’y a qu’un seul objet qui suit.

>      \translate #'(1 . -135 ) % 1 ?

1 ou 10 ou ce que vous voulez, au jugé. À partir du moment où on
enlève à LilyPond les informations pour faire la mise en page
lui-même, ça devient entièrement manuel.

>                          % -135 : position verticale du personnage

Oui.

>  %\rotate #20             % angle de rotation de l'image

Oui. On pourrait aussi insérer un \scale si besoin.

>  \epsfile #X #110 #"captain.eps" } % #110 : taille de l'image

Taille _horizontale_ de l’image. D’où le X.

>    -\tweak layer #-5 % <= redéfinir !! -5 doit être suffisant...

En fait même -1 suffit. À partir de 1, on passe au-dessus des notes,
et à 0 on est en-dessous des notes mais par-dessus les lignes de la
portée et les barres de mesure.

>    -\markup\logo

Là aussi, vous remarquez qu’il n’est pas nécessaire d’ajouter des
accolades, puisqu’il n’y a qu’un seul argument :
  \markup \logo
est complètement équivalent à
  \markup { \logo }

> (l'eps est en pièce jointe)

Franchement, il vaut mieux utiliser du vectoriel quand on peut :
http://valentin.villenave.net/upload/files/captain_vv.eps

> pas super bien sur ses jambes et sur ses bottes...

On pourrait ici faire quelque chose directement dans LilyPond, en
ajoutant un calque semi-transparent par-dessus l’image :
    \combine
      \epsfile #X #110 #"/tmp/mozilla_valentin0/captain.eps"
      \with-color #(rgb-color 1 1 1 0.5)
        \filled-box #'(-1000 . 1000) #'(-1000 . 1000) #0

Mais la semi-transparence n’est pas encore complètement au point. (Je
viens de l’ajouter pour la version 2.21.2, mais elle ne sera
disponible qu’en sortie SVG jusqu’à nouvel ordre.)

Cordialement,
V. V.

---

From: david <[email-masked]>
Date: Fri, 22 May 2020 14:44:18 +0200

Merci d'avoir pris le temps de m'expliquer
Ça me permet de recouper ces infos avec d'autres trucs que j'avais plus 
ou moins compris dans d'autres messages

J'espère que ça pourra aussi servir à d'autres !