lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Pull in external LilyPond files into a score of movements


From: unlabeled
Subject: Re: Pull in external LilyPond files into a score of movements
Date: Tue, 4 Aug 2015 19:03:03 -0700 (MST)

Thanks so much, Jérôme! I think I understand the syntax there, but I can't actually get it to work. I will try to explain, now that I have more time, exactly what I am attempting.

I am working on a multi-movement orchestral score. I want to be able to print a final score using bookparts, but while I work on each movement, I want to render it in isolation. I don't expect to publish the separate movements, so I don't care if they are perfect, but I need them to play and render as I am working. I will eventually need to make parts too, but at the moment I'm not thinking that far ahead.

So, here is my file structure:

FullScore.ly - this contains \version and \paper, and then it defines variables title, composer, etc. Then, it includes the first movement's .ly; then it resets title, composer, etc. to \null so that they won't be repeated on each movement.

Now, each movement is an .ly file too, e.g. movtI.ly - in this, I set movtTitle, I set global key, time, and tempo, and a var for midiTempo. Then I set each instrument's music as a music block, e.g.
scoreAFlute = \relative c'' {
  \global
    ...
}

Finally, at the end of the movt. file I include "score_def.ly"

score_def.ly is a single file, having info that is shared for every movement. It defines instruments and assigns the previously set music to them, e.g.
scoreAFlutePart = \new Staff \with {
  instrumentName = "Flute"
  shortInstrumentName = "Fl."
  midiInstrument = "flute"
} \scoreAFlute

Then it sets a \bookpart, which contains a \header and two \scores - one for display rendering, and one for midi rendering (uses articulate.ly)

This is where I am having the problem - I say it's all the same for every file, but the one thing that is different is that the header elements are unique - those are delivered as variables in the \header block. This is fine, in the structure as above, when I render the full score. But if I try to render a single movement, the variables are not defined, so I get an error. That's why I was hoping to either a) set the variable in the movt.ly file, like title = \title || "", or b) do that right in the score_def, so that in the header I could just do title = \title || "", So I tried your solution, and I keep getting an error - I've tried putting it in various places, and changing the syntax every way I can think of, but it's always an error. 

Of course, I AM AN IDIOT - I just moved the variables from the fullscore into each movt.ly file, and set them all to "" except the first movt., and I get exactly what I want. So, no real problem - I just was not thinking clearly before I guess. BUT, I would still love to find out how to do this, as I know it will come up again in some other context.

At any rate, thanks again for trying to help - I really appreciate it!

On 8/4/2015 8:23 AM, Jérôme Plût-2 [via Lilypond] wrote:
Pridie Nonas Augustas MMXV scripsit unlabeled :

> Thank you all so much, i'm just getting into lilypond and trying to figure
> out how to make it work for my workflow. i have a solution i like to this,
> or similar, issue, which i will share soon. meanwhile, i have a question
> that will help me finish it:
> is there such a thing as a null0if, or a ternary operator that can be used
> inline? I want to do something like this:
>
> \header {
>     title = \title
>   }
>
> but if \title hasn't been defined (because I'm running an ily outside its
> container), then it fails. Would like to do something like title = \title ||
> "" (to borrow _javascript_ syntax - use \title var if it exists, else use an
> empty string).
>
> I guess if not, I can write a scheme function, but haven't delved into that
> yet, and trying to figure out the simplest approach.

I think the easiest way is to scheme it:
(warning, I cannot test the code below right now):

#(if (not (defined? 'title)) (set! title ""))

You can even meta-scheme it:

#(define (define-default symbol)
  (if (not (defined? symbol)) (module-add! (current-module) symbol "")))

#(map define-default '(title subtitle instrument composer))


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user



If you reply to this email, your message will be added to the discussion below:
http://lilypond.1069038.n5.nabble.com/Pull-in-external-LilyPond-files-into-a-score-of-movements-tp161839p179263.html
To unsubscribe from Pull in external LilyPond files into a score of movements, click here.
NAML



View this message in context: Re: Pull in external LilyPond files into a score of movements
Sent from the User mailing list archive at Nabble.com.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]