Fingering ($) row)¶
STATUS: SPEC. Marker, order and datapack grammar are defined in
neumaRk_datapack.md§2.1, §3 and §3.bis.1. History inneumaRk_changelog.md, What's new in 0.6.
1. Definition¶
The $) row (Fingering) carries, position by position, the fingering
indications for the events of the notes row it is bound to:
- the pressing finger (left hand on string instruments, the hand's finger on the piano), including finger substitution;
- the string on which the note is played;
- the plucking finger (right hand, guitar and the like);
- the fixed position: a bracket holding the hand in one position over a stretch of notes.
It is a parallel layer, like A): it does not alter rhythm, durations or
flow. It is purely graphical: no effect on the musical content or on
execution.
$) | . 2A[ 3 1 3 4] 1B["C II" 3] |
N) | a8 b c d e f g a |
2. Structural position and binding¶
- Marker
$): 2 characters wide like the other line markers, it is the only one whose first character is not an uppercase letter. - Always explicit. The implicit line-type deduction
(
neumaRk_datapack.md§3.bis) never produces a fingering row: without the$)marker the line is classified like any other line without a marker. - Binding. A
$)fingers the first notes line below it (N),N+orN2); the group'sA)may sit in between. It never binds to the chord rhythm of aC). - Canonical order of the lines:
M) C) $) A) N) D) L) F)
Fingering sits above articulation: in the rendering the articulation is
closest to the notehead, the fingering further out.
- Voice 2. The N2 group has its own $), independent of voice 1's, like
its own A) (neumaRk_voices.md §3.1).
- Orphan $). A $) with no notes line below it (another $) comes
first, or the datapack ends) fingers nothing: it is ignored and the parser
emits W174 (W174.fingering_orphan).
$) | 1 2 3 4 |
A) | > . . ! |
N) | c4 d e f | // the $) skips the A) and fingers the N)
3. Count-based alignment¶
The correspondence with the events of the notes row is positional by
count, left to right, with the same rules as A)
(neumaRk_articulations.md §4):
- one token per event;
- rests, the arrival note of a tie
^and the slash/count (a run of slashes is a single slot); - grace notes do not count: they belong to their main note;
- the
N)prolongation.(neumaRk_notes_and_durations.md§4) counts as a slot; but a non-empty token at that position would merge into the previous note, so it is ignored with W181 (W181.fingering_prolongation): write the fingering on the note itself; - the token
.alone = no fingering on that note; - if the tokens are fewer than the events, the remaining notes have no fingering;
- if the tokens are more than the events, the extra ones are ignored and
the parser emits W131 (
W131.excess_fingering); - the
|of the row are real barlines, as inA): they separate the measures, and a fixed position[ … | … ]crosses them (§7).
A fingering on a rest is ignored with W181 (W181.fingering_rest).
4. The token¶
4.1 The three parts¶
A token is made of up to three parts, always in this order:
| # | Part | Alphabet | Examples |
|---|---|---|---|
| 1 | pressing finger | one digit 0–5, or the substitution n-m |
3, 0, 4-1, 1-2 |
| 2 | string | name A–G optionally followed by b or #, or number 1–9 |
A, Bb, F#, 3 |
| 3 | plucking finger | one of p i m a c (c = little finger) |
p, m |
The three parts are written together, without spaces. Examples:
| Token | Meaning |
|---|---|
1 |
finger 1 |
0A |
open string (finger 0) on the A string |
2Bb |
finger 2 on the B♭ string |
4-5 |
substitution: finger 4, then finger 5 on the same note |
1-2G |
substitution 1→2 on the G string |
13 |
finger 1 on string 3 |
3m |
finger 3, plucked with the middle finger |
0Ap |
open A string, plucked with the thumb |
The finger is always a single digit (or an n-m pair): in 13 the first
digit is the finger, the second the string.
4.2 The dot: skipped note and empty part¶
The . character has two roles, told apart by its position:
.alone, as a whole token, skips the note: no fingering at that position (as inA)andD))..attached to other parts stands for an empty part:
| Token | Meaning |
|---|---|
.2 |
string 2, no finger (2 alone would be finger 2) |
.G |
the G string only |
..m |
the plucking finger only |
Since the three alphabets are disjoint, the attached . is required only
for a numeric string without finger (.3). Elsewhere it is optional:
G = .G, p = ..p. The reference form is the shortest one.
4.3 Malformed token¶
A token that does not follow the grammar of §4.1 (unknown part, parts out of order) is ignored as a whole and the parser emits W180: the note has no fingering.
5. Chords <…>¶
Above a chord, the <…> group gives one entry per pitch, in the
source order of the chord in the N) row. Each entry is a §4.1 token; a
. inside the group skips a pitch.
$) | <1G 3B 0E> <1 . 4> |
N) | <c e g>2 <c e g> | // c: finger 1 string G, e: 3 on B, g: open E string
// then c: 1, e: nothing, g: 4
- Fewer entries than pitches: the remaining pitches have no fingering.
- More entries than pitches: the extra ones are ignored with W181
(
W181.fingering_chord_excess). - A
<…>above a single note uses only the first entry, with W181 (W181.fingering_not_chord). - A token without
<…>above a chord fingers the chord's first pitch.
6. Finger placement: prefixes ' - +¶
A token whose first character is ', - or + sets where the numbers of
the pressing finger are written:
| Prefix | Placement |
|---|---|
' |
above the noteheads |
- |
left of the noteheads |
+ |
right of the noteheads |
$) | -<1 3 5> '3 +2 4 |
N) | <c e g>4 d e f | // chord on the left, d above, e and f on the right
- The choice applies from that note on, for that staff and voice, across datapacks and systems, until the next prefix.
- Before any prefix: above for single notes, left for chords.
- A prefix may stand on a token without finger (
'.): it sets the placement from that note, without fingering it. - The prefixes concern only the pressing finger: the string is always below, the plucking finger always above (§8).
7. Fixed position [ … ]¶
A fixed position is a span marking a stretch played holding the hand in
one position. It follows the rules of the A) analysis bracket { }
(neumaRk_articulations.md §10.3):
[opens on its token's note,]closes on its token's note.[and]attach before or after the rest of the token:2A[,[1,4].- In the same token,
][closes and reopens (chained positions):
$) | [1 ][2 ] |
N) | c4 d e f | // one position from c to d, the next from d to e
- Optional label, right after
[:1B["C II" 3]. It is a text-markup container like the analysis-bracket label (neumaRk_text_markup.md§2.2). Without a label, the bracket is drawn with no text. - It crosses barlines and systems: the span lives on the logical staff
(
neumaRk_datapack.md§4.5), per voice. - One position at a time: a second
[while one is open is ignored together with the]that closes it (W144,W144.position_open_overlap). - Orphan
]→ W144 (W144.position_close_unmatched), ignored. [and]on the same note ([]) → degenerate, W144 (W144.position_degenerate), ignored.- Position never closed → W144 (
W144.position_unclosed_eol) and implicit close on the last note of the system where it opens. - Rendering: square bracket above the staff, with the arms pointing down towards the notes, like the analysis bracket; the label left-aligned above the opening.
$) | 1 [ |
N) | c2 d |
$) | 2 ] |
N) | c2 d | // fixed position from the d of the first system to the d of the second
8. Rendering¶
| Part | Placement | Style |
|---|---|---|
| pressing finger | above the note (default), or left/right by prefix (§6) | number; the substitution 4-5 as a single text |
| string | below the note | circled name or number |
| plucking finger | above the note | italic |
| fixed position | above the staff | square bracket with arms down |
Above a chord, the fingers above the noteheads stack in the same vertical order as the notes. With the stem up, the stack starts above the stem tip.
How a renderer draws these signs (glyphs, sizes, distances) is not normative; their meaning and placement (above, below, beside) are.
9. Diagnostics¶
| Code | Case | Effect |
|---|---|---|
W131.excess_fingering |
tokens in excess of the measure's events | extra ignored |
W144.position_open_overlap |
second [ while a position is open |
ignored with its ] |
W144.position_close_unmatched |
] without opening |
ignored |
W144.position_degenerate |
[ and ] on the same note |
ignored |
W144.position_unclosed_eol |
position never closed | closed on the last note of the system where it opens |
W174.fingering_orphan |
$) with no notes line below |
row ignored |
W180 |
malformed token | token ignored |
W181.fingering_rest |
fingering on a rest | ignored |
W181.fingering_prolongation |
non-empty token on a prolongation . |
ignored |
W181.fingering_not_chord |
<…> on a single note |
first entry used |
W181.fingering_chord_excess |
<…> with more entries than pitches |
extra ignored |
All cases are non-blocking warnings.
10. Examples¶
$) | 0A 2Bb 4-5 1-2G | 13 .3 ..p 0Ai | <1G 3B 0E> . |
A) | > |
N) | a8 b c d r2 | e4 f g a | <c e g>2 r |
- measure 1:
aopen A string (with the accent of theA)),bfinger 2 on B♭,csubstitution 4→5,dsubstitution 1→2 on the G string; the rest has no token; - measure 2:
efinger 1 on string 3,fstring 3 only,gplucking thumb only,aopen A string plucked with the index finger; - measure 3: chord fingered pitch by pitch; the
.skips the rest.
$) | . 2A[ 3 1 3 4] 1B["C II" 3] |
N) | a8 b c d e f g a |
Fixed position without label from b to f, then position "C II" from g
to a.