Créer des abreviations pour les variables scheme

Bonsoir à l'équipe ...

Je remarque que beaucoup des discussions sur le forum tendent à rendre le
code Lilypond compréhensible, ce qui n'était pas mon cas jusqu'à présent.
Des lignes de 150 caractères, des indentations fantaisistes, bref, je revois
un peu tout ça dans le sens de la simplification.

Mais toujours dans le sens de cette simplification, je voudrais affecter des
valeurs à des variables scheme, du genre :

\override DynamicLineSpanner #'staff-padding = #2.0
\override DynamicText #'self-alignment-X = #-1
...

C'est surtout la construction << {} \\ {} >> qui demande de réintroduire à
chaque fois ces longues instructions.

Etant donné que les variables Lilypond ne permettent pas de créer des macros
sur de telles instructions, n'y a-til pas moyen d'utiliser quelque chose :smiley:
comme :
DynamicTextAlignement = -1
ou autre expression semblable.

D'avance merci,

Jean-François

···

--
View this message in context: http://n2.nabble.com/Creer-des-abreviations-pour-les-variables-scheme-tp4281647p4281647.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Il est possible d'écrire par exemple

  \dynamicTextAlignment #LEFT

en définissant une fonction, avec `define-music-function'.
Dans ce cas c'est vraiment très facile :

%% attention tout de même, non testé, voir la doc qui va bien
dynamicTextAlignment =
#(define-music-function (parser location align) (number?)
  #{ \override DynamicText #'self-alignment-X = #$align #})

···

Le 10 janv. 2010 à 17:13, Seventies a écrit :

Etant donné que les variables Lilypond ne permettent pas de créer des macros
sur de telles instructions, n'y a-til pas moyen d'utiliser quelque chose :smiley:
comme :
DynamicTextAlignement = -1
ou autre expression semblable.

Il est possible d'écrire par exemple

\dynamicTextAlignment #LEFT

en définissant une fonction, avec `define-music-function'.
Dans ce cas c'est vraiment très facile :

%% attention tout de même, non testé, voir la doc qui va bien
dynamicTextAlignment =
#(define-music-function (parser location align) (number?)
#{ \override DynamicText #'self-alignment-X = #$align #})

Ok, merci, mais je n'ai pas encore utilisé les fonctions dans Lilypond.
J'ai bien vu quelques exemples, on va donc faire fonctionner les méninges pour comprendre, je crois que ça vaut la peine.

Et quelle serait alors la 'syntaxe' d'appel ? Simplement \dynamicTextAlignment #LEFT ?
Et ça fonctionnerait également avec des nombres ?

Amicalement,

Jean-François

Mais toujours dans le sens de cette simplification, je voudrais affecter des
valeurs à des variables scheme, du genre :

\override DynamicLineSpanner #'staff-padding = #2.0
\override DynamicText #'self-alignment-X = #-1
...

C'est surtout la construction << {} \\ {} >> qui demande de réintroduire à
chaque fois ces longues instructions.

Etant donné que les variables Lilypond ne permettent pas de créer des macros
sur de telles instructions,

Ce n'est pas vrai, on en trouve même des exemples dans la documentation,
en particulier

(oups, je viens de voir que padText n'est pas tout le temps traduit)

DynamicTextAlignement = -1

En ajoutant un '#' devant '-1', je suis sûr que c'est une définition de
variable valide.

Salutations lilyesques,
John

···

Le dimanche 10 janvier 2010 à 08:13 -0800, Seventies a écrit :

== En réponse au message du 2010-01-13, 10:56:11 ==

···

Le dimanche 10 janvier 2010 à 08:13 -0800, Seventies a écrit :

Mais toujours dans le sens de cette simplification, je voudrais affecter des
valeurs à des variables scheme, du genre :

\override DynamicLineSpanner #'staff-padding = #2.0
\override DynamicText #'self-alignment-X = #-1
...

C'est surtout la construction << {} \\ {} >> qui demande de réintroduire à
chaque fois ces longues instructions.

Etant donné que les variables Lilypond ne permettent pas de créer des macros
sur de telles instructions,

Ce n'est pas vrai, on en trouve même des exemples dans la documentation,
en particulier
LilyPond Learning Manual: 3.4.4 Saving typing with variables and functions

(oups, je viens de voir que padText n'est pas tout le temps traduit)

DynamicTextAlignement = -1

En ajoutant un '#' devant '-1', je suis sûr que c'est une définition de
variable valide.

Salutations lilyesques,
John

Merci pour ce lien. Effectivement, j'utilise les variables pour toutes les indications de nuance (du genre "cresc. poco a poco") ainsi que pour tous les tempi. Ceci assure que les tempi et changements de tempo seront correctement orthographiés sur chaque partie.

En ce qui concerne les fonctions (define-music-function), là je n'ai pas encore compris la syntaxe. Mais j'utilise sans toujours comprendre les exemples de la documentation.

Une difficulté suffit pour chaque jour :wink:

Amicalement,

Jean-François

Il est possible d'écrire par exemple

\dynamicTextAlignment #LEFT

en définissant une fonction, avec `define-music-function'.
Dans ce cas c'est vraiment très facile :

%% attention tout de même, non testé, voir la doc qui va bien
dynamicTextAlignment =
#(define-music-function (parser location align) (number?)
#{ \override DynamicText #'self-alignment-X = #$align #})

Ok, merci, mais je n'ai pas encore utilisé les fonctions dans Lilypond.
J'ai bien vu quelques exemples, on va donc faire fonctionner les méninges pour comprendre, je crois que ça vaut la peine.

Et quelle serait alors la 'syntaxe' d'appel ? Simplement \dynamicTextAlignment #LEFT ?

oui

Et ça fonctionnerait également avec des nombres ?

LEFT est une variable qui a la valeur -1, et RIGHT a la valeur 1.
C'est plus parlant que d'utiliser directement les nombres, mais bien sûr
on peut mettre des nombres à la place.

Nicolas

···

Le 10 janv. 2010 à 23:08, j-f.lucarelli a écrit :

Il est possible d'écrire par exemple

\dynamicTextAlignment #LEFT

en définissant une fonction, avec `define-music-function'.
Dans ce cas c'est vraiment très facile :

%% attention tout de même, non testé, voir la doc qui va bien
dynamicTextAlignment =
#(define-music-function (parser location align) (number?)
#{ \override DynamicText #'self-alignment-X = #$align #})

Ok, merci, mais je n'ai pas encore utilisé les fonctions dans Lilypond.
J'ai bien vu quelques exemples, on va donc faire fonctionner les méninges pour comprendre, je crois que ça vaut la peine.

Et quelle serait alors la 'syntaxe' d'appel ? Simplement \dynamicTextAlignment #LEFT ?

oui

Et ça fonctionnerait également avec des nombres ?

LEFT est une variable qui a la valeur -1, et RIGHT a la valeur 1.
C'est plus parlant que d'utiliser directement les nombres, mais bien sûr
on peut mettre des nombres à la place.

Nicolas

À ce sujet, je viens de remarquer que le \once \override DynamicText #'self-alignment-X = #1 doit se situer IMMEDIATEMENT avant la note portant la nuance.

Ce code ne fonctionne pas :

  \once \override DynamicText #'self-alignment-X = #1
  r4 r f \PocoF

Tandis que celui-ci fonctionne :
  r4 r
  \once \override DynamicText #'self-alignment-X = #1
  f \PocoF

avec les définitions suivantes :

PocoF = #(make-dynamic-script DMPocoF)
et
DMPocoF = \markup {\normal-text \italic "poco " \dynamic f}

C'est un peu dommage et ça mériterait peut-être une révision du code.

En attendant, je me retrouve avec ±100 fichiers à revoir :-/

···

Le 10 janv. 2010 à 23:08, j-f.lucarelli a écrit :