lilypond-user
[Top][All Lists]
Advanced

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

Re: A couple of questions about Edition Engraver


From: Jan-Peter Voigt
Subject: Re: A couple of questions about Edition Engraver
Date: Tue, 20 Feb 2018 10:46:26 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

Hello Stefano,

this is a great idea! Setting global context variables can reduce the needed code significantly.
In
https://github.com/openlilylib/edition-engraver/blob/master/usage-examples/development-1.ly
I use global variables to create "dynamic" editionModLists.

The files development*.ly in the usage-example folder are created during implementation of the displayed feature. The developed code used in development-2.ly and -3.ly already made its way into the core module and is usable out of the box. The code in development-1.ly will be placed there if it proofed useful. (At least I used it a lot in a score containing lyrics to balance the syllables in order to get the rhythmic picture of the score intact.)

Jan-Peter


Am 20.02.2018 um 06:03 schrieb Stefano Troncaro:
I've been wanting to expand my earlier tutorial with a section dealing with \editionModList since I think the convenience of it can be useful to many users. However, it is not a solution for every situation. Particularly, it is not useful when you need to insert objects as part of your edition if they are going to need tweaks (for example, slurs that need to be shaped). Also, in these situations it takes away the convenience of the point and click support of Frescobaldi.

I've been thinking about the cases where \editionModList is not useful, and I think that a simple wrapping function should be enough. I had not had time to write it but it should be pretty easy to do something like this:

\quickEditionModSettings target-edition target-context
    \qM 1 2/4 ^"I'm a quick Mod. I reduce redundancy"


Where the \qM command would translate to \editionMod target-edition 1 2/4 target-context ^"blabla". With proper input file structure this shouldn't impair readability of the code. The only thing that I can think of that could further decrease redundancy is to make it so that the position in the measure defaults to 0 if it is absent, but this is unnecessary in my opinion.

But the above represents the way I prefer to structure my files. Given the way you (David) structured the code in your original post, perhaps a wrapper that works like this would be closer to your intentions?

    \qMSet 'edition test

       \qMSet 'measure 1

         \qM 0/4 Voice \(

         \qM 1/4 Lyrics #(make-music 'ExtenderEvent)

       \qMSet 'measure 2

         \qMSet 'moment 0/4

           \qMSet 'context Score

             \qM \time 3/4

             \qM \tempo "Allegro" 4=135

           \qMSet 'context Voice

             \qM \p

             \qM \<

         \qMSet 'moment 1/4

           \qM Lyrics #(make-music 'HyphenEvent)


As far as I know something like that could be done, although admittedly it's not as minimalistic as your desired example with brackets. It does have the logical structure you seem to prefer though.

2018-02-19 11:34 GMT-03:00 Jan-Peter Voigt <address@hidden <mailto:address@hidden>>:

    Hi David,

    Urs already answered. I understand your concerns about the input and
    I am always open for ideas to ease the input for the
    edition-engraver. Like Urs already mentioned your proposal will be
    difficult to implement because it doesn't use the standard parser
    schemes. But it sheds light on how others might expect an
    easy/consistent input.

    What is not explained in the demo files (yet) is: You are always
    free to use constructs like

    \editionMod test 1 0/4 Voice {
       <>(
       \once \override NoteHead.color = #red
       \once \override Beam.color = #red
    }

    To address multiple time steps at once you can use \editionModList,
    to address multiple contexts at once you can use regular expressions
    and wildcards like in
    
https://github.com/openlilylib/edition-engraver/blob/master/usage-examples/development-3.ly
    
<https://github.com/openlilylib/edition-engraver/blob/master/usage-examples/development-3.ly>

    Your example implies that it would be a useful feature if one can
    split timing and context information into several layers. I'll think
    about it.

    I am going to focus on the edition-engraver development in April or May.

    Jan-Peter



    Am 19.02.2018 um 11:59 schrieb David Sumbler:

        As a newcomer to using Edition Engraver, and looking at the example
        files etc., I wondered why they were written with so much
        repetition.
           "Perhaps it is just to keep things easy for newcomers like me to
        understand," I thought.

        So I experimented with reformatting using braces as Lilypond does,
        which seemed the method most likely method.  For instance,

        \editionMod test 1 0/4 Voice \(
        \editionMod test 1 1/4 Lyrics #(make-music 'ExtenderEvent)
        \editionMod test 1 2/8 Voice [
        \editionMod test 2 0/4 Score \time 3/4
        \editionMod test 2 0/4 Score \tempo "Allegro" 4=135
        \editionMod test 2 0/4 Voice \p
        \editionMod test 2 0/4 Voice \<
        \editionMod test 2 1/4 Lyrics #(make-music 'HyphenEvent)

        might become

        \editionMod test {
            1 {
              0/4 Voice \(
              1/4 Lyrics #(make-music 'ExtenderEvent)
              2/8 Voice [
              }
            2 {
              0/4 {
                Score {
                 \time 3/4
                 \tempo "Allegro" 4=135
                }
                Voice {
                  \p
                  \<
                }
              }
              1/4 Lyrics #(make-music 'HyphenEvent)
            }
        }

        This is much clearer to me, and it would potentially be much
        easier to
        find one's way around the file for maintenance and the addition
        of new
        items.  I appreciate that one might not necessarily want all
        entries in
        the order they appear in the score.

        Unfortunately, what I wrote doesn't work.

        Is there any likelihood that something similar to what I have
        suggested
        might be added to Edition Engraver in the forseeable future?

        And how near are we to seeing Edition Engraver included in Lilypond
        itself?

        David

        _______________________________________________
        lilypond-user mailing list
        address@hidden <mailto:address@hidden>
        https://lists.gnu.org/mailman/listinfo/lilypond-user
        <https://lists.gnu.org/mailman/listinfo/lilypond-user>



    _______________________________________________
    lilypond-user mailing list
    address@hidden <mailto:address@hidden>
    https://lists.gnu.org/mailman/listinfo/lilypond-user
    <https://lists.gnu.org/mailman/listinfo/lilypond-user>






reply via email to

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