lilypond-devel
[Top][All Lists]
Advanced

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

[Re: Proper handling of accidentals in unmetered music?]


From: Ruud van Silfhout
Subject: [Re: Proper handling of accidentals in unmetered music?]
Date: Fri, 02 Sep 2005 22:18:59 +0200
User-agent: Mozilla Thunderbird 1.0.5 (Windows/20050711)

Oops, forgot to CC it to the devel-list.
And I just saw 'mixed-meter'discussion on the user list concerning the same issue.

Ruud
-------- Original Message --------
Subject:        Re: Proper handling of accidentals in unmetered music?
Date:   Fri, 02 Sep 2005 22:11:11 +0200
From:   Ruud van Silfhout <address@hidden>
To:     Mats Bengtsson <address@hidden>
References:     <address@hidden>



Mats Bengtsson wrote:

Related to this mornings question by Mehmet:

What is the best way to handle music with irregular meter where you
don't want to explicitly specify the time signature for each change
and still make the accidentals behave as normal within measures and
between measures?

Is it possible to add something more than \bar "|" at each
bar line in the following example to manually make it be
treated as a new bar also when it comes to accidental handling?
Obvious things like \cadenzaOff \bar "|" \cadenzaOn don't work.

\version "2.6.0"

% Solution 1:
\new Staff \relative c'{
% Uncomment to get rid of the initial time signature:
%\override Score.TimeSignature #'print-function = ##f
\cadenzaOn
c4 c cis cis \bar "|"
cis cis d \bar "|"  % Problem, no new accidental on cis!
}


I almost regret the solution I proposed to Mehmet already now:

% Solution 2: Gives new accidental on every beat
\new Staff \relative c'{
% Uncomment to get rid of the initial time signature:
%\override Score.TimeSignature #'print-function = ##f

\set Timing.measureLength = #(ly:make-moment 1 4)
\set Timing.automaticBars = ##f

c4 c cis cis \bar "|"
cis cis d \bar "|"
}



One solution which in a way is the cleanest is to
actually specify all time signatures in the input and
just turn them off in the output (which makes it easy
to turn them on again if the musicians complain too loudly
about the missing time signatures). One obvious disadvantage
is that the input is somewhat more tedious:

% Solution 3:
\new Staff \relative c'{
\override Score.TimeSignature #'print-function = ##f
\time 4/4
c4 c cis cis
\time 3/4
cis cis d
}


Any other ideas?

   /Mats





This could be mixed nicely with another feature that has been requested once and awhile: composite time signatures (or compound timesignatures as I also have seen). This is used in modern church music. This could be specified with something like '\timeset { 4/4 3/4 }'. This triggers the follwoing behavior:
1. At the point of definition the time signature are printed.
2. By default the actual time signature is set to the first signature in the set. 3. When a timesignature changes within the set i.e. from 3/4 to 4/4 and back, no timesignature is printed by default. 4. When a timesignature changes from something in the time signature set to something outside it, then the timesignature is printed by default. 5. When a timesignature is changed from something outside the set to someting in it, then the time signature is not printed by default. 6. An empty set reverts the behaviour to the normal lilypond behaviour with the currently active timesignature, which is then printed by default.
7. All items mentioned before as 'by default' are tweakable properties.

If the extra '\time x/y' statements are too much to type one could also think of using the "|" to simplify notation, although this leads to overloaded usage of the "|" symbol.

% Proposal  4:
\new Staff \relative c'{
\timeset { 4/4 3/4 } % initially both timesignatures aree shown in the order given c4 c cis cis \time 3/4 % by default: not shown as it is in the timeset
cis cis d
\time 4/4 % by default not shown as it is in the timeset
cis cis c c
\time 2/4 % by default shown as it is not in the set
c c
\time 4/4 % by default shown as it is in the set (and the previous one wasn't)
c c cis cis
\timeset {} % empty the set and coninue as lily would do normally.
}

Hope this helps....  ;-)

Ruud








reply via email to

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