lilypond-devel
[Top][All Lists]
Advanced

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

heuristics for picking neutral stem directions


From: Russ Ross
Subject: heuristics for picking neutral stem directions
Date: Mon, 6 Sep 2004 21:43:40 +0100

I've been setting a large choral/orchestral work and noticed one way
in which the default output from LilyPond is suboptimal.  I'd like to
request a feature to address this, and I think it fits nicely with the
philosophy of output being correct by default.

When the stem direction of a note or group of notes is neutral (a
single note on the middle line or a group like a8[ b c] in the treble
clef) the current policy is to always set the direction arbitrarily,
either by system default or by user choice.  A better default (which
could be overriden on demand) would be to have some affinity with the
notes around in.  In particular, a few rules like:

* If the note (or group of notes) is surrounded on both sides by notes
with stems in one direction, set the direction of that note or group
of notes to match.
* If the note is adjacent to a rest on one side and notes on the other
side, emulate the stem direction of the adjacent notes.
* When the directions of adjacent note stems are different, look for
natural boundaries like bar lines, major beats, etc., and favor
matching the stem direction of notes with the least significant
boundary, i.e., favor changing the stem direction over a measure break
or major beat to provide a visual distinction over the break and
greater affinity with the other nearby notes.

would go a long way to improving the default output.  I'm not sure
exactly what the rules should be, but even a few simples ones would do
a lot of good.  I've come across many cases where the default LilyPond
output differs in this respect from the classic score I am using as my
source.  I'm not familiar with the code base, but hopefully this would
be a relatively low impact feature as the decisions are all fairly
local.

Thanks,

Russ




reply via email to

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