Articolazioni (riga A))¶
STATO: SPEC. Binding e ordine non sono ridefiniti qui: vedi
neumaRk_datapack.md §2.1e §3. Cronologia inneumaRk_changelog.md, Novità della 0.6.
1. Definizione¶
La riga A) (Articulations) porta le articolazioni e gli ornamenti da
applicare, posizione per posizione, agli eventi della riga musicale a cui è
legata. È un layer parallelo: non altera ritmo, durate o flusso, solo gli
attributi notazionali degli eventi.
2. Posizione strutturale e binding¶
Marcatore, opzionalità e ordine logico sono definiti in neumaRk_datapack.md
§2.1 (tabella marcatori) e §3 (ordine implicito: A) è opzionale e precede
la riga N) del proprio gruppo di note). In sintesi operativa:
A)si riferisce alla riga immediatamente sotto ("modello §4.A.5"): i suoi token attendono (pending) e si drenano su quella riga, per l'intero rigo.- Quale riga:
- se subito sotto c'è una
C)(accordi), l'interaA)annota quellaC)— solo per lo stave 0 (l'armonia vive inMeasureShared). Vedi §2.1: i marchi vanno sulle teste del ritmo accordale (se laC)ha ritmo), le annotazioni testo ("…",["…"],("…")) sopra gli accordi stampati; - se subito sotto c'è una
N), annota quellaN), stesso stave. - In multi-stave ogni rigo ha il proprio bucket di pending; la voce 2 (
N2) ha un bucketA)indipendente (vedineumaRk_voices.md §3.1). - Una
A)che non ha sotto di sé la sua riga — scritta sotto l'ultimaN)del datapack, o seguita da un'altraA)— non articola niente: è ignorata con W174 (neumaRk_datapack.md§4.1). Fa eccezione il datapack senza righe di note, dove l'A)si applica alle pause d'ufficio.
2.1 A) sopra gli accordi (annotazioni testo + marchi)¶
Quando la riga target è una C), la A) ha due canali distinti, entrambi
allineati per conteggio (§4):
- Marchi (staccato
., accento>, ecc.) → ancorati alle teste del ritmo accordale (gli slot ritmici), se laC)porta un ritmo esplicito. Resi come segni sopra la testa. È il comportamento storico del ritmo accordale. - Annotazioni testo (label, anche con markup, con la cornice di §13.1:
"…",["…"]/[…],("…")) → ancorate ai token accordo STAMPATI, un token per colonna (i membri di una lista- ritmo compatta come il 2°4diA(4,4), e i ghost, non contano: sono esattamente le colonne che il round-trip riemette). La label è resa sopra la sigla; se un token stampato non ha glifo di sigla ma ha una testa-ritmo (il ribattuto!(4)) la label si ancora alla testa, in basso, sopra la nota.
Idioma per-slot. Per mettere un'annotazione (o un marchio) sulla 2ª nota di un ritmo, si usa la forma esplicita con token stampati, non la lista compatta:
A) | "uno" "due" "tre" |
C) | A(4) !(4) D | // "due" sopra la testa ribattuta (bassa)
Con la lista compatta A(4,4) invece c'è una sola colonna per l'intero
gruppo, quindi una sola annotazione testo vi si può ancorare:
A) | "uno" "due" "tre" |
C) | A(4,4) D | // "uno"→A, "due"→D, "tre" ESCE dal flusso (W131)
Principio "quel che vedi round-trippa". Le annotazioni testo si allineano alle sole colonne stampate proprio perché la serializzazione (
.nrk) le riemette in quelle stesse posizioni: nessuna modifica a sorpresa dopo un round-trip. Un token testo oltre l'ultima colonna stampata esce dal flusso ed emette W131 (§4).
Estensione a linea tratteggiata. Un'annotazione con un - incollato
("vamp"-) apre una linea tratteggiata di prolungamento che corre alla quota
dell'annotazione, sopra la banda accordi, verso destra. Come per le note
(§13.3) e per la label inline sulla sigla (CASO 2, neumaRk_chords.md §8.5), ogni
colonna coperta dalla linea vuole il suo -: un - standalone su una colonna-
accordo successiva la marca come "sotto la linea" — la colonna è consumata
(nessuna etichetta, nessun W131: è consumo, non eccesso; come lo slash / = 1
slot). La linea scavalca le colonne di continuazione e si arresta alla
prima colonna-terminatore:
- la prossima sigla stampata non di continuazione,
- una misura
NC(No Chord) oR(rest armonico) — unNCfrazionario (neumaRk_chords.md§1.2.1) ricade invece nella regola precedente, essendo una sigla stampata, - oppure la fine del rigo/brano.
All'estremo c'è sempre un gancetto in giù (verso il rigo); la linea è centrata verticalmente sul testo. È il gemello sopra-la-banda dell'estensione inline di CASO 2 — che invece flippa la label a destra della sigla: qui la label resta sopra, centrata.
A) | "vamp"- - - |
C) | C-7 F7 G7 C | // linea da "vamp" (su C-7) sopra F7/G7, gancetto su C
A) | "vamp"- | | |
C) | C-7 | NC | Bb6 | // la linea si ferma all'inizio del glifo N.C. (mis. 2)
Ancoraggio a barline. Come per le note (§13.4–13.5), l'estensione chord-ancorata può ancorarsi ai bordi della misura:
- begin-bar
-"vamp"come primo token dellaA)→ la label si ancora al bordo sinistro della misura (non a una sigla) e apre la linea verso destra. - terminatore
-|come ultimo token (un-incollato al bordo) → chiude la linea aperta sull'end-bar della misura, col gancino, senza testo (gemello di §13.5;-|incollato vs- |spaziato = continuazione).
A) | | -"fill"- | | // begin-bar: label al bordo sx, linea → F7
C) | C-7 | | F7 |
A) | | -"fill"- | - -| | // terminatore: chiude sull'end-bar della mis. 3
C) | C-7 | | G7 | |
Nota. Un
"vamp"-come ultimo token resta inline sulla sigla di quella colonna (apertura dell'estensione dalla sigla, come sopra), non un ancoraggio end-bar: per gli accordi l'end-bar testuale che chiude una linea aperta non esiste (si usa il terminatore-|per chiudere sul bordo).
Staffa d'analisi { } (sopra gli accordi). Come per le note (§10.3), i
bracket { } sulla riga A) disegnano una staffa d'analisi quadra sopra la
campata di accordi: barra orizzontale con gambe in giù verso la banda e
una label opzionale "…" sopra a sinistra. { (con label facoltativa) apre
la staffa sulla sigla di quella colonna, } la chiude; le colonne intermedie
usano . per tenere la posizione (allineamento per-token, §4).
A) {"II-V-I" . } .
C) C-7 F7 G7 C // staffa "II-V-I" su C-7 F7 G7; C resta fuori
Su più righe. Un ; in un'annotazione o nella label della staffa va a capo
(neumaRk_text_markup.md §3bis): la pila cresce verso l'alto e l'ultima riga
resta dove sarebbe la riga singola. Un'annotazione sopra un comment-label, o
sopra un'altra annotazione della stessa sigla, ne scavalca l'intera pila; la
linea tratteggiata di "…"- parte dall'ultima riga, alla sua quota.
A) "solo;chorus" "vamp;on C"- -
C) C-7"drop;2" F7 G7 C
3. Vocabolario¶
Ogni token è un simbolo (o combinazione) che mappa a un'articolazione o
ornamento. I token sono separati da spazio; più articolazioni sulla stessa
nota si scrivono come token unico senza spazi (es. >!).
| Token | Significato | Tipo |
|---|---|---|
_ |
tenuto | articolazione |
> |
accento | articolazione |
! |
staccato | articolazione |
^ |
marcato | articolazione |
+ |
pizzicato (mano sx) | articolazione |
o |
fermata (sopra) | articolazione |
os |
fermata breve | articolazione |
ol |
fermata lunga | articolazione |
_! |
portato (tenuto+staccato) | combinazione |
>! |
accento staccato | combinazione |
tr |
trillo | ornamento |
m |
mordente | ornamento |
M |
mordente inverso | ornamento |
t |
gruppetto | ornamento |
T |
gruppetto inverso | ornamento |
, |
respiro | articolazione |
V |
cesura (Luftpause) | flusso (estensione §8+) |
h |
armonico | articolazione (estensione §8+) |
v |
arco in su | articolazione (estensione §8+) |
n |
arco in giù | articolazione (estensione §8+) |
. |
placeholder: nessuna articolazione su quella posizione | — |
hper l'armonico (il simbolo°non è ASCII eoè già fermata);v/nper gli archi (nricorda il ⊓). A questi si aggiungono un token per-coppia (glissatogl, §9) e due span (legatura( ), onda~, §10), introdotti dal modello di token decomponibile in §8.Respiro
,vs cesuraV. Il respiro,è una breve presa di fiato nel fraseggio: non ferma il metro. La cesura (Luftpause)Vè più forte — il flusso musicale si ferma, si aggiunge un silenzio alla durata ordinaria, poi si riprende. Resa: una grande V appena dopo la nota, sovrapposta alla cima del rigo. Maiuscola per non collidere conv(arco in su).
Il vocabolario è l'insieme chiuso della tabella sopra (più il placeholder
., i per-coppia/span delle estensioni §8+). Solo questi token sono articolazioni
valide; la classificazione delle righe di articolazione deriva da questo
insieme (vedi §6 e §11). Un token fuori dal vocabolario non è un'articolazione
valida.
I marcatori > e ^ rendono una riga univocamente articulations in fase di
classificazione: nessun'altra riga musicale li usa isolati.
Eccezione —
FINE(direttiva di flusso, non articolazione). Il tokenFINE(tutto maiuscolo) è ammesso sulla rigaA)ma non è un'articolazione: è il segno di flusso fine del brano ancorato alla nota (allineato per conteggio come ogni tokenA)). Usa la rigaA)solo come superficie di ancoraggio. Semantica, resa (stesso glifo delFINEsu barra, centrato sulla nota) e regola di precedenza colFINEsu barra (W167) sono descritte inneumaRk_flow_and_repeats.md§4.2.1.
3.1 Ornamenti cromatici (alterazione dell'ausiliaria)¶
Un ornamento può eseguire un'ausiliaria alterata anziché la diatonica — p.es. in Do maggiore un mordente superiore su DO che fa DO–RE♭–DO invece di DO–RE–DO. L'alterazione si scrive attaccata al token dell'ornamento.
Alfabeto accidentale (attaccato, subito dopo il segno):
| Simbolo | Significato |
|---|---|
# ## |
diesis / doppio diesis |
b bb |
bemolle / doppio bemolle |
N |
bequadro (naturale) — maiuscolo (il n minuscolo è arco-in-giù) |
- |
(solo gruppetto) slot senza alterazione |
Ornamenti a una sola ausiliaria — m (mordente sup.), M (mordente inf.),
tr (trillo): un solo accidentale opzionale; il lato (sopra/sotto) è implicito
nel segno.
| Scrivi | Esegue (in Do magg.) |
|---|---|
mb |
DO–RE♭–DO |
m# |
DO–RE♯–DO |
mN |
DO–RE♮–DO (forza il naturale contro l'armatura) |
M# |
mordente inferiore con ausiliaria ♯ |
tr# |
trillo con ausiliaria ♯ |
Gruppetto — t (turn), T (inverso): due ausiliarie, quindi fino a due
slot in ordine di esecuzione, con - = slot senza alterazione. Un solo
accidentale si applica alla prima ausiliaria eseguita.
tesegue superiore → inferiore ⇒ slot1 = sopra, slot2 = sotto.Tesegue inferiore → superiore ⇒ slot1 = sotto, slot2 = sopra.
| Scrivi | Effetto |
|---|---|
t# |
solo ausiliaria superiore ♯ |
t-# |
solo ausiliaria inferiore ♯ |
t#b |
superiore ♯, inferiore ♭ |
T#b |
inverso: inferiore ♯, superiore ♭ |
tNb |
superiore ♮, inferiore ♭ |
L'accidentale non impedisce la co-locazione con altre articolazioni
(mb> = mordente-sup-♭ + accento). Un accidentale in eccesso o mal posto
(m#b, t#b#) ricade fuori vocabolario → W139 (non bloccante). Reso via i
glifi accidentali standard sopra/sotto il segno; nessun font dedicato.
4. Allineamento count-based¶
La corrispondenza con gli eventi della riga target è strettamente posizionale
per conteggio (come neumaRk_dynamics.md §4.1), left-to-right:
A) | > . ! ^ |
N) | a8 b c d |
// ↑ ↑ ↑
// accento staccato marcato (b: nessuna)
Ordine delle righe. Una
A)lega sempre alla riga note/accordi immediatamente sotto di sé (a differenza diD)/L), che legano alla riga sopra). Va quindi scritta sopra laN)/C)cui si riferisce.
- Il token
.o un token vuoto = nessuna articolazione su quella nota. - Se i token sono meno delle note, le note residue restano senza articolazione (no-op).
- Se i token sono più degli eventi, gli extra sono ignorati (filosofia
auto-fix) e
A)emette W131 (eccesso di token), comeD)(§7). - L'allineamento conta anche i rest (a differenza di
L), che li salta): una posizione sopra un rest è un evento a tutti gli effetti. È ciò che permette a uno span (§10) di coprire un rest (vi si scrive~e lo span prosegue).
5. Esempi¶
A) | > ! |
N) | c4 d e f | // accento su c, staccato su e
A) | >! |
C) | C7 F7 | // accento-staccato sul primo evento di chord-rhythm (stave 0)
6. Il vocabolario: insieme chiuso e fonte unica¶
Questo documento è la fonte unica per le articolazioni. Definisce ogni
token-NRK → significato musicale (es. ! → staccato); il significato è
normativo, mentre il modo in cui un renderer lo disegna non lo è (un altro
renderer può scegliere glifi diversi).
Il vocabolario è un insieme chiuso: i simboli fuori dalla tabella §3 (per
esempio _ o lettere isolate) non sono articolazioni valide. Partecipa
anche alla deduzione del tipo di riga: una riga prefix-less è classificata A)
riconoscendone i token contro questo vocabolario.
7. Decisioni¶
- Fonte unica — la spec è normativa; il charset di classificazione e la mappa dei glifi di un renderer derivano entrambi dalla tabella §6.
- Vocabolario chiuso — i simboli fuori tabella (es.
_, lettere isolate) non sono articolazioni valide (vedi §6). - Eccesso di token —
A)emette W131, comeD). - Significato normativo, rendering no — il significato musicale di ogni token è vincolante; il glifo che un renderer usa è una scelta implementativa.
Diagnostica: un token che porta materiale oltre il vocabolario emette W131 (eccesso di token); un token con una sequenza fuori-vocabolario emette W139 (validazione lessicale), inclusa una lettera-frammento isolata come la
sdioso larditr.
Estensioni A)¶
Le sezioni §8-§12 sono normative. Estendono il vocabolario per-posizione di §3 con: un modello di token decomponibile (§8), un token per-coppia (glissato
gl, §9) e due span (§10).
8. Modello del token: decomposizione e co-locazioni¶
Il vocabolario base (§3) può essere riconosciuto come token interi. Le estensioni
richiedono un vero decompositore per-posizione, come quello che D) usa per
le sue dinamiche (vedi neumaRk_dynamics.md).
Ogni posizione (token separato da spazi) è una concatenazione order-free
di elementi, decomposta con greedy longest-match sugli atomi multi-char
(prima os/ol di o, prima tr di t):
elemento :=
| onda ~[1-4]? "…"? // §10.2 (cifra/etichetta solo in apertura)
| testo "…" | ["…"] | […] | ("…") // §13.1 (modello a cornice)
| legatura-apre ( // §10.1 (ma `("…")` esatta è testo)
| legatura-chiude ) // §10.1
| staffa-apre { "…"? // §10.3 (etichetta solo in apertura)
| staffa-chiude } // §10.3
| ottava-apre 8u | 8d // §10.4 (alta / bassa)
| ottava-chiude 8. // §10.4 (8 + punto)
| glissato gl // §9 (verso la nota successiva)
| fermata o | os | ol // greedy: os/ol prima di o
| trillo tr // greedy: tr prima di t
| gruppetto t | T
| mordente m | M
| per-nota 1ch _ > ! ^ + , h v n V // V = cesura/Luftpause (§3)
| linea - // §13.3 (continuazione della linea tratteggiata)
| placeholder . // nessun elemento su quella posizione
Token interi fuori dal decompositore.
FINE(direttiva di flusso suA), §4.2.1 dineumaRk_flow_and_repeats.md) non è un elemento per-posizione: è un token intero gestito prima del decompositore.V(cesura) è invece un elemento per-posizione a un carattere, come>/^.
Conseguenza: _! e >! sono co-locazioni, non token atomici
(_+! = portato; >+! = accento-staccato). Tutte le combinazioni emergono
dalla concatenazione: (! = legatura-apre + staccato; >gl = accento + glissato.
La voce "combinazione" della tabella §3 resta valida come significato, non come
token atomico.
Eccezione: i delimitatori di span sono ordinati. Fra gli elementi che aprono e
chiudono uno span delimitato (( ) §10.1, { } §10.3, 8u/8d 8. §10.4)
conta l'ordine in cui compaiono nella posizione:
- chiusura poi apertura = concatenazione: la nota chiude uno span e ne apre
un altro dello stesso tipo (
)(,}{,8.8u); - apertura poi chiusura = degenere (
(),{},8u8.): → warning, vedi le singole sezioni.
A) ( . )( . )
N) c d e f g // due legature: c→e ed e→g
I segni per-nota restano order-free, anche rispetto ai delimitatori: !)(,
)(! e )!( si equivalgono.
Decomporre una posizione nei suoi segni per-nota è un passo separato dalla risoluzione degli span che apre o chiude (§10) — la stessa separazione che
D)applica alle sue dinamiche e forcelle.
9. Glissato fra note (gl)¶
gl sulla posizione di una nota = quella nota glissa verso la successiva. La
direzione (su/giù) è implicita dalle due altezze. È per-coppia, non uno span.
A) . gl . .
N) r4 a b r // a glissa verso b
Distinto dal glissato di singola nota (scoop/fall, entrata/uscita da una
nota), che vive in N) come modificatore fra parentesi — vedi
neumaRk_notes_and_durations.md (estensioni N).
10. Span¶
Span mutuati dal modello di D) (apertura/chiusura risolte in un post-pass).
Uno span vive sul rigo logico: lo stesso rigo attraverso tutti i datapack,
secondo l'identità di neumaRk_datapack.md §4.5. Il cambio di datapack o di
sistema non lo interrompe; lo chiude la sua chiusura. Uno span delimitato
({ }, 8u…8.) mai chiuso → warning, e si ferma sull'ultima
nota del sistema in cui si apre (il suo datapack). Fa eccezione la legatura
( ): una ( senza chiusura è lecita e arriva sulla nota successiva
(§10.1). Gli span si
risolvono per voce: una A) nel gruppo di N2 (neumaRk_voices.md §3.1)
apre e chiude span sulle note della voce 2, indipendenti da quelli della voce 1
(una ( della voce 1 non si chiude su una ) della voce 2).
10.1 Legatura di portamento ( ) (span delimitato)¶
Stile LilyPond: ( apre sulla nota della sua posizione, ) chiude sulla nota
della sua posizione; la curva copre dall'apertura alla chiusura.
A) . ( . . )
N) c d e f g // legatura da d a g
- Cross-barline / cross-system: sì. Sul cambio di sistema la curva si spezza in due archi: uno esce dal fondo del primo sistema, l'altro entra all'inizio del successivo.
A) | . . ( . |
N) | c d e f |
A) | . ) . . |
N) | g a b c | // legatura da e a a, attraverso il cambio di sistema
- Frasi concatenate:
)(sulla stessa nota chiude una legatura e ne apre un'altra (§8, delimitatori ordinati). (senza): legatura all'elemento successivo (lecita, nessun warning). Una(a cui non segue una)prima della(successiva della stessa voce (o prima della fine del brano) arriva sull'elemento successivo scritto nel sorgente: la nota dopo quella dell'apertura. È la legatura di due note, la più frequente, scritta con un solo segno:
A) ! ( ! ( ! ( ! ( | !
N) a8 b c d e d c b | a // quattro legature di due note: b-c, d-e, d-c, b-a
L'elemento successivo si conta sul sorgente: una nota che il renderer
spezza per la leggibilità (puntata sul battere, attraverso la stanghetta) è
un elemento solo, le grace note non contano (stanno sulla nota
principale), la nota d'arrivo di una legatura di valore ^ sì (è scritta).
Non contano nemmeno il prolungamento . di N) (allunga la nota prima: in
c4 . d la legatura va da c a d) né le pause che il parser aggiunge per
completare una misura corta; lo slash / conta, come una nota.
Vale anche attraverso la stanghetta e il cambio di sistema (§10: lo span vive
sul rigo logico). Se l'elemento successivo è una pausa → warning
(W144.slur_unclosed_rest) e nessuna legatura: una legatura che arriva su
una pausa non è notazione, è quasi sempre una chiusura dimenticata. Una (
sull'ultima nota del rigo logico, senza niente dopo → warning
(W144.slur_unclosed_eol) e nessuna legatura.
- Una legatura per volta, per scelta: annidamento e sovrapposizione non fanno
parte della notazione. Sono l'1% dei casi reali, e distinguere due legature
aperte richiederebbe un identificativo per ciascuna. Per questo una ( con
una legatura già aperta non la sovrappone: la legatura aperta diventa di
due note (regola sopra) e la nuova ( apre la sua. ( ( . ) sono quindi
due legature, dalla 1ª alla 2ª nota e dalla 2ª alla 4ª; in ( ( . ) ) la
seconda ) resta orfana. Due ( sulla stessa nota → warning
(W144.slur_open_overlap), la seconda è ignorata.
- ) orfana → warning (W144.slur_close_unmatched), ignorata.
- Apertura+chiusura sulla stessa nota (()): degenere → warning
(W144.slur_degenerate), ignorata.
- Co-locabile coi per-nota: (! = legatura-apre + staccato.
10.2 Onda ~[1-4] (span per ripetizione)¶
Una linea ondulata sempre sopra il rigo. Unifica vibrato / shake / long-vibrato / laid-back: l'ampiezza è la larghezza visiva, l'etichetta ne dà il nome.
Ampiezza — cifra opzionale 1–4 (default ~ = livello 1):
~N(con cifra) apre un nuovo span di ampiezza N, chiudendo quello corrente;~(nudo) estende lo span corrente; se nessuno è aperto, ne apre uno di livello 1.
A) ~3 ~ ~ ~1 ~ ~ // onda grande su 3 note, poi onda piccola su 3
Estensione e rest: ~ consecutivi (anche cross-barline) = un'unica onda;
una posizione senza ~ (inclusa una misura vuota) chiude lo span. I rest non
interrompono (l'allineamento conta i rest, §4).
A) ~2 ~ ~ ~ | | ~3 ~ ~ ~
N) a4 b r c | d | a4 b r c
// └─ ampiezza-2 su a b r(rest) c ─┘ (mis.2 vuota → niente onda) └─ ampiezza-3 ─┘
Etichetta (opzionale, solo sul token di apertura): "…" subito dopo
l'onda, resa sopra il suo inizio. L'etichetta è un container di text markup
(neumaRk_text_markup.md §2.2): accetta i marcatori #/##/###, */**,
__; il default è tondo (corsivo/grassetto/underline/size solo via i
marcatori). Ampiezza ed etichetta sono indipendenti.
A) ~3"shake" ~ ~ ~
A) ~"vibrato" ~ ~
A) ~4"laid back" ~ ~ ~ ~
L'etichetta dà la semantica (vibrato vs shake vs laid-back); il glifo ~ da
solo è solo "onda di ampiezza N". Per uno strumento di trascrizione la pagina è la
verità; un eventuale interprete inferirà da etichetta/ampiezza.
10.3 Staffa d'analisi { } (span delimitato)¶
Una staffa di raggruppamento sopra il rigo, come le parentesi dell'analisi
formale. { apre sulla nota della sua posizione, } chiude su quella della sua
(stile LilyPond, esattamente come la legatura §10.1).
A) . . {"triade di DO" . | } |
N) a a c e | g e c a
- Etichetta (opzionale): stringa
"…"subito dopo{(riusa lo stesso token opaco dell'onda). Resa allineata a sinistra sopra l'apertura ed è un container di text markup (neumaRk_text_markup.md§2.2:#/*/__), tonda di default. Una staffa senza etichetta ({ … }) è ammessa. - Resa: parentesi quadra sempre sopra il rigo, con i due montanti rivolti verso il basso (verso le note).
- Cross-barline / cross-system: sì.
- Una staffa per volta, per scelta (come la legatura, §10.1, ma senza la sua
legatura di due note: la staffa non ha un idioma «su due note»): una seconda
{con una aperta → warning (W144.brace_open_overlap), ignorata insieme alla}che la chiude, e resta la staffa esterna; una}orfana → warning (W144.brace_close_unmatched);{}degenere (apertura+chiusura sulla stessa nota) → warning (W144.brace_degenerate); staffa mai chiusa → warning (W144.brace_unclosed_eol) e chiusura implicita sull'ultima nota del sistema in cui si apre. - Puramente grafica: nessun effetto sul contenuto musicale (è un'annotazione analitica).
- Nota di sintassi: nelle righe
A)un{ … | … }è una staffa che attraversa la barra, quindi il|interno è una barline reale. La mappa sopprime il rilevamento polychord sulle righe Articulations.
10.4 Ottava 8u / 8d … 8 (span delimitato)¶
Una linea di ottava. 8u apre un'ottava alta, 8d un'ottava bassa;
8. chiude lo span (inclusivo sull'ultima nota coperta). Delimitata
come la legatura (§10.1) — volutamente NON il modello a estensione dell'onda
(§10.2): la linea d'ottava è rada, ripetere un token su ogni nota sarebbe
macchinoso. Un 8 nudo (senza u/d/.) è fuori-vocabolario (probabile
refuso di 8.) → W139.
A) . . . . . . . 8u | . . . 8. |
N) c8 d e f g a b c | d e f e d c b a
// └─ 8va dall'8ª nota, attraverso la barra, fino alla chiusura ─┘
- Resa: la sigla SMuFL standard —
8va(alta) / ottava bassa (la grafia visibile, «8ba» o «8vb», dipende dal font) — seguita da una linea orizzontale tratteggiata e un gancio finale verso il rigo; sopra per8u, sotto per8d. (Resa di riferimento, informativa: glifiU+E511eU+E513ottavaBassaBa, nel subset BravuraLS/PetalumaLS.) - Altezza effettiva: le note coperte valgono ±12 semitoni (
8u= +12,8d= −12) rispetto all'altezza scritta, che resta invariata — le teste-nota non si muovono. È il senso stesso dell'ottava: si scrive in una posizione, si legge un'ottava sopra/sotto. - Cross-barline / cross-system: sì.
- Un'ottava per volta, per scelta (come la legatura, §10.1, ma senza la sua
legatura di due note: un
8usenza8.è una chiusura dimenticata, e cambia l'altezza effettiva): seconda apertura con una aperta → warning (W144.octave_open_overlap), ignorata insieme all'8.che la chiude, e resta l'ottava esterna;8.di chiusura orfano → warning (W144.octave_close_unmatched);8u8.degenere → warning (W144.octave_degenerate); ottava mai chiusa → warning (W144.octave_unclosed_eol) e chiusura implicita sull'ultima nota del sistema in cui si apre.
Convenzione span (decisa per
A), da riusare per le forcelle/cresc.diD)): ogni span lungo è delimitato — un token di apertura (eventualmente parametrizzato) + un token di chiusura; le posizioni intermedie sono placeholder.. Legatura( ), staffa{ }e ottava8u…8la seguono. L'onda~mantiene il modello a estensione come unica eccezione documentata, perché il suo glifo è una linea ondulata continua su ogni nota.
11. Impatto sulla deduzione (charset esteso)¶
Le estensioni allargano la superficie di classificazione delle righe
(neumaRk_datapack.md §3.bis):
- Charset
A): include i nuovi simboli( ) ~ h v n g l Ve le cifre1-4, più{ } 8 u d(§10.3 staffa, §10.4 ottava), oltre al vocabolario base §6 (da cui il charset è derivato — fonte unica). Nota:lcompare ingl/ol;Vè la cesura (§3).[ ]è il riquadro["testo"](§13.1) e("testo")la cornice tonda (§13.1); la staffa d'analisi usa{ }. ~è marker specifico: una riga che contiene~è classificata univocamente comeA), malgrado le cifre che altrimenti la avvicinerebbero a chords/notes.{}8dNON sono marker specifici:8/d= durata/nota. Allargano solo il charsetA); la priorità notes-line (TB4) protegge le righeN), e una riga staffa/ottava implicita richiede il prefix esplicitoA)per essere classificata come articolazioni.g/glvs nota G — TB4:g(testa del tokenglglissato, §9) è anche la nota G, e con le durate1–4rende ambigue righe comeg,g4,g g g. La regola TB4 (neumaRk_datapack.md §3.bis.5) dà priorità alle note: una riga che è una notes-line valida (ogni token matcha la grammatica canonica delle note- almeno un pitch reale) è
N), nonA). Il tokenglnon è una nota valida, quindi una riga di articolazioni conglrestaA). - Quote-aware: il contenuto di un'etichetta
"…"(es.shake) è escluso dal match di classificazione — lettere fuori-charset o un~dentro il testo non rompono né marcano falsamente la riga.
12. Decisioni (estensioni)¶
- Glissato fra-note (
gl, §9) ≠ glissato singola-nota (scoop/fall, inN)). ✓ - Vocabolario esteso = insieme chiuso; significato normativo, il rendering è una scelta implementativa (eredita §6/§7). ✓
- Modello token unificato (decompositore + co-locazioni, §8); order-free tranne i delimitatori di span, dove chiusura-poi-apertura = concatenazione. ✓
- Legatura
( )delimitata, cross-system, concatenabile con)(; una per volta per scelta dichiarata, non per rinvio: la(in eccesso si ignora con la sua)(§10.1). ✓ - Arco su
v, giùn; armonicoh(§3). ✓ - Onda
~: livelli 1–4; cifra = nuovo span, nudo = estende; sempre sopra; copre i rest; etichetta"…"in apertura, tonda (§10.2). ✓ - Shake / long-vibrato / laid-back unificati nell'onda
~N+ etichetta. ✓ - Staffa d'analisi
{ }delimitata, etichetta"…"opzionale, sempre sopra, puramente grafica; una per volta per scelta, come la legatura (§10.3). ✓ - Ottava
8u/8d…8.delimitata (8.chiude), tratteggiata sopra/ sotto, altezza effettiva ±12; una per volta per scelta, come la legatura (§10.4). ✓ - Convenzione span: gli span lunghi sono delimitati (apertura + chiusura); l'onda è l'unica eccezione (estensione), avendo un glifo a linea continua. ✓
Linea-di-testo A) (unificata con D))¶
Sezione normativa. Porta su
A)(sopra il rigo) la scritta libera con linea tratteggiata cheD)ha già sotto il rigo (neumaRk_dynamics.md §5–§6), con vocabolario identico.A)sopra,D)sotto: stessi token. («Identico» si riferisce al sotto-vocabolario testo + ancoraggi di §13.1: gli hairpin grafici</>diD)non valgono inA), dove>è l'accento, §3.) È il ruolo idiomatico Sher di "dr. fill ----|", "rhythm tacet ----|". InA)il tenuto è_(§3), quindi-è libero per questo ruolo.
13. Etichette testuali e linea tratteggiata¶
Oltre alle articolazioni per-posizione (§3) e agli span geometrici (§10), A)
ospita testi liberi ancorabili a nota o a barline, resi con una linea
tratteggiata di prolungamento. Il modello è il gemello sopra-il-rigo delle
annotation testuali di D): le regole di apertura, continuazione, chiusura e
ancoraggio barline sono le stesse di neumaRk_dynamics.md §5–§6; qui si
elencano il vocabolario, le specificità di A) e il terminatore -| (nuovo,
comune ad A) e D)).
13.1 Vocabolario (identico a D))¶
| Forma | Ruolo | Rif. D) |
|---|---|---|
"text" / ["text"] / ("text") |
annotazione testuale note-anchored (cornice: §13.1 sotto) | §3.4 |
"text"- (non ultimo token) |
apre la linea tratteggiata | §5.2 |
- standalone (spaziato) |
continua la linea, attraversa le barre | §5.3 |
-"text" (primo token) |
ancora a begin-bar | §6.2 |
"text"- (ultimo token) |
ancora a end-bar | §6.3 |
-"text"- (primo token) |
begin-bar + apre linea cross-bar | §6.4 |
-\| (ultimo, incollato al bordo) |
terminatore: chiude sulla end-bar, gancetto, senza testo | §13.5 |
L'etichetta è un container di text markup (neumaRk_text_markup.md §2.2,
#/*/__), carattere tondo di default — come le etichette di onda/staffa
(§10.2, §10.3). Segue il modello a cornice (neumaRk_text_markup.md §2.1), in
ogni posizione della tabella (nota, begin-bar, end-bar, con o senza linea):
"text"— nessuna cornice;["text"]— riquadro (forma di riferimento);[text]ne è l'abbreviazione, con lo stesso risultato. InA)la staffa d'analisi usa{ }(§10.3), quindi[ ]è disponibile per il riquadro;("text")— cornice tonda. Solo la forma esatta:("dolce"…)resta una legatura (§10.1) che parte con un testo.
Le co-locazioni sono quelle di §8: ("x")- apre la linea, -("x")- apre dalla
begin-bar, ("x")! e >("x") affiancano un per-nota. Le stesse forme valgono per
il testo di A) sopra una riga C) (§2.1).
13.2 Annotazione note-anchored¶
"text" (o ["text"], ("text") con cornice) su una posizione = etichetta ancorata a quella
nota, allineata a sinistra sopra di essa. È puntuale finché non è seguita da
- adiacente (§13.3).
A) "dr. fill" . . .
N) a8 b c d // etichetta "dr. fill" sopra la 1ª nota
13.3 Linea tratteggiata (nota → nota)¶
Le stesse tre regole di neumaRk_dynamics.md §5: un - adiacente (incollato)
apre la linea; un - standalone (spaziato) la continua, anche attraverso le
barre (§5.3, §5.5); un nuovo elemento senza - — o la fine del system — la
chiude (§5.4). La linea copre le note percorse dalle continuazioni e si arresta
appena prima dell'onset dell'evento di chiusura.
A) "dr. fill"- - - .
N) a8 b c d // linea tratteggiata da nota 1 a nota 4, gancetto sull'ultima
13.4 Ancoraggio a barline¶
Identico a neumaRk_dynamics.md §6: -"text" come primo token della misura
ancora a begin-bar; "text"- come ultimo token ancora a end-bar; -"text"-
apre una linea cross-bar. Il contenuto di A) per ciascuna misura è il testo
fra due barline, escluso ogni decoratore del bordo (§6.1): il bordo composto è
proprietà della riga, comune a tutte le righe musicali, e non va replicato.
A) -"vamp"- - | |
N) a1 | b1 | // begin-bar "vamp", cross-bar, chiude sulla 1ª nota della misura 2
Vale anche la riclassificazione "text"- che apre (gemella di
neumaRk_dynamics.md §6.4): un "text"- ultimo-token, se nessuna linea è aperta e
la misura seguente continua, apre una linea cross-bar riclassificata come apertura
note-anchored sull'ultimo evento della misura (rende sulla nota — es. il primo
slash — non al bordo). Es. A) | . "riff"- | - mette "riff" sul primo slash.
13.5 Terminatore -|¶
Il terminatore -| chiude la linea sulla barline, senza testo
(neumaRk_dynamics.md §2), a differenza della chiusura su nota (§13.3). Il
terminatore è un - incollato a un bordo composto come ultimo token della
misura:
A) -"vamp"- - | - -|
N) a1 | b1 | // la linea chiude sull'end-bar della misura 2, gancetto sul bordo
- Prefisso dell'intero bordo, uniforme (nessun caso speciale per decoratore):
-|,-:|,-:open|,-:x3|,-||,-|.,-DCal@|→ il parser stacca il-iniziale (= "chiudi span + gancetto"), il resto è il normale bordo. - Discriminatore incollato/spaziato:
-|(incollato) aggancia il bordo;- |(spaziato) è un-di continuazione che attraversa la barra. - Vale anche per
D)(stessa forma, stesso effetto:neumaRk_dynamics.md §6.6).
13.6 Resa¶
Etichetta allineata a sinistra; linea tratteggiata che parte dopo il
testo; gancetto SEMPRE all'estremo, rivolto verso il rigo — in giù per
A) (che è sopra), in su per D) (che è sotto). È lo stesso primitivo grafico
dell'ottava (§10.4, tratteggio + hook). Il terminatore estende la linea fino al
bordo destro del rigo, con gancetto sull'end-bar. La linea è centrata
verticalmente sull'altezza del testo. A) e D) sono speculari.
Su più righe. Un ; nell'etichetta va a capo (neumaRk_text_markup.md
§3bis), anche nelle etichette di onda (§10.2) e staffa (§10.3): la pila cresce
verso l'alto e l'ultima riga resta dove sarebbe la riga singola. Righe a
sinistra, a destra solo sulla stanghetta di fine misura ("…"- ultimo token);
una sola cornice (riquadro o tonda) avvolge l'intera pila; la linea tratteggiata parte
dall'ultima riga, alla sua quota. Una sigla sopra la nota annotata sale sopra
l'intera pila.
A) "rit.;poco a poco"- - - - | - - - . |
N) c4 d e f | g a b c |
13.7 ⚠ Authoring: ogni nota vuole la sua continuazione¶
Il begin-bar -"text"- apre soltanto la linea: non copre automaticamente
le note della misura. Come in D), ogni nota sotto la linea vuole la sua
continuazione - nella propria colonna. Le conseguenze, verificate col parser:
- Una nota senza token
A)è un evento di chiusura: la linea finisce appena prima del suo onset. - Le continuazioni attraversano le barre senza sintassi speciale (§5.5); per
prolungare la linea oltre la misura basta continuare a mettere
-colonna per colonna. - Un
-standalone in una misura nuova senza span aperto è orfano: non riapre nulla.
Ricette corrette (verificate; whole/half note, 1–2 note per misura):
// (a) chiude su nota — cross-bar
A) -"vamp"- - | |
N) a1 | b1 | // → linea da begin-bar della mis.1 alla 1ª nota della mis.2
// (b) chiude su barline — terminatore
A) -"vamp"- - | - -|
N) a1 | b1 | // → linea da begin-bar della mis.1 all'end-bar della mis.2
Confusione tipica (da evitare): aprire con -"text"- senza continuazioni
che coprano la misura, e mettere un - isolato nella misura dopo:
A) -"vamp"- | - |
N) a1 | b1 | // ✗ la linea si chiude subito sulla 1ª nota della mis.1;
// il `-` della mis.2 resta orfano (non riapre nulla)
13.8 - è continuazione di linea (non tenuto)¶
In A) il - è la continuazione della linea (§13.3); il tenuto è _ e il
portato _! (§3). Lo staccato ! e l'accento-staccato >! sono invariati.
13.9 Decisioni (linea-di-testo)¶
- Modello unificato
A)=D): stesso vocabolario,A)sopra eD)sotto, rese speculari (§13.1, §13.6). ✓ - Terminatore
-|= prefisso dell'intero bordo composto, uniforme, comune adA)eD); colma il buco end-bar (§13.5). ✓ - Ogni nota vuole la sua continuazione
-; nota senza token = chiusura;-orfano non riapre (§13.7). ✓ - Box
["text"]inA)usa le parentesi quadre (la staffa d'analisi usa{ }, §10.3). ✓
14. Diagnostici¶
| Codice | Condizione |
|---|---|
| W131 | Token in eccesso rispetto agli eventi della riga sotto (W131.excess_articulation); sopra C), testo oltre le colonne di sigla stampate (§2.1, §4) |
| W133 | Container di testo non chiuso nella misura: il resto della misura è letto come testo (neumaRk_text_markup.md §6.2) |
| W139 | Token fuori dal vocabolario, compreso un 8 nudo (§3, §10.4) |
| W144 | Span malformato: legatura (slur_*), staffa d'analisi (brace_*), ottava (octave_*) (§10.1, §10.3, §10.4) |
| W167 | FINE ancorato a una nota in conflitto con FINE sulla stanghetta (neumaRk_flow_and_repeats.md §4.2.1) |
| W174 | Riga A) senza la sua riga sotto: ignorata (§2) |