lilypond-devel
[Top][All Lists]
Advanced

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

Setting up classical guitar fingerings


From: Luca Fascione
Subject: Setting up classical guitar fingerings
Date: Sat, 12 Feb 2022 19:49:07 +0100

Hello,
sorry for the double-post, I'm unsure whether this should go to -user or
-devel.

I'm looking for some guidance to set up fingering on classical guitar
sheets.

I am attaching a simple piece of music, with two engraving sets (measures
1-5 and 6-10), one "as-is" from lilypond, the other using some trickery
involving one-note chords, purely to show a sample of what the result I'm
after (and it's an approximation), vs what I get at the moment.

Measures 1-5 in the source look like what I am intending to type, but it
has a number of engraving defects I don't understand (you can see the beams
don't  avoid the fingerings, nor they are located correctly wrt the
accidentals, the second beat of measure 5 illustrates this well. I'm not
super in love with measure 10 either, but if I understand the docs
correctly, the issue there is that the 'offset' correction is applied
post-layout, and so naturally it won't back-affect the placement of the
beams.

I have made several other experiments, I'm just not wanting to waste
people's time. But setting Fingering.side-axis = #X seems somewhat
promising, but it seems unable to find any usable Y data about the parents,
and smashes all numbers on the B line, as well as not dealing with
accidentals.

I have an engraving project in front of me, for which I'm more than happy
to put in the time to contribute the code to a proper solution myself, and
I really don't want to make poor use of time from folks busy with other
work, but I feel I'll need some level of guidance as to what to do. For
context I can do C++ and I can manage guile ok (I'm a software engineer for
work, I'm mostly working in the field of computer graphics).

I was looking into this problem several years ago also, and Han-Wen
Nienhuys at the time suggested I should use a positioning callback attached
to the Fingering grobs, but I couldn't find a way to do such a thing (in
particular I can't find what property to use for this). So far I've traced
the Fingering system to be an instance of the Articulations/Scripts system,
but that's as far as I got.

It seems to me what's needed would be to decide where the heads go, then
the accidentals, at this stage deal with the fingering and only then there
would be enough bboxes to reason about the beaming (this is the skyline
concept I think). In reasoning about how Articulations are engraved, it's
possible the order of events for fingering would be different from the
order of events in other articulations (which I think are laid out after
beams are in place, if I am not mistaken), warranting a bigger change, but
I have no idea where that is located/managed.

Many thanks for your time,
Luca

Attachment: fingering-tests.ly
Description: Binary data

Attachment: fingering-tests.pdf
Description: Adobe PDF document


reply via email to

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