Le 03/11/2011 19:02, Michael Ellis disait :
Thanks for the suggestion, Jean-Charles. I think I've now got
a solution that's fairly satisfactory:
In my include file, I now have:
%----------------------------------------------------------
#(define (make-named-instrument default-name)
(define iname default-name)
(define (set newname)
(set! iname newname))
(define (interface op . rest)
(cond
((eq? op 'set)
(set (car rest)))
((eq? op 'get)
iname)
(else (error "Undefined operation"))))
interface)
#(define mainInstrument (make-named-instrument "cello"))
#(define cueInstrument (make-named-instrument "acoustic grand"))
#(define clapInstrument (make-named-instrument "woodblock"))
#(define (setMainCueClapInstruments main cue clap)
(mainInstrument 'set main)
(cueInstrument 'set cue)
(clapInstrument 'set clap)
'())
%----------------------------------------------------------
This allows me to do
\set midiInstrument = #(cueInstrument 'get)
in my cueNotes and similar functions and the choice of instruments can
be set within the .ly file by
#(setMainCueClapInstruments "trumpet" "clarinet" "timpani")
Is it just me, or has the thought occurred to others that LilyPond
might actually be easier to learn and use if the entry language was
pure Scheme? :-)
I actually used this kind of artifact with King Arthur: I typeset it for
a music school here in France, so the table of contents, character and
instrument names should be in French. Beside that, the sources I
uploaded on the CPDL might be used in countries where French is not as
commonly used as in France and "Inhaltsverzeichnis" looks better in
German than "Table des matières". So I had to find a way to collect all
the strings that should be adapted in one place (per language) and set
this preference in one dedicated file that gets included in each master
file.
Cheers,
Jean-Charles
On Thu, Nov 3, 2011 at 1:34 PM, Jean-Charles Malahieude
wrote:
Le 03/11/2011 12:53, Michael Ellis disait :
So, with that as background, let me re-ask the question in a different
form: What's the best way to support changing a set of default
values?
Wouldn't it be possible to base it on an extra file, let's say a
"dictionary.ily" where you define variables like
myCueColor = Blue_with_yellow_spots
muCueInstrument = TripleBassThatSoundsLikeSnoringDucks
that you include in your templates where you would then have something like
\set midiInstrument = \myCueInstrument
\override Rest #'color = \myCueColor
This is just a guess...
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user