Okay, that looks good.  But there are two things:  First, can the files be
*.ly files instead of *.ily files?  And if not, will *.ily files compile
standalone?  (People will still want to download just one movement.)
 Second, when I tried to use includes, I got a message saying it couldn't
find the file.  Then it gave me a search path for the includes.  None of
them were the current directory (.).  If I have to put the files in some
standard include directory, it's not going to work.

Thanks for your input.


Knute Snortum
(via Gmail)


On Sat, Apr 26, 2014 at 12:57 PM, Jay Anderson <horndud...@gmail.com> wrote:

> On Sat, Apr 26, 2014 at 11:54 AM, Knute Snortum <ksnor...@gmail.com>
> wrote:
> > Short version:  I'd like to be able to pull in (import) several external
> ly
> > files into a multi-movement piece.
> >
> > Long version:
> >
> > I'm transcribing for Mutopia and we have several pieces where people
> like to
> > download one movement from a piece.  For instance, I'm working on
> > Mussorgsky's Pictures at an Exhibition.  Many people just want the
> Promenade
> > but I don't want make people download 10-14 files to get the whole piece.
> > Yes, we could zip them, but they would still have to print a dozen files
> and
> > there's no indication of order.
> >
> > What I'm wondering is if there is some way to create a LilyPond file
> > containing a book with several scores, where the source of the movements
> is
> > an external file.  "includes" won't do.  Something like this:
> >
> > \book {
> >   \score {
> >     import "./ly_files/promenade-1/promenade-1.ly"
> >   }
> >   \score {
> >     import "./ly_files/gnomus/gnomus.ly"
> >   }
> >   ...
> > }
> >
> > Possible?  On a wish list?  Some other way to do it?
> >
> > If there's no good way to do it, I will probably write a Perl
> preprocessor
> > to do it.
>
> Why won't includes work? This is actually how I prefer to work (rather
> than variables storing music). Here's an example:
>
> =====================================
> \version "2.18.0"
>
> \include "defs.ily"
>
> instrument = "Horn in F"
>
> \include "header.ily"
>
> \score
> {
>   \new Staff
>   <<
>     { \include "mvt1/horn.ily" }
>     { \include "mvt1/outline.ily" }
>   >>
> }
> \score
> {
>   \new Staff
>   <<
>     { \include "mvt2/horn.ily" }
>     { \include "mvt2/outline.ily" }
>   >>
> }
> \score
> {
>   \new Staff
>   <<
>     { \include "mvt3/horn.ily" }
>     { \include "mvt3/outline.ily" }
>   >>
> }
> =====================================
>
> I can use this file for the individual part, another for the piano
> part, and anther which compiles a multiple pieces together. (assuming
> a similar file structure: mvt1/horn.ily, mvt/outline.ily,
> mvt1/piano_right.ily, etc.)
>
> When typing out the score block becomes too repetitive I do something like
> this:
>
> =====================================
> \version "2.18.0"
>
> ... includes ...
>
> makeGallayScore =
> #(define-void-function (parser location num) (string?)
>   (let ((score
>          #{
>            \score
>            {
>              \new Staff { \include #(string-append num ".ily") }
>            }
>          #}))
>     (add-score parser score)))
>
> makeGallay =
> #(define-void-function (parser location low high) (number? number?)
>   (do ((i low (+ i 1)))
>       ((> i high))
>     (let ((n (format #f "~2,'0d" i)))
>       #{ \makeGallayScore $n #})))
>
> \makeGallay 1 40
> =====================================
>
> This was for a book of etudes. Each etude is the raw music in files
> named 01.ily through 40.ily.
>
> -----Jay
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to