lilypond-user
[Top][All Lists]
Advanced

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

Re: Compiling Nenuvar Editions


From: Michael Dykes
Subject: Re: Compiling Nenuvar Editions
Date: Wed, 23 Sep 2015 12:17:12 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

I have now downloaded his entire zip file and am using the code suggested by Simon (I think) which is:

address@hidden:~/Documents/nenuvar-master/Haendel$ m

and keep getting the error message:

make: *** No rule to make target 'Haendel/Oratorio/Messiah'.  Stop.

I am trying this in the directory: Documents/Haendel

I also tried this in Documents/Haendel/Oratorio/Messiah but to no avail.


Thanks for all the help with this as I am not sure what to do here.

On 09/23/2015 12:01 PM, address@hidden wrote:
Send lilypond-user mailing list submissions to
        address@hidden

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.gnu.org/mailman/listinfo/lilypond-user
or, via email, send a message with subject or body 'help' to
        address@hidden

You can reach the person managing the list at
        address@hidden

When replying, please edit your Subject line so it is more specific
than "Re: Contents of lilypond-user digest..."


Today's Topics:

    1. Re:?new text-spanner? development (David Kastrup)
    2. Re:?new text-spanner? development (David Nalesnik)
    3. Re:lilypond-user Digest, Vol 154, Issue 123 (Michael Dykes)
    4. Labeling harmony using Roman numerals from a blind user
       (Daniel Contreras)
    5. Compiling Nenuvar Editions (was: Re: lilypond-user Digest,
       Vol 154, Issue 123) (Simon Albrecht)
    6. Scheme function to output \bookpart {} ? (Simon Albrecht)


----------------------------------------------------------------------

Message: 1
Date: Wed, 23 Sep 2015 13:54:39 +0200
From: David Kastrup <address@hidden>
To: Simon Albrecht <address@hidden>
Cc: David Nalesnik <address@hidden>,      lilypond-user
        <address@hidden>
Subject: Re: ?new text-spanner? development
Message-ID: <address@hidden>
Content-Type: text/plain; charset=utf-8

Simon Albrecht <address@hidden> writes:

Hello,

as the other thread was becoming a monster, I start up a new one.
I?ve now got a version of text-span-spread.ly, as I call it, and it
compiles now. However, a new problem appeared, which I assume has to
do with variable scope and seems to be over my head: The first call to
the \startTextSpan music function sets the texts for _all_ the
subsequent calls. Even more suspiciously, the tweak to font-shape in
line 725 (ugh?) is also applied to all these instances.
I?m sorry to call for help so soon again, but I just don?t have enough
experience and background to troubleshoot this with any degree of
efficiency. Any hints are welcome! :-)
Well, I don't know who is responsible for this particular idiom
encountered frequently in here, but the following open-coded loop is
both opaque and inefficient (namely O(n^2) as _appending_ to a list is
an O(n) operation):

extractLyricEventInfo =
#(define-scheme-function (lst) (ly:music?)
    "Given a music expression @var{lst}, return a list of pairs.  The
@code{car} of each pair is the text of any @code{LyricEvent}, and the
@code{cdr} is a boolean representing presence or absence of a hyphen
associated with that @code{LyricEvent}."
    ;; TODO: include duration info, skips?
    (let ((grist (extract-named-music lst '(LyricEvent))))
      (let mill ((grist grist) (flour '()))
        (if (null? grist)
            flour
            (let* ((text (ly:music-property (car grist) 'text))
                   (hyphen (extract-named-music (car grist) 'HyphenEvent))
                   (hyphen? (not (null? hyphen))))
              (mill (cdr grist)
                (append flour (list (cons text hyphen?)))))))))

Open-coded, you are much better off writing:

    (let ((grist (extract-named-music lst '(LyricEvent))))
      (let mill ((grist grist) (flour '()))
        (if (null? grist)
            (reverse! flour)
            (let* ((text (ly:music-property (car grist) 'text))
                   (hyphen (extract-named-music (car grist) 'HyphenEvent))
                   (hyphen? (not (null? hyphen))))
              (mill (cdr grist)
                (cons (cons text hyphen?) flour))))))

Since cons is O(1) and the final reverse! O(n) is only done once, you
arrive at O(n) for all.  But why open-code in the first place?

   (map (lambda (elt)
          (let* ((text (ly:music-property elt 'text))
                 (hyphen (extract-named-music elt 'HyphenEvent))
                 (hyphen? (pair? hyphen)))
             (cons text hyphen)))
        (extract-named-music lst 'LyricEvent)))

For something that is one-on-one, this is far more transparent.  And
even for something that is one-to-some (namely resulting in possibly 0,
1, or more elements), (append-map (lambda (elt) ...) ...) tends to be
much clearer.






reply via email to

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