Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

Mason Hock-2
In my music, I frequently use
- glissandi during which the performer rearticulates with a particular rhythm, represented with headless steams
- glissandi that extend longer than a bar or otherwise require intermediate headless stems to clarify duration, with a slur indicating that the performer should not rearticulate

My current solution is based on the hack[1] recommended in the documentation. Here is an example:

------------------------------------------------------------------------
\version "2.19.81"
\language "english"

% starts an extended glissand
glon = {
  \override NoteColumn.glissando-skip = ##t
  \hide NoteHead
  \override NoteHead.no-ledgers = ##t
  \override Stem.thickness = #0.5
  \override Accidental #'stencil = ##f
}
% terminates an extended glissando
gloff = {
  \revert NoteColumn.glissando-skip
  \undo \hide NoteHead
  \revert Glissando #'stencil
  \revert NoteHead.no-ledgers
  \revert Stem.thickness
  \revert Accidental #'stencil
}
% slightly increase slope of glissando so that line is
% not perfectly horizontal when glissing between notes
% on same staff line/space
glup = { \once\override Glissando.extra-dy = #0.5 }
gldown = { \once\override Glissando.extra-dy = #-0.5 }

\relative c' {
  \glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
  \gloff a a \gldown a \glissando \glon a a a \gloff af4 |
  \gldown af2 \glissando \gldown g4( \glissando \glon f |
  e) \gloff e r2 |
}
------------------------------------------------------------------------

This hack has several flaws.
- The stems are all different distances from the glissando line.
- Articulations have a noticably inconsistent slope.
- Selecting the least-bad pitch for each hidden note is tedious.
- Even slight changes to horizontal spacing can ruin the vertical position of the hidden notes.
- The position of a stem is not musical content and should not be represented by a pitch.

These flaws add up to a serious problem: Not only is the stem placement regardless of which hidden pitches I choose, but because horizontal spacing affects which pitches are least-bad, there is no way to choose the hidden pitches to be optimal for multiple editions. In order to fix this with edition engraver, I would have to tweak each stem individually for each edition, which would not realistically be maintainable.

A proper implementation of extended glissandi would place each intermediate stem a fixed distance from the gliss line. It would also be nice to tweak the slope of all gliss lines globally, something I can not do now because the extra-dy value is different for ascending and descending glissandi, but this would be a convenience, not a necessity.

The ideal syntax would resemble this:

   c8 \gliss-end c c c c \gliss-end f

and result in a gliss from c to f, where
- the intermediate eighth note stems are all exactly the same distance from the gliss line
- the slope of the gliss line is slightly increased like in my example above

However, the bare minimum I need is for the stems to be automatically positioned vertically, and (if I need to tweak the slope manually) for them to be positioned relative to the gliss line *after the slope tweak*.

I don't understand Scheme or Lilypond's internals well enough to do this myself. If the solution is non-trivial for someone who does know Scheme and and Lilypond well, enough, I am willing to pay them for their time spent on the solution. The solution could be in the form of an include, or a feature of 2.19.

If anyone can help me with this, please let me know approximately how many hours of work you would expect it to take and what you would consider fair compensation for the amount of time spent.

Thanks,

Mason

[1] http://lilypond.org/doc/v2.19/Documentation/notation/expressive-marks-as-lines#glissando

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

signature.asc (484 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

Jan-Peter Voigt
Hello Mason,

I just have an idea how I *would* try to approach a solution. Once I
needed a lyrics syllable attached to an extender line at a given time.
So I used the extender stencil and first attached the syllable on top of
it at a given x-offset. Then I added a property to the corresponding
note to receive an accurate x-offset. I'll have a look into that code later.
I can't say if it is easy to apply this technique on the
*non*-horizontal glissando-line. We'll see.

Jan-Peter


Am 19.05.2018 um 23:16 schrieb Mason Hock:

> In my music, I frequently use
> - glissandi during which the performer rearticulates with a particular rhythm, represented with headless steams
> - glissandi that extend longer than a bar or otherwise require intermediate headless stems to clarify duration, with a slur indicating that the performer should not rearticulate
>
> My current solution is based on the hack[1] recommended in the documentation. Here is an example:
>
> ------------------------------------------------------------------------
> \version "2.19.81"
> \language "english"
>
> % starts an extended glissand
> glon = {
>    \override NoteColumn.glissando-skip = ##t
>    \hide NoteHead
>    \override NoteHead.no-ledgers = ##t
>    \override Stem.thickness = #0.5
>    \override Accidental #'stencil = ##f
> }
> % terminates an extended glissando
> gloff = {
>    \revert NoteColumn.glissando-skip
>    \undo \hide NoteHead
>    \revert Glissando #'stencil
>    \revert NoteHead.no-ledgers
>    \revert Stem.thickness
>    \revert Accidental #'stencil
> }
> % slightly increase slope of glissando so that line is
> % not perfectly horizontal when glissing between notes
> % on same staff line/space
> glup = { \once\override Glissando.extra-dy = #0.5 }
> gldown = { \once\override Glissando.extra-dy = #-0.5 }
>
> \relative c' {
>    \glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
>    \gloff a a \gldown a \glissando \glon a a a \gloff af4 |
>    \gldown af2 \glissando \gldown g4( \glissando \glon f |
>    e) \gloff e r2 |
> }
> ------------------------------------------------------------------------
>
> This hack has several flaws.
> - The stems are all different distances from the glissando line.
> - Articulations have a noticably inconsistent slope.
> - Selecting the least-bad pitch for each hidden note is tedious.
> - Even slight changes to horizontal spacing can ruin the vertical position of the hidden notes.
> - The position of a stem is not musical content and should not be represented by a pitch.
>
> These flaws add up to a serious problem: Not only is the stem placement regardless of which hidden pitches I choose, but because horizontal spacing affects which pitches are least-bad, there is no way to choose the hidden pitches to be optimal for multiple editions. In order to fix this with edition engraver, I would have to tweak each stem individually for each edition, which would not realistically be maintainable.
>
> A proper implementation of extended glissandi would place each intermediate stem a fixed distance from the gliss line. It would also be nice to tweak the slope of all gliss lines globally, something I can not do now because the extra-dy value is different for ascending and descending glissandi, but this would be a convenience, not a necessity.
>
> The ideal syntax would resemble this:
>
>     c8 \gliss-end c c c c \gliss-end f
>
> and result in a gliss from c to f, where
> - the intermediate eighth note stems are all exactly the same distance from the gliss line
> - the slope of the gliss line is slightly increased like in my example above
>
> However, the bare minimum I need is for the stems to be automatically positioned vertically, and (if I need to tweak the slope manually) for them to be positioned relative to the gliss line *after the slope tweak*.
>
> I don't understand Scheme or Lilypond's internals well enough to do this myself. If the solution is non-trivial for someone who does know Scheme and and Lilypond well, enough, I am willing to pay them for their time spent on the solution. The solution could be in the form of an include, or a feature of 2.19.
>
> If anyone can help me with this, please let me know approximately how many hours of work you would expect it to take and what you would consider fair compensation for the amount of time spent.
>
> Thanks,
>
> Mason
>
> [1] http://lilypond.org/doc/v2.19/Documentation/notation/expressive-marks-as-lines#glissando
>
>
>
> _______________________________________________
> lilypond-user mailing list
> [hidden email]
> https://lists.gnu.org/mailman/listinfo/lilypond-user
>


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

Urs Liska-3
In reply to this post by Mason Hock-2
Hi Mason,

I'm not *fully* clear what you want to achieve, but the attached is
something Piaras Hoban once shared with the list. If this is (close to)
what you need you might search the archives for posts by him.

Good luck
Urs


Am 19.05.2018 um 23:16 schrieb Mason Hock:

> \version "2.19.81"
> \language "english"
>
> % starts an extended glissand
> glon = {
>    \override NoteColumn.glissando-skip = ##t
>    \hide NoteHead
>    \override NoteHead.no-ledgers = ##t
>    \override Stem.thickness = #0.5
>    \override Accidental #'stencil = ##f
> }
> % terminates an extended glissando
> gloff = {
>    \revert NoteColumn.glissando-skip
>    \undo \hide NoteHead
>    \revert Glissando #'stencil
>    \revert NoteHead.no-ledgers
>    \revert Stem.thickness
>    \revert Accidental #'stencil
> }
> % slightly increase slope of glissando so that line is
> % not perfectly horizontal when glissing between notes
> % on same staff line/space
> glup = { \once\override Glissando.extra-dy = #0.5 }
> gldown = { \once\override Glissando.extra-dy = #-0.5 }
>
> \relative c' {
>    \glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
>    \gloff a a \gldown a \glissando \glon a a a \gloff af4 |
>    \gldown af2 \glissando \gldown g4( \glissando \glon f |
>    e) \gloff e r2 |
> }

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

pitched-glissando.png (42K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

Mason Hock-2
On 05/20, Urs Liska wrote:
> Hi Mason,
>
> I'm not *fully* clear what you want to achieve, but the attached is
> something Piaras Hoban once shared with the list.

Thanks for your response, Urs. This looks very close to what I need. If I can modify the solution so that the glissando terminates on an ordinary note (as opposed to a grace note) then it will be perfect.

> If this is (close to) what
> you need you might search the archives for posts by him.

In the archives I have found a post[1] by Piaras linking to a pdf of various effects, including this one, but it does not include the code used to acheive these effects. I also found a post[2] of yours in which you demonstrate the syntax as

    \stemmedGlissando #'(15 . #f) c'4

which looks great, and state that Piaras wrote this function when you asked for such a function on the list. However, I was unable to find the thread in which he provided you with this function. Do you still have the code?

Piaras, I have cc'd you in case you can help out. I'll be very grateful if either of you can provide the code for stemmedGlissando.

Thanks,

Mason

[1] https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00313.html 
[2] https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00252.html

> Good luck
> Urs
>
>
> Am 19.05.2018 um 23:16 schrieb Mason Hock:
> > \version "2.19.81"
> > \language "english"
> >
> > % starts an extended glissand
> > glon = {
> >    \override NoteColumn.glissando-skip = ##t
> >    \hide NoteHead
> >    \override NoteHead.no-ledgers = ##t
> >    \override Stem.thickness = #0.5
> >    \override Accidental #'stencil = ##f
> > }
> > % terminates an extended glissando
> > gloff = {
> >    \revert NoteColumn.glissando-skip
> >    \undo \hide NoteHead
> >    \revert Glissando #'stencil
> >    \revert NoteHead.no-ledgers
> >    \revert Stem.thickness
> >    \revert Accidental #'stencil
> > }
> > % slightly increase slope of glissando so that line is
> > % not perfectly horizontal when glissing between notes
> > % on same staff line/space
> > glup = { \once\override Glissando.extra-dy = #0.5 }
> > gldown = { \once\override Glissando.extra-dy = #-0.5 }
> >
> > \relative c' {
> >    \glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
> >    \gloff a a \gldown a \glissando \glon a a a \gloff af4 |
> >    \gldown af2 \glissando \gldown g4( \glissando \glon f |
> >    e) \gloff e r2 |
> > }
>

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


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

signature.asc (484 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

Urs Liska-3
I will find the code when I'm back home - and Piaras won't be faster ...

Am 20. Mai 2018 18:49:28 MESZ schrieb Mason Hock <[hidden email]>:
On 05/20, Urs Liska wrote:
Hi Mason,

I'm not *fully* clear what you want to achieve, but the attached is
something Piaras Hoban once shared with the list.

Thanks for your response, Urs. This looks very close to what I need. If I can modify the solution so that the glissando terminates on an ordinary note (as opposed to a grace note) then it will be perfect.

If this is (close to) what
you need you might search the archives for posts by him.

In the archives I have found a post[1] by Piaras linking to a pdf of various effects, including this one, but it does not include the code used to acheive these effects. I also found a post[2] of yours in which you demonstrate the syntax as

\stemmedGlissando #'(15 . #f) c'4

which looks great, and state that Piaras wrote this function when you asked for such a function on the list. However, I was unable to find the thread in which he provided you with this function. Do you still have the code?

Piaras, I have cc'd you in case you can help out. I'll be very grateful if either of you can provide the code for stemmedGlissando.

Thanks,

Mason

[1] https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00313.html
[2] https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00252.html

Good luck
Urs


Am 19.05.2018 um 23:16 schrieb Mason Hock:
\version "2.19.81"
\language "english"

% starts an extended glissand
glon = {
\override NoteColumn.glissando-skip = ##t
\hide NoteHead
\override NoteHead.no-ledgers = ##t
\override Stem.thickness = #0.5
\override Accidental #'stencil = ##f
}
% terminates an extended glissando
gloff = {
\revert NoteColumn.glissando-skip
\undo \hide NoteHead
\revert Glissando #'stencil
\revert NoteHead.no-ledgers
\revert Stem.thickness
\revert Accidental #'stencil
}
% slightly increase slope of glissando so that line is
% not perfectly horizontal when glissing between notes
% on same staff line/space
glup = { \once\override Glissando.extra-dy = #0.5 }
gldown = { \once\override Glissando.extra-dy = #-0.5 }

\relative c' {
\glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
\gloff a a \gldown a \glissando \glon a a a \gloff af4 |
\gldown af2 \glissando \gldown g4( \glissando \glon f |
e) \gloff e r2 |
}





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


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

Mason Hock-2
On 05/20, Urs Liska wrote:
> I will find the code when I'm back home - and Piaras won't be faster ...

Great! Thank you, Urs.

Mason

> Am 20. Mai 2018 18:49:28 MESZ schrieb Mason Hock <[hidden email]>:
> >On 05/20, Urs Liska wrote:
> >> Hi Mason,
> >>
> >> I'm not *fully* clear what you want to achieve, but the attached is
> >> something Piaras Hoban once shared with the list.
> >
> >Thanks for your response, Urs. This looks very close to what I need. If
> >I can modify the solution so that the glissando terminates on an
> >ordinary note (as opposed to a grace note) then it will be perfect.
> >
> >> If this is (close to) what
> >> you need you might search the archives for posts by him.
> >
> >In the archives I have found a post[1] by Piaras linking to a pdf of
> >various effects, including this one, but it does not include the code
> >used to acheive these effects. I also found a post[2] of yours in which
> >you demonstrate the syntax as
> >
> >    \stemmedGlissando #'(15 . #f) c'4
> >
> >which looks great, and state that Piaras wrote this function when you
> >asked for such a function on the list. However, I was unable to find
> >the thread in which he provided you with this function. Do you still
> >have the code?
> >
> >Piaras, I have cc'd you in case you can help out. I'll be very grateful
> >if either of you can provide the code for stemmedGlissando.
> >
> >Thanks,
> >
> >Mason
> >
> >[1]
> >https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00313.html 
> >[2]
> >https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00252.html
> >
> >> Good luck
> >> Urs
> >>
> >>
> >> Am 19.05.2018 um 23:16 schrieb Mason Hock:
> >> > \version "2.19.81"
> >> > \language "english"
> >> >
> >> > % starts an extended glissand
> >> > glon = {
> >> >    \override NoteColumn.glissando-skip = ##t
> >> >    \hide NoteHead
> >> >    \override NoteHead.no-ledgers = ##t
> >> >    \override Stem.thickness = #0.5
> >> >    \override Accidental #'stencil = ##f
> >> > }
> >> > % terminates an extended glissando
> >> > gloff = {
> >> >    \revert NoteColumn.glissando-skip
> >> >    \undo \hide NoteHead
> >> >    \revert Glissando #'stencil
> >> >    \revert NoteHead.no-ledgers
> >> >    \revert Stem.thickness
> >> >    \revert Accidental #'stencil
> >> > }
> >> > % slightly increase slope of glissando so that line is
> >> > % not perfectly horizontal when glissing between notes
> >> > % on same staff line/space
> >> > glup = { \once\override Glissando.extra-dy = #0.5 }
> >> > gldown = { \once\override Glissando.extra-dy = #-0.5 }
> >> >
> >> > \relative c' {
> >> >    \glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g
> >a } |
> >> >    \gloff a a \gldown a \glissando \glon a a a \gloff af4 |
> >> >    \gldown af2 \glissando \gldown g4( \glissando \glon f |
> >> >    e) \gloff e r2 |
> >> > }
> >>
> >
> >
> >> _______________________________________________
> >> lilypond-user mailing list
> >> [hidden email]
> >> https://lists.gnu.org/mailman/listinfo/lilypond-user

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


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

signature.asc (484 bytes) Download Attachment