Numéros de cordes en chiffres romains dans des accords

Bonjour,

J'aimerais indiquer des numéros de cordes en chiffres romains dans des
accords, pour un violon alto.

1) La façon la plus élégante serait sans doute de pouvoir paramétrer le
système qui existe déjà pour la guitare, qui utilise des chiffres arabes
dans un cercle, avec une barre oblique après la note: <f\4 c'\5>.
Est-ce que cela est possible ?

2) La façon laborieuse que j'utilise actuellement consiste à créer une
colonne:
   _\markup{
    \override #'(baseline-skip . 2)
    \column{\tiny III \tiny IV}
  }

3) Un moyen-terme utiliserait au moins une fonction pour généraliser l'appel
(par exemple _\stringsColumn "IV" "III"), mais ma tentative ne fonctionne
pas:

stringsColumn = #(define-music-function (parser location lowString
highString)
(string? string?)
#{
  \markup{
    \override #'(baseline-skip . 2)
    \column{\tiny #$highString \tiny #$lowString}
  }
#})

Des idées ?

Cordialement,
Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6448991.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Il faudrait changer les propriétés `text' et `stencil' de StringNumber.

\relative c {
\override StringNumber #'stencil = #ly:text-interface::print
\override StringNumber #'text =
#(lambda (grob)
(let ((digit (ly:event-property (event-cause grob) 'string-number))
       (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")))
   (markup #:normal-text (list-ref roman (1- digit)))))

\clef alto
<c\4> <g'\3> <d'\2> <a'\1>
}

Cordialement,
~Mike

···

On Jun 7, 2011, at 12:48 PM, Karim Barkati wrote:

Bonjour,

J'aimerais indiquer des numéros de cordes en chiffres romains dans des
accords, pour un violon alto.

1) La façon la plus élégante serait sans doute de pouvoir paramétrer le
système qui existe déjà pour la guitare, qui utilise des chiffres arabes
dans un cercle, avec une barre oblique après la note: &lt;f\4 c'\5&gt;.
Est-ce que cela est possible ?

2) La façon laborieuse que j'utilise actuellement consiste à créer une
colonne:
   _\markup{
    \override #'(baseline-skip . 2)
    \column{\tiny III \tiny IV}
  }

3) Un moyen-terme utiliserait au moins une fonction pour généraliser l'appel
(par exemple _\stringsColumn "IV" "III"), mais ma tentative ne fonctionne
pas:

stringsColumn = #(define-music-function (parser location lowString
highString)
(string? string?)
#{
  \markup{
    \override #'(baseline-skip . 2)
    \column{\tiny #$highString \tiny #$lowString}
  }
#})

Des idées ?

****@**** wrote:

Il faudrait changer les propriétés `text' et `stencil' de StringNumber.

Cordialement,
~Mike

Super ! On y est presque !

Je souhaiterais regrouper les numéros d'un accord tous ensemble, en haut (ou
en bas). Pour l'instant, avec &lt;c\4 g'\3&gt; on a "IV" en bas et "III" en
haut.

\relative c {
\override StringNumber #'stencil = #ly:text-interface::print
\override StringNumber #'direction = #UP
\override StringNumber #'text =
#(lambda (grob)
(let ((digit (ly:event-property (event-cause grob) 'string-number))
      (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")))
  (markup #:normal-text (list-ref roman (1- digit)))))

\clef alto
&lt;c\4 g'\3&gt;
}

J'ai essayé sans succès les deux lignes suivantes (indépendamment):
\set Staff.StringNumber = #'(up)
\override StringNumber #'direction = #UP

Musicalement :wink:
Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6449257.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Pas loin ! :wink:

  \set stringNumberOrientations = #'(up)

Cordialement,
Xavier

···

2011/6/7 Karim Barkati <****@****>:

Super ! On y est presque !

Je souhaiterais regrouper les numéros d'un accord tous ensemble, en haut (ou
en bas). Pour l'instant, avec &lt;c\4 g'\3&gt; on a "IV" en bas et "III" en
haut.

\relative c {
\override StringNumber #'stencil = #ly:text-interface::print
\override StringNumber #'direction = #UP
\override StringNumber #'text =
#(lambda (grob)
(let ((digit (ly:event-property (event-cause grob) 'string-number))
     (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")))
(markup #:normal-text (list-ref roman (1- digit)))))

\clef alto
&lt;c\4 g'\3&gt;
}

J'ai essayé sans succès les deux lignes suivantes (indépendamment):
\set Staff.StringNumber = #'(up)
\override StringNumber #'direction = #UP

--
Xavier Scheuer <****@****>

Merci Xavier et merci Mike !

Je redonne le code complet qui fonctionne chez moi :

\version "2.12.3"

\relative c {
  \set stringNumberOrientations = #'(up)
  \override StringNumber #'stencil = #ly:text-interface::print
  \override StringNumber #'text =
  #(lambda (grob)
  (let ((digit (ly:event-property (event-cause grob) 'string-number))
    (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")))
  (markup #:normal-text (list-ref roman (1- digit)))))

  \clef alto
  &lt;c\4 g'\3&gt;
}

Cordialement,
Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6449544.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

(let ((digit (ly:event-property (event-cause grob) 'string-number))
      (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")))
  (markup #:normal-text (list-ref roman (1- digit)))))

On peut utiliser `format' pour écrire directement les nombres romains :

(use-modules (ice-9 format) (srfi srfi-1))
(map (lambda (i) (format #f "~@r" i)) (iota 10 1 1))

("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")

Nicolas

···

Le 7 juin 2011 à 13:49, ****@**** a écrit :

Bonjour,

Ce code fonctionne dans des accords mais pas sur les notes seules ! Je m'en
suis rendu compte en essayant de substituer mes vieux "^\markup{\tiny III}"
avec l'élégant "\3" :wink:

Ci-dessous un exemple avec "&lt;d'\2&gt; a'\1" : quelqu'un voit pourquoi le
"la" n'a pas de numéro ?

Cordialement,
Karim

\version "2.12.3"

\relative c {
  \set stringNumberOrientations = #'(up)
  \override StringNumber #'stencil = #ly:text-interface::print
  \override StringNumber #'text =
  #(lambda (grob)
  (let ((digit (ly:event-property (event-cause grob) 'string-number))
    (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X")))
  (markup #:normal-text (list-ref roman (1- digit)))))

  \clef alto
  &lt;c\4 g'\3&gt; &lt;d'\2&gt; a'\1
}

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6452784.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Karim Barkati wrote:

Ce code fonctionne dans des accords mais pas sur les notes seules ! Je
m'en suis rendu compte en essayant de substituer mes vieux "^\markup{\tiny
III}" avec l'élégant "\3" :wink:

Ci-dessous un exemple avec "&lt;d'\2&gt; a'\1" : quelqu'un voit pourquoi
le "la" n'a pas de numéro ?

oui, c'est conçu comme-ça!

d'autre part il y le snippet http://lsr.dsi.unimi.it/LSR/Item?u=1&id=768 qui
peut être utilisé pour saisir les doigtés, strokefinger et stringnumber sans
mettre chaque note dans un accord!
il fonctionne parfaitement avec ces deux \overrides!

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6452869.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Merci Eluze pour le lien vers \addFingering, mais cette solution d'écrire à
part est trop lourde pour ma gravure en cours où les indications de numéros
de cordes sont plutôt éparses.

Je vais donc laisser mes "\markup" pour les notes isolées.

Cordialement,
Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6453600.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Karim Barkati wrote:

Merci Eluze pour le lien vers \addFingering, mais cette solution d'écrire
à part est trop lourde pour ma gravure en cours où les indications de
numéros de cordes sont plutôt éparses.

Je vais donc laisser mes "\markup" pour les notes isolées.

si on place les définitions du LSR dans un fichier qu'on inclut
régulièrement, ça devient tout facile, voire idéal pour marquer des notes
singulières.

numbers = {
  \override StringNumber #'stencil = #ly:text-interface::print
  \override StringNumber #'text = #(lambda (grob)
          (let ((digit (ly:event-property (event-cause grob)
'string-number))
                (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X"
"XI" "XII" "XIII" "XIV" "XV" "XVI" "XVII" "XIII" "XIX" "XX")))
               (markup #:normal-text (list-ref roman (1- digit)))))
}

le code de la pièce se réduit alors à:

{
  \numbers
  c d e f |
  c d \addStringNumber e #"4" f |
  c \addStringNumber d #"3" e f |
}

(je ne joue pas le violoncelle!)

et on peut définir un nom plus court pour cette fonction!

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6454080.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Alors avec \addStringNumber, j'obtiens l'erreur suivante pour le code
ci-dessous... Est-ce que je dois passer à la version 2.14 ?

Erreur : chaîne d'échappement inconnue : « \addStringNumber »

\version "2.12.3"

numbers = {
  \override StringNumber #'stencil = #ly:text-interface::print
  \override StringNumber #'text = #(lambda (grob)
          (let ((digit (ly:event-property (event-cause grob)
'string-number))
                (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X"
"XI" "XII" "XIII" "XIV" "XV" "XVI" "XVII" "XIII" "XIX" "XX")))
               (markup #:normal-text (list-ref roman (1- digit)))))
}

{
  \numbers
  c d e f |
  c d \addStringNumber e #"4" f |
  c \addStringNumber d #"3" e f |
}

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6457099.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Karim Barkati wrote:

Alors avec \addStringNumber, j'obtiens l'erreur suivante pour le code
ci-dessous... Est-ce que je dois passer à la version 2.14 ?

non, pas nécessaire!

Erreur : chaîne d'échappement inconnue : « \addStringNumber »

cela indique que la définition de \addStringNumber n'est pas présente - il
faut donc inclure le code du snippet (en effaçant les parties exemples) soit
dans le fichier lui-même (ce qui fait un peu lourd, en effet) soit dans un
autre fichier (par ex. "snippets.ly" qui lui sera inclu avant le code:

\version "2.12.3"

\include "snippets.ly"

numbers = {
  \override StringNumber #'stencil = #ly:text-interface::print
  \override StringNumber #'text = #(lambda (grob)
          (let ((digit (ly:event-property (event-cause grob)
'string-number))
                (roman '("I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X"
"XI" "XII" "XIII" "XIV" "XV" "XVI" "XVII" "XIII" "XIX" "XX")))
               (markup #:normal-text (list-ref roman (1- digit)))))
}

{
  \numbers
  c d e f |
  c d \addStringNumber e #"4" f |
  c \addStringNumber d #"3" e f |
}

bien sur on peut aussi mettre la définition numbers = … ci-dessus dans ce
fichier.

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6457123.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Merci Eluze, ça fonctionne pour les notes hors des accords avec
\addStringNumber !

J'ai téléchargé le code à l'adresse suivante :
https://lsr.dsi.unimi.it/form.php?type=snippet;id=768;rld=m_snippet

Puis j'ai mis en commentaire les exemples de la fin.

Enfin, j'ai ajouté dans mon fichier principal la ligne suivante :
\include "fingering.ly"

Une chose m'a cependant surpris concernant la place du numéro, car je
m'attendais à ce qu'il vienne juste après le nom de la note, or il doit
venir juste avant le nom de la note suivante, ce qui peut devenir assez
difficile à relire dans certains cas :

\addStringNumber bih16:64->\ppp^\markup{arco s.p. gliss., accel.} \glissando
\< [ #"3" a!16:64-> \! ]

Peut-être que ça serait plus facile à relire (et donc à maintenir) en
plaçant le numéro comme premier argument de \addStringNumber ?

Cordialement,
- Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6457414.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Karim Barkati wrote:

Merci Eluze, ça fonctionne pour les notes hors des accords avec
\addStringNumber !

J'ai téléchargé le code à l'adresse suivante :
https://lsr.dsi.unimi.it/form.php?type=snippet;id=768;rld=m_snippet

Puis j'ai mis en commentaire les exemples de la fin.

Enfin, j'ai ajouté dans mon fichier principal la ligne suivante :
\include "fingering.ly"

très bien

Une chose m'a cependant surpris concernant la place du numéro, car je
m'attendais à ce qu'il vienne juste après le nom de la note, or il doit
venir juste avant le nom de la note suivante, ce qui peut devenir assez
difficile à relire dans certains cas :

\addStringNumber bih16:64->\ppp^\markup{arco s.p. gliss., accel.}
\glissando \< [ #"3" a!16:64-> \! ]

en effet, c'est chargé!

Peut-être que ça serait plus facile à relire (et donc à maintenir) en
plaçant le numéro comme premier argument de \addStringNumber ?

pourquoi ne pas séparer les diverses instructions et mettre - par ex. - les
dynamiques dans une voix supplémentaire, les textes dans une autre et ainsi
de suite?!

\context Staff <<
  \context Voice = "musique" { … }
  \context Voice = "dynamiques" { s4 s s s \ppp s s … }
  \context Voice = "annotations" { s4 s s s -\markup bonjour s s … }

la voix qui n'utilise que des skips (s) peut facilement être construite à
l'aide d'un autre snippet: http://lsr.dsi.unimi.it/LSR/Item?u=1&id=507
Ghost voice (décidément, je fais la PR pour les snippets de Gilles!)

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6458524.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Eluze wrote:

pourquoi ne pas séparer les diverses instructions et mettre - par ex. -
les dynamiques dans une voix supplémentaire, les textes dans une autre et
ainsi de suite?!

Merci Eluze, c'est une solution sympathique que je vais garder dans un coin
de ma tête :slight_smile: Cependant, dans cette partition je trouve que c'est plus
facile d'avoir les dynamiques directement spécifiées avec la note à laquelle
elles sont rattachées, pour pouvoir s'y retrouver dans cette pièce qui
utilise de la polyphonie sur une seule portée, des rythmes un peu
compliqués, n'a pas toujours de barres de mesure et qui dure 12 minutes !

Du coup, je continue de penser que le design de la fonction \addStringNumber
gagnerait à passer le numéro de corde en *premier* argument, par exemple
pour pouvoir écrire ma ligne chargée tout en la gardant lisible:

\addStringNumber #"3" bih16:64->\ppp^\markup{arco s.p. gliss., accel.}
\glissando \< [ a!16:64-> \! ]

Cordialement,
- Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6461546.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Karim Barkati wrote:

Du coup, je continue de penser que le design de la fonction
\addStringNumber gagnerait à passer le numéro de corde en *premier*
argument, par exemple pour pouvoir écrire ma ligne chargée tout en la
gardant lisible:

\addStringNumber #"3" bih16:64->\ppp^\markup{arco s.p. gliss., accel.}
\glissando \< [ a!16:64-> \! ]

pour cela je pense qu'il suffit de changer l'ordre des paramètres - je
redéfinis la nouvelle fonction:

myStringNumber = #(define-music-function (parser location fingerStr music)
                                                             (string?
ly:music?)
  (add-articulation 'StringNumberEvent 'string-number 0 9 music fingerStr))

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6461747.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Du coup, je continue de penser que le design de la fonction
\addStringNumber gagnerait à passer le numéro de corde en *premier*
argument, par exemple pour pouvoir écrire ma ligne chargée tout en la
gardant lisible:

\addStringNumber #"3" bih16:64->\ppp^\markup{arco s.p. gliss., accel.}
\glissando \< [ a!16:64-> \! ]

Je viens de découvrir qu'il y a pleins de messages qui ne sont pas passés par la liste Lilypond. Je viens d'en prendre connaissances que par Nabble.

Réécrire \addStringNumber pour chaques notes c'est quand même un peut lourd.
Mais comme je suis aussi d'accord pour dire que c'est aussi un peu lourd si on doit écrire des "xxxxxxxxxxxxxxx" à répétitions, j'ai rajouté la possibilité de l'écrire d'une manière plus simple :
"*15x" par exemple sera alors converti par la fonction, en "xxxxxxxxxxxxxxx" (15 fois x)
[Ne pas mettre d'espaces]

Par exemple
\addStringNumber \music
             #"1234
                *15x % 15 notes + tard (en comptant les notes dans les accords)
                1234"

Ci-joint le .ly

Gilles

fingering.ly (5.28 KB)

Ca fonctionne :wink:
Merci Eluze !

Dans l'idéal, il ne resterait plus qu'à supporter l'écriture avec la barre
contre-oblique comme dans les accords (par ex. "bih16:64\3"), mais là j'ai
déjà réécrit la partition avec \myStringNumber et ça me suffit :sunglasses:

Musicalement,
Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6462815.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Merci Gilles !

Ca promet d'être très pratique :wink:

- Karim

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6462822.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

merci, Gilles!

petit détail gênant un peu:

avec l'ancienne version je pouvais écrire \addFingering \music #"" alors que
maintenant je suis obligé de mettre une espace #" " entre les guillemets.

le message est:

Parsing...ERROR: Value out of range: 0

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Numeros-de-cordes-en-chiffres-romains-dans-des-accords-tp6448991p6462858.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.