I have again been trying to build up a sensible files-and-variables
structure for more complex scores (e.g. orchestral pieces with several
movements), and I seem once again to have run into the limitation that
'book' and 'bookpart' have no scope for variables.
So I thought I would try Jan-Peter's parserDefine function, but I am
still getting a problem. I cannot fathom whether I have used the
function incorrectly, or whether what I am trying to do is outside of
its functionality.
I have pared my file down virtually to a minimum to demonstrate the
problem. This is what I now have:
%%%%%
\version "2.19.48"
\language "english"
parserDefine =
#(define-scheme-function (vkey val)(symbol? scheme?)
(ly:parser-define! vkey val))
printFluteA =
\new Staff \relative c'' {
b1 | c \bar "|." |
}
printMvtOne =
\new StaffGroup <<
\printFluteA
>>
\parserDefine printScoreMusic \bookpart { \score { \printMvtOne } }
%printScore =
\book {
\bookOutputName "../ExperimentScore"
\printScoreMusic
}
%%%%%
When I compile this, the \printScoreMusic line produces a syntax
error: unexpected BOOK_IDENTIFIER
The funny thing is, that if I comment out the preceding \bookOutputName
line, there is no error and the file compiles as one would expect.
Can anyone shed light on this behaviour, and see a solution?
David
On Tue, 2016-11-08 at 07:44 +0100, Jan-Peter Voigt wrote:
> Hello,
>
> here is a demo of the code:
>
> %%% snip
> \version "2.19.49"
>
> % the 2.18 version would just use parser and layout in the signature
> and
> the additional parser-argument in the ly:parser-define! call
> parserDefine =
> #(define-scheme-function (vkey val)(symbol? scheme?)
> (ly:parser-define! vkey val))
>
> %%%% Demo
>
> \parserDefine music \relative c'' { c b bes a }
>
> { \music }
> %%% /snip
>
> HTH
> Jan-Peter
>
> Am 08.11.2016 um 07:06 schrieb Jan-Peter Voigt:
> >
> > Hello,
> >
> > in these situations I use a little scheme-function like this:
> >
> > parserDefine =
> > #(define-scheme-function (key val)(symbol? scheme?)
> > (ly:parser-define! key val))
> >
> > !!!(I will correct this later, when I am on real computer ....)
> >
> > This scheme-function works on every level defining a variable into
> > the
> > current parser.
> >
> > HTH
> > Jan-Peter
> >
> > Am 7. November 2016 23:55:00 MEZ, schrieb Simon Albrecht
> > <[email protected]>:
> >
> > On 07.11.2016 17:56, David Kastrup wrote:
> >
> > David Sumbler <[email protected]> writes:
> >
> > I had the following lines in the main file of my
> > current
> > Lilypond project: \book { \bookOutputName
> > "../firstCello"
> > partName = "Cello 1" \include "frontcover.ily"
> > \bookpart {
> > %music... The file "frontcover.ily" contains a
> > \bookpart
> > block which prints a front cover with title, composer
> > etc.
> > - these are defined elsewhere. But it needs one more
> > variable, viz. 'partName'. I discovered that Lilypond
> > will
> > not accept a variable definition in Lilypond format in
> > the
> > position I have put it: at the top level of a \book
> > block.
> > Nor will it accept it in a \bookpart block. But at a
> > higher or a lower level, it will. This seems a bit
> > weird
> > (to say the least), in view of the fact that by
> > replacing
> > the line partName = "Cello 1" with the Scheme form
> > #(define partName "Cello 1") everything works as
> > intended.
> > Is there any useful reason why a variable cannot be
> > defined in Lilypond format in these contexts?
> >
> > Because they would not be local to these contexts?
> >
> >
> > In other words, to make this work, books and bookparts would
> > need their
> > own namespaces, am I right? What would be the drawbacks of
> > that? I
> > daresay it would be pretty intuitive to use, and I’ve also
> > found myself
> > wanting that feature in the past, mainly to simplify \include
> > structures.
> >
> > Best, Simon
> >
> > ---------------------------------------------------------------
> > ---------
> >
> > lilypond-user mailing list
> > [email protected]
> > https://lists.gnu.org/mailman/listinfo/lilypond-user
> >
> > -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9
> > Mail
> > gesendet.
> >
> > _______________________________________________
> > lilypond-user mailing list
> > [email protected]
> > https://lists.gnu.org/mailman/listinfo/lilypond-user
> _______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user