Han-Wen Nienhuys writes:

> >      "beamAuto"
> >      "beamAutoBegin"
> >      "beamAutoBegin" + type_str
> >      "beamAutoEnd"
> >      "beamAutoEnd" + type_str
> 
> Jan?

These properties instruct the auto-beam engraver when to end or begin
a beam.  Note that almost always beams should begin whenever possible, 
the beam endings are more significant.

When a beam should end (or begin) is determined by the time-signature,
and the smallest duration in the beam.  To avoid listing the matrix of
all time-signatures and all durations, some ellipses are allowed.

>From a comment in the code:

    Determine end moment for auto beaming (and begin, mostly 0==anywhere) 
    In order of increasing priority:

    i.   every beat <den>
    ii.  time<num>_<den>beamAutoEnd
    iii. time<num>_<den>beamAutoEnd<type>
    iv.  beamAutoEnd
    v.   beamAutoEnd<type>


    Rationale:

    [to be defined in config file]
    i.   easy catch-all rule
    ii.  exceptions for time signature
    iii. exceptions for time signature, for specific duration type

    [user override]
    iv.  generic override
    v.   override for specific duration type

    The user overrides should be required for common cases.


In the file ly/auto-beam-settings.ly, all necessary i-iii settings should
be listed, here's a new version with more comments, (hw, please include).


% auto-beam-settings.ly
% setup for auto-beam engraver
%
% specify generic beam end times

% format:
%
%     [time-signature]'beamAutoEnd'[duration]
%
% where
%
%     time-signature = 'time'[numerator]'_'denominator; eg: 3_4
%     duration = [numerator]'_'denominator; eg: 3_8, _16
%

% in 3/2 time:
%   end beams each 1/2 note
%   end beams with 16th notes each 1/4 note
%   end beams with 32th notes each 1/8 note
time3_2beamAutoEnd = "1/2";
time3_2beamAutoEnd_16 = "1/4";
time3_2beamAutoEnd_32 = "1/8";

time3_4beamAutoBegin = "1/4";
time3_4beamAutoEnd_8 = "3/4";
time3_4beamAutoBegin_32 = "1/8";
time3_4beamAutoEnd_32 = "1/8";

time3_8beamAutoBegin = "1/8";
time3_8beamAutoEnd = "3/8";

% in common time:
%   end beams each 1/2 note
%   end beams with 32th notes each 1/8 note
%   end beams with 1/8 triplets each 1/4 note

time4_4beamAutoEnd_8 = "1/2";
time4_4beamAutoEnd_12 = "1/4";
time4_4beamAutoEnd_32 = "1/8";

time4_8beamAutoEnd_8 = "1/4";
time4_8beamAutoEnd_16 = "1/4";
time4_8beamAutoEnd_32 = "1/8";

time4_16beamAutoEnd = "1/8";

time6_8beamAutoEnd_8 = "3/8";
time6_8beamAutoEnd_16 = "3/8";
time6_8beamAutoEnd_32 = "1/8";

time9_8beamAutoEnd_8 = "3/8";
time9_8beamAutoEnd_16 = "3/8";
time6_8beamAutoEnd_32 = "1/8";
----------

Users may override in most cases, simply by issuing

    % from here on consider ending beam every 1/4 note
    \property Voice.beamAutoEnd = "1/4"

    % no autobeaming
    \property Voice.beamAuto = "0"  

or, more globally, by doing:

 \paper{
        \translator{
            \VoiceContext
            % consider ending beam at every 1/2 note
            beamAutoEnd = "1/2";
        }
    }

see also input/test/auto-beam-override.ly


Jan.

Jan Nieuwenhuizen <[EMAIL PROTECTED]> | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien/      | http://www.lilypond.org/

Reply via email to