lilypond-devel
[Top][All Lists]
Advanced

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

Re: thoughts on changing \magnifyMusic, please comment


From: Mark Polesky
Subject: Re: thoughts on changing \magnifyMusic, please comment
Date: Sat, 2 Aug 2014 00:05:43 -0700

Janek Warchoł wrote:
> So, we can say that \magnifyStaff sets staff "size" to an
> absolute value - defined as the fraction of the default
> size - and not "relative" to the previous size.

Not exactly.  A magnifyStaff value is only relative to the
previous staff size the first time it's used in a given
staff.  The value of "1" refers to the settings that are in
effect when magnifyStaff is first called.  After that, then
yes, I suppose it's "absolute".  But it's not precise to say
that it scales the "default" values, since it scales the
user's settings.

>> Subsequent calls to \magnifyStaff will first revert the
>> most recent layer of temporary overrides, but only if
>> the magnification value is different from last time.
>
> - do i understand correctly that this means that
> \magnifyStaff is aware of the previous magnification value
> used?

Yes.  I've added a new Staff context property
`magnifyStaffValue' to store that.

> If so, would it be possible to make a "relative" version
> of \magnifyStaff, similarly to how we have relative and
> absolute markup commands (\large and \larger)?  I think
> this could be useful.

Hmm, sometimes I wonder if we're not wandering into levels
of esoterica here.  At a minimum, we should provide the user
an easy way to do these two things:
  1) ossia staves
  2) small staves for non-piano instruments
     in chamber music scores with piano

This is now available; just throw magnifyStaff in a \with
block and you're done.  Then, to my great surprise, someone
requested the ability to change staff size mid-stream in a
Staff context:
  http://lists.gnu.org/archive/html/lilypond-user/2014-06/msg00400.html

So I made sure that magnifyStaff could do that:
  ...
  \magnifyStaff 0.75
  ...
  \magnifyStaff 1    % revert back to initial size
  ...

Now with requests for absolute and relative versions, as
well as this:
  \temporary \magnifyStaff 1.3
  ...
  \undo \magnifyStaff 1.3

...I'm starting to wonder how much of this is really
necessary.  Can anyone provide an actual use case to justify
accommodating either of these requests?

Also, to be honest, I don't really like the idea of the
\larger command, since it feels so arbitrary.  I could do:
   \largerStaff
   \smallerStaff

but I'm not wild about that idea.  I suppose I could also
figure out a way to do:
   \magnifyStaffAbsolute
   \magnifyStaffRelative

but that still seems silly to me.  One thought I had was
putting the burden of reverting on the user, when wanting to
change from one non-default size to another, something like
this:
   ...                % size 1
   \magnifyStaff 0.75 % size 0.75
   ...
   \resetStaffSize    % size 1
   \magnifyStaff 2    % size 2
   ...

Then if one really wanted a "relative" magnifyStaff, they
could do:
   ...                % size 1
   \magnifyStaff 0.75 % size 0.75
   ...
   \magnifyStaff 2    % size 1.5
   ...

But do you really think this is what users are going to
want?  To me the extra reset command seems needlessly
cumbersome, and the "relative" magnification seems so
non-intuitive, I find it hard to believe that anyone needs a
relative function here, so I just built the reset into the
function itself.  And besides, isn't this already so
esoteric (multiple mid-stream staff size changes?), what
tiny minority are we catering to by even worrying about it?

Sorry if I'm ranting; my questions are sincere, and I'm
happy to take further discussion on the matter.  I think I'm
leaning towards:
  1) keeping magnifyStaff as it is
  2) making magnifyMusic syntax like magnifyStaff
  3) changing magnifyMusic to magnifyVoice

> In general, your work on setting notation size looks
> very nice.  I've been missing such functionality for a
> long time :)

Well, validation is always nice.  :)

Thanks!
Mark


reply via email to

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