[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Affichage conditionnel (if / else)
From: |
Phil |
Subject: |
Re: Affichage conditionnel (if / else) |
Date: |
Wed, 23 Sep 2009 02:27:20 +0200 |
User-agent: |
Thunderbird 2.0.0.23 (Macintosh/20090812) |
Bonjour Nicolas,
Merci pour ta réponse.
Désolé de ne pas avoir été très précis, mais ce que je cherche n'est pas
précis, je veux dire : ne se limite pas à un cas unique. C'est une
information générale sur les ressources et la syntaxe de Scheme adaptée
à Lilypond.
Je vais prendre un exemple extrêmement précis (donc limitatif par
rapport à l'aide que je cherche) :
Je crée des tablatures pour la guitare pour des chansons de Ane Brun.
Dans son interprétation de plusieurs chansons, elle utilise un
open-tuning (accord ouvert) de ré (c'est-à-dire un accordage non
conventionnel de la guitare).
Or, il se trouve que certains de ses morceaux ne nécessitent pas
vraiment cet accordage, peuvent être joués avec un accordage
traditionnel (e b g d a e).
Donc, je voudrais à partir d'un seul fichier lilypond pouvoir sortir les
deux versions de la tablature des-dits morceaux.
Version 1 : la tablature du morceau en accordage normal
Version 2 : la tablature du morceau en open-tuning
(Note : merci de ne pas m'interroger sur la pertinence de ces deux
versions. À l'usage, elles sont intéressantes : la première pour celui
qui n'a pas envie ou ne peut pas ré-accorder sa guitare, la seconde pour
celui qui cherche le morceau exact)
Pour ce faire, je voudrais utiliser une seule variable (ci-dessous
NONOPENTUNING) qui me permettrait, en étant modifiée avant compilation,
de sortir très facilement ces deux versions :
NONOPENTUNING est true => la tablature est compilée en accordage normal
NONOPENTUNING est false => la tablature est compilée en open-tuning
Actuellement, j'utilise par exemple :
*** début de code ***
NOTOPENTUNING = 0
#(if (> NOTOPENTUNING 0)
(define SetOpenTuning '(+4 -1 -5 -10 -15 -20) )
(define SetOpenTuning '(+2 -3 -6 -10 -15 -22) )
)
*** fin de code ***
Puis j'utilise la variable SetOpenTuning dans le contexte de la TabStaff
*** début de code ***
\set TabStaff.stringTunings = \SetOpenTuning
*** fin de code ***
En mettant NOTOPENTUNING à 1, j'obtiens la version en accordage normal.
Si je n'avais qu'à modifier le `TabStaff.stringTunings`, je pourrais me
contenter d'un :
*** début de code ***
\set TabStaff.stringTunings = (+4 -1 -5 -10 -15 -20)
% \set TabStaff.stringTunings = (+2 -3 -6 -10 -15 -22)
*** fin de code ***
… en décommentant l'une ou l'autre des deux lignes suivant ce que je
veux obtenir.
Seulement, de nombreuses choses doivent être changées d'une version à
l'autre : l'explication sur la version de la tablature visée,
l'explication de l'accordage à utiliser (quand open-tuning), le pied de
page, le contenu de l'entête, etc.
Je n'ai pas envie de décommenter/commenter chaque ligne concernée à la main.
Je voudrais n'utiliser que la définition de la variable NOTOPENTUNING
pour modifier tout ça.
Mais vois-tu, je n'arrive même pas à faire le test tout bête pour savoir
NOTOPENTUNING est #t ou #f, je n'ai pas trouvé la syntaxe qui fonctionne
et je dois me contenter pour le moment de mettre cette valeur à 0 ou 1
et de faire un malheureux test avec ">" comme ci-dessus.
Voilà, désolé d'avoir été un peu long, mais puisqu'il fallait être
précis ;-)
Merci pour toute aide qu'on pourra m'apporter (qui, pour faire court, se
résume à m'indiquer où je serais susceptible de trouver de la document
sur l'utilisation de Scheme avec Lilypond).
Bien à toi,
Bien à vous tous,
Phil
Nicolas Sceaux a écrit :
Il vaudrait mieux commencer par donner exemple concret de ce que tu
veux obtenir. Par exemple :
Dans le cas un, je voudrais que ça fasse [telle chose exprimée en
code LilyPond]
Dans le cas deux, je voudrais que ça fasse [telle autre chose exprimée
en code LilyPond]
et alors il sera plus facile de te conseiller.
Très probablement cela nécessitera de recourir à du code Scheme.
Nicolas
- Affichage conditionnel (if / else), Phil, 2009/09/22
- Re: Affichage conditionnel (if / else), Nicolas Sceaux, 2009/09/22
- Re: Affichage conditionnel (if / else),
Phil <=
- Re: Affichage conditionnel (if / else), Phil, 2009/09/24
- Re: Affichage conditionnel (if / else), Gilles THIBAULT, 2009/09/24
- Re: Affichage conditionnel (if / else), Gilles THIBAULT, 2009/09/24
- Re: Affichage conditionnel (if / else), Phil, 2009/09/24