Subject: placer un glyphe dans une chaîne à initialiser

From: Seventies <[email-masked]>
Date: Wed, 6 May 2015 15:04:00 -0700 (MST)

Bonsoir à l'équipe,

Je cherche à placer un signe bémol dans une variable initialisée en dehors
de tout contexte :

tonality = "in Bes major"

et je voudrais remplacer le Bes par B«bémol»

Mais la fonction \markup n'est pas autorisée.
J'essaye alors la fonction scheme :

thisTonality = #(string-append "in B" \musicglyph #"accidentals.flat"
"major")
qui n'est évidemment pas compréhensible pour scheme.

Existe-t-il une méthode pour insérer le signe bémol dans une instruction
string-append.

D'avance, merci de votre aide,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/placer-un-glyphe-dans-une-chaine-a-initialiser-tp7582932.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 07 May 2015 07:25:20 +0200

> Existe-t-il une méthode pour insérer le signe bémol dans une instruction
thisTonality = \markup{"in B" \super"♭" "major"}
-- 
Cordialement, Daniel Cartron
« Je concèderais volontiers que les femmes nous sont supérieures si cela 
pouvait les dissuader d'êtres nos égales. »
George Bernard Shaw

---

From: Philippe Neyrat <[email-masked]>
Date: Thu, 07 May 2015 08:33:29 +0200

Bonjour,

pour faire ça, j'utilise une forme du type :

X_bemol = \markup \concat { "X" { \hspace #0.4 \raise #0.4 \small \flat } }

Et je l'appelle  comme ça (dans ou hors de toute expression musicale) :

\X_bemol

Mais comme j'en ai des tas, et que les valeurs des \hspace et \raise
changent en fonction des versions de lilypond, je mets ces valeurs dans
des variables, où je peux les modifier plus simplement en une seule fois.

ça fait :

#(define raise_sharp  ( / 8 10 ) )
#(define raise_flat   ( / 4 10 ) )
#(define hspace_sharp ( / 2 10 ) )
#(define hspace_flat  ( / 2 10 ) )

do_bemol_text  = \markup \concat { "do"  { \hspace #hspace_flat \raise
#raise_flat \small \flat  } }
do_diese_text  = \markup \concat { "do"  { \hspace #hspace_sharp \raise
#raise_sharp \small \sharp } }

...

Je laisse en pièce jointe un exemple du fichier complet, pour gérer les
majuscules quand le glyphe doit arriver en début de phrase.

Cordialement,

Philippe

Le 07/05/2015 00:04, Seventies a écrit :
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
> 

-- 
Propulsé par l'Association Sud-Ouest.org
Plateforme Libre d'hébergement mail à prix libre
    https://www.sud-ouest.org

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 07 May 2015 08:42:02 +0200

> des variables, où je peux les modifier plus simplement en une seule fois.

Comme indiqué dans mon précédent message j'utilise \super qui fait tout le 
boulot, taille et décalage. 

-- 
Cordialement, Daniel Cartron
« Le malentendu fait des divorces, mais il fait encore plus d'unions. »
Tristan Bernard

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Thu, 7 May 2015 10:43:44 +0200

Bonjour Jean-François, bonjour à Tous,

Il faut nous en dire un peu plus sur ta fonction et sur l’intérêt du
'string-append' ; visiblement tu souhaites intégrer un 'markup' là où
LilyPond attend une 'chaine', ce qui n'est pas possible :

\version "2.18.2"

diese =   \markup { \hspace #-.5 \raise #.8 \tiny \sharp   }
bemol =   \markup { \hspace #-.5 \raise #.4 \tiny \flat    }
becarre = \markup { \hspace #-.5 \raise #.8 \tiny \natural }

tonality = \markup { in B\bemol "major" }

{
  \tweak self-alignment-X #LEFT
  %% Ne compile pas car LP attend une 'chaine' mais reçoit un 'markup' :
  %\mark #(string-append tonality)

  %% Compile car LP attend une 'chaine' et reçoit bien une 'chaine' :
  %\mark #(string-append "in B♭ major")

  %% Compile car LP attend un 'markup' et reçoit bien un 'markup' :
  \mark\markup\tonality
  \key bes\major
  bes'2
}

Cordialement,
Pierre

Le 7 mai 2015 00:04, Seventies <[email-masked]> a écrit :

> View this message in context:
> http://lilypond-french-users.1298960.n2.nabble.com/placer-un-glyphe-dans-une-chaine-a-initialiser-tp7582932.html

---

From: Philippe Neyrat <[email-masked]>
Date: Thu, 07 May 2015 11:34:09 +0200

Oui, mais je n'aime pas trop l'effet "exposant" de \super, je préfère
modifier moi-même la position de l'altération pour des questions de
lisibilité, et avoir le glyphe en grande taille, en conservant la
maîtrise pour les dièses et les bémols séparément, car l'effet de ma
méthode n'est pas le même suivant l'altération.

Et si je veux écrire d'autres glyphes, par exemple des valeurs
d'intervalles, j'écris de même un \concat, avec l'altération en tête.

Je vous laisse un lien sur mon document pdf sur les gammes où j'utilise
cette méthode. C'est une version beta qu'il faut encore que je vérifie,
mais ça donnera une idée de l'effet de mon approche.

C'est ici :

http://philippeneyrat.org/?cat=10

Cordialement,

Philippe

---

From: Seventies <[email-masked]>
Date: Thu, 7 May 2015 04:35:36 -0700 (MST)

Merci de tout vos conseils.

Malheureusement, il y a quelques problèmes incompréhensible.
Il s'agit donc de variables à initialiser en tête de programme, en dehors de
tout contexte.

Si j'écris :

\version "2.18.2"
thisComposer = "Johannes Brahms"
thisWork = "Piano Concert nr.2"
thisOrchester = "for Piano & Orchestra"
thisOpus = "Op.83"
thisMail = "[email-masked]"
thisMailTo = #(string-append "mailto:" thisMail)
thisWebSite = "http://coucou.com"
thisPageUrl = "brahms_piano_concert_nr2"
thisTonality = "in Bes major"                            %% correct
thisDates = "1833-1897"
thisDateOfPublication = "1881"
thisSource = "Source : Berlin: N. Simrock, 1882. Plate 8263."
thisAlternateSource = "Leipzig: Edition Peters, No.3895, n.d.(ca.1910).
Plate 10401."
thisTypesetting = "Typeset with LilyPond, a free software under GNU General
Public License"
%thisBigTitle = "Brahms - Piano Concert nr.2 in Bes major"
thisBigTitle = #(string-append thisComposer " - " thisWork " " thisTonality)

\relative c'' {
  c4 c c c
}

ça fonctionne.

Si j'ajoute un \markup :

\version "2.18.2"
thisComposer = "Johannes Brahms"
thisWork = "Piano Concert nr.2"
thisOrchester = "for Piano & Orchestra"
thisOpus = "Op.83"
thisMail = "[email-masked]"
thisMailTo = #(string-append "mailto:" thisMail)
thisWebSite = "http://coucou.com"
thisPageUrl = "brahms_piano_concert_nr2"
thisTonality = \markup "in Bes major"                            %% toujours
correct
thisDates = "1833-1897"
thisDateOfPublication = "1881"
thisSource = "Source : Berlin: N. Simrock, 1882. Plate 8263."
thisAlternateSource = "Leipzig: Edition Peters, No.3895, n.d.(ca.1910).
Plate 10401."
thisTypesetting = "Typeset with LilyPond, a free software under GNU General
Public License"
%thisBigTitle = "Brahms - Piano Concert nr.2 in Bes major"
thisBigTitle = #(string-append thisComposer " - " thisWork " " thisTonality)

\relative c'' {
  c4 c c c
}

ça fonctionne toujours.

Mais si je place des accolades autour du markup :

\version "2.18.2"
thisComposer = "Johannes Brahms"
thisWork = "Piano Concert nr.2"
thisOrchester = "for Piano & Orchestra"
thisOpus = "Op.83"
thisMail = "[email-masked]"
thisMailTo = #(string-append "mailto:" thisMail)
thisWebSite = "http://coucou.com"
thisPageUrl = "brahms_piano_concert_nr2"
thisTonality = \markup {"in Bes major"}                            %%
incorrect
thisDates = "1833-1897"
thisDateOfPublication = "1881"
thisSource = "Source : Berlin: N. Simrock, 1882. Plate 8263."
thisAlternateSource = "Leipzig: Edition Peters, No.3895, n.d.(ca.1910).
Plate 10401."
thisTypesetting = "Typeset with LilyPond, a free software under GNU General
Public License"
%thisBigTitle = "Brahms - Piano Concert nr.2 in Bes major"
thisBigTitle = #(string-append thisComposer " - " thisWork " " thisTonality)

\relative c'' {
  c4 c c c
}

ça bloque au niveau du string-append qui suit le \markup.

Mais la solution la plus simple vient de Daniel, qui introduit un bémol en
tant que caractère ASCII :
thisTonality = "in B♭ major" % Sans passer par \super, qui nécessiterait un
\markup.

Là, aucun problème, sinon de savoir d'où vient ce code ASCII. J'ai cherché
sur le Net sans trouver. Peu importe, un copier/coller a permis de le
récupérer.

LilyPond garde pas mal de mystères, normal, c'est une grande dame ;-)

Merci de tous vos conseils,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/placer-un-glyphe-dans-une-chaine-a-initialiser-tp7582932p7582941.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 07 May 2015 13:48:24 +0200

Le jeudi 7 mai 2015, 04:35:36 Seventies a écrit :
> sur le Net sans trouver.
http://www.charbase.com/266d-unicode-music-flat-sign
-- 
Cordialement, Daniel Cartron
« Juif, c'est pas une religion! Aucune religion ne fait pousser un nez comme 
ça! »
Serge Gainsbourg

---

From: Seventies <[email-masked]>
Date: Thu, 7 May 2015 05:22:13 -0700 (MST)

Merci pour le lien, hop, dans les favoris.
En attendant, prudence avec les UTF8 et UTF16, notions que je n'ai pas
encore bien assimilées.

Ce sera pour ce soir, Wikipédia semble proposer une documentation abondante
sur le sujet.

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/placer-un-glyphe-dans-une-chaine-a-initialiser-tp7582932p7582943.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Arthur Reutenauer <[email-masked]>
Date: Thu, 7 May 2015 17:11:12 +0100

> En attendant, prudence avec les UTF8 et UTF16, notions que je n'ai pas

  Juste pour préciser, ce n'est bien sûr pas du tout de l'ASCII, mais un
caractère Unicode.

	Arthur

---

From: Philippe Neyrat <[email-masked]>
Date: Thu, 07 May 2015 18:30:27 +0200

Bonjour,

Pourquoi utiliser string append ?

Je trouve plus simple de concaténer :

thisBigTitle = \markup \concat { \thiscomposer " " \thisWork " "
\thisTonality " - " \autre " " \blabla " " \en \markup }

Et ça fonctionne même si thiswork et thistonality sont des markups, on
peut donc les mettre dans des titres, etc.

Ou alors je comprends pas le problème...
Faut-il que "thisBigTitle" soit ABSOLUMENT une "chaine de caractères" ?

My two cents.

Philippe

---

From: Seventies <[email-masked]>
Date: Thu, 7 May 2015 17:20:18 -0700 (MST)

Vérification faite, la fonction \concat travaille correctement. Il me
semblait qu'elle laissait des espaces entre les arguments, mais non, elle
accole correctement les arguments.

Néanmoins, si j'utilise des \markup en supprimant les string-append, des
erreurs se retrouvent plus loin dans d'autres variables à initialiser.
J'avoue ne pas trop comprendre ce qui se passe.

Je dispose de 3 ou 4 fichiers de variables à initialiser, celui-ci est le
premier avec toutes les variables essentielles, un second avec le texte des
remarques éditoriales, ...

Je ne comprends pas pourquoi, dès que j'utilise un \markup d'initialisation,
des erreurs inattendues surviennent ultérieurement, parfois dans les autres
fichiers de variables initialisées - voir l'exemple cité plus haut.

Je ne me tracasse pas trop, après bientôt quatre ans d'utilisation de
LilyPond, il me reste pas mal de notions de base à apprendre ;-(

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/placer-un-glyphe-dans-une-chaine-a-initialiser-tp7582932p7582947.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Philippe Neyrat <[email-masked]>
Date: Fri, 08 May 2015 08:33:25 +0200

Bonjour,

> accole correctement les arguments.

C'est pour ça qu'il faut parfois ajouter des " " ou des ", " dans la
chaîne qu'on veut construire...

Exemple :

********************************************************************

Structure_gammes_diminuees = \markup
{
  \column
  {

    \line { \vspace #intertitre_titre \null }

    \fill-line \bold { "Modes" \null "Structure des gammes diminuées :"
\null "Intervalles" }

    \line { \vspace #intertitre_modes \null }

    \fill-line
    {
      "Demi-ton/ton :"
      \null
      "1/2 ton, 1 ton, 1/2 ton, 1 ton, 1/2 ton, 1 ton, etc."
      \null
      \concat { \Seconde_bemol_text ", " \Tierce_bemol_text ", 3, "
\Quarte_diese_text ", 5, 6, 7" }
    }

    \Interligne_mode

    \fill-line
    {
      "Ton/demi-ton :"
      \null
      "1 ton, 1/2 ton, 1 ton, 1/2 ton, 1 ton, 1/2 ton, etc."
      \null
      \concat { "2, " \Tierce_bemol_text ", 4, " \Quinte_bemol_text ", "
\Sixte_bemol_text ", 6, 7" }
    }

  } % column
} % Structure_gammes_diminuees

********************************************************************

Avec des variables de la forme "Intervalle_Altération_text" définies
dans un fichier séparé inclus chaque fois que j'ai besoin de ces glyphes.

Je n'ai plus qu'à appeler \Structure_gammes_diminuees dans un score.

> J'avoue ne pas trop comprendre ce qui se passe.

C'est pas impossible que les variables qui posent problèmes soient
appelées en faisant référence à "ThisMachin", au lieu de "\ThisMachin".
Et si de plus c'est à l'intérieur d'un string-append, ça va forcément
planter, puisque ThisMachin ne fait plus référence à rien.

> remarques éditoriales, ...

Il n'y a plus qu'à les modifier en markups. Ça peut être long, mais ça
vaut le coup...

Bon courage !

Hope this helps.

Philippe