lilypond-user
[Top][All Lists]
Advanced

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

Re: Feature request: attach notation elements to barlines


From: Trevor Bača
Subject: Re: Feature request: attach notation elements to barlines
Date: Thu, 17 Jan 2008 17:50:46 -0600

On Jan 15, 2008 8:44 PM, Kieren MacMillan <address@hidden> wrote:
Hi Trevor,

> Can we take this a bit farther for a moment?

I'd love to!  =)

> Thoughts?

Perhaps if we had spanner-bounds control, and -- more importantly --
could specify X-extent values in *DURATIONS* (instead of staff-
lines), we could say

    \once \override Hairpin #'bounds = #'((3 . 8) (1 . 4))

to force the hairpin to start a distance of three-eighths after it
"should have started", and end one quarter note's distance before it
"should have ended"?

> I would absolutely love
> a way to "outline" the full duration of an arbitrat note with a
> spanner / hairpin *with text elements in both the left and right
> edges* and then follow that *on the next note* with another text
> element ... or another such doubly-marked, full-duration spanner.

If Hairpin were a real Spanner, wouldn't we have the ability to set
bound-text on the left and right (like OttavaBracket, etc.)?

> Would anyone else ever find this sort of thing useful?

Definitely.


Hi Kieren, hi everybody,

The array of posts here have been pretty interesting. Reading through everything the last couple of nights, I'm realizing that we've got a couple of related topics in the thread. Some unpacking:


* Jamie started the thread and was looking for four separate affordances ...

   |\fermata       - place a fermata over a barline
   |\!             - end a (de)crescendo at a barline
   |\sustainUp     - end pedalling at a barline
   |\stopTextSpan  - end a text spanner over a barline


Mats and Graham addressed Jamie's points this way:

* Mats pointed out that fermatas can position over (or under) barlines so long as you set them as marks ... and abide by the restriction of precisely which staves it is that rehearsal marks govern.

* Graham pointed out that there's a context setting hairpinToBarline documented in Dynamics (at 1.3.1).

* Mats pointed out that spanners now implement a 'to-barline property and provided an example for piano pedal marks but added that he wasn't able to get the effecting working for text spanners (thus addressing Jamie's third and fourth points, with a yes and no, respectively).



Kieren jumped in with the possibility of what we might baptize "durated" spanners of the form \>4 where, for example, a decrescendo carries the duration of a one quarter. Kieren then generalized this idea of the "durated" spanner to a two-part interface implementing duration-based X-offset values, viz:

    \once \override Hairpin #'bounds = #'((3 . 8) (1 . 4))



Midway through, I hijacked part of the thread with some talk about what we might call "capped" spanners. But I forgot to put together a pic of what I was talking about. So the \p \< \mf crescendo in the png attached to this thread gives an example. We've got a hairpin that appears to attach to a *single* note, and that is capped with both a start value (\p) and a stop value (\mf):

%%% BEGIN CAPPED HAIRPIN EXAMPLE %%%

\version "2.11.34"
sffp = #(make-dynamic-script "sffp")
\layout { ragged-right = ##t }

\new Score \with {
   \override NonMusicalPaperColumn #'line-break-system-details =
   #'((alignment-offsets . (0 -14)))
   \override TupletBracket #'staff-padding = #0.8
} <<
   \set Score.proportionalNotationDuration = #(ly:make-moment 1 24)
   \new Staff {
      \set tupletFullLength = ##t
      \times 2/3 { c'8 c'8 c'8 }
      \times 2/3 { c'8 c'8 c'8 }
      \times 2/3 { c'8 c'8 c'8 }
      \times 2/3 { c'8 c'8 c'8 }
      \time 1/4
      c'4
   }
   \new Staff {
         \set tupletFullLength = ##t
         \times 4/5 {
            c'4 \p \>
            c'1 * 19/20 \pp \<
            s1 * 1/20 \mf
         }
         \time 1/4
         c'4 \sffp
   }
>>

%%% END "CAPPED" HAIRPIN %%%

 
Spanners (or hairpins) that attach to a single note don't really exist in Lily, so that's why there's the hackish stuff with the multipliers in the bottom staff.

I would *love* to have the ability to attach spanners / hairpins to a single note like this.  Especially spanners capped at both ends with some markup values like \p and \mf. And in the case that we do implement such a thing, what I'm really looking for is control of the *typographic* distance from the right end-cap of the spanner (the \mf, above) to the next graphic element on the staff -- be it a note, barline, time signature, key signature, or whatever.

(And this will be the trick: what type of "bounds control" am I really looking for here? My intuition tells me a behavior like the tupletFullLength tuplet brackets included in the example ... which I like very much.)



So, to attempt a summary, we've got these ideas:

1. Four initial questions about attaching notational elements to barlines (Jamie)
2. The introduction what we might called 'durated' spanners (Kieren)
3. And the introduction of 'capped' spanners attaching to a single note (me)

At this point, I *think* (though I'm not certain) that Jamie can accomplish three of the four tasks that opened the thread. (Jamie, is this now the case?) And I think that Kieren and I have both layed out a *lot* of dynamics in our recent scores ;-) probably using the "dedicated skip voice" idea described in 5.4.7 ...

Comparing Kieren's "durated" spanners with my "capped" spanners, I think the two ideas address different concerns and also go nicely together. My "capped" spanners try to create a notation that is admittedly not standard but also something of a generalization of the layout of hairpins (and other spanners). Kieren's "durated" spanners go to the heart of the problem of where spanning elements actually *stop* and *start*, seeking a way to free the starts and stops of spanners from the notes and rests to which they attach.


So, putting all this together, I think that the durated spanners definitely have something going for them -- it's quite clear how the proposed input syntax like \>4 and even \override Hairpin #'bounds = #'((3 . 8) (1 . 4)) should behave. So the requirements of the implementation will be easy to understand.

(However, I'd be willing to bet that the *implementation* challenge will be that the parser will identify such things as durational elements *overlapping* the durations of notes and rests and so on, which will strictly violate the structure of a musical voice. Just a guess.)

And I'm also realizing that what I really am asking for with my capped spanners is preicsely the more exacting "bounds control" Kieren's speaking of ... which makes me realize that I'll really have to sit down and work out a suggested set of interface controls since what I'm interested in is more the control of typographic distances than of durational distances.


* * *

So there's my thinking about the thread up to this point. Might help capture a point in the discussion we can come back to if anyone's looking to implement some package of features in the future.




--
Trevor Bača
address@hidden

Attachment: capped-hairpin.png
Description: PNG image


reply via email to

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