Vai al contenuto

Dinamiche e annotation testuali

Questo documento definisce la sintassi e la semantica della riga di dinamiche D) in neumaRk: vocabolario degli elementi, allineamento agli eventi musicali, sintassi delle annotation testuali, regole di estensione e diagnostica.

La riga D) è la fascia annotativa sotto il rigo: ospita le indicazioni dinamiche tradizionali (p, mf, ff, hairpin, cresc./dim.) e — coerentemente con la pratica jazz/lead-sheet — anche annotation testuali ancorate a eventi musicali (es. "drums fill", "freely", "w synth") o alle stanghette di misura (es. "Vamp till cue").


1. Definizione

La riga D) è una riga musicale opzionale del datapack (neumaRk_datapack.md §3, gruppo di note) che descrive eventi sotto-pentagramma allineati per posizione agli eventi della riga N) parent.

Esistono due classi ortogonali di elementi in D):

  1. Elementi note-anchored — token in corrispondenza 1:1 con le note della riga N) parent (o N2). La classe principale.
  2. Elementi barline-anchored — annotation testuali ancorate all'inizio o alla fine di una misura, indipendentemente dagli eventi note interni.

Le due classi convivono nella stessa riga: barline-anchored sono riconoscibili per adiacenza a un bordo barline composto; note-anchored sono tutti gli altri token.


2. Posizione strutturale e binding

La riga D) segue le regole generali del gruppo voce (neumaRk_datapack.md §3, gruppo di note, e neumaRk_voices.md §3.1):

[A)]  N)|N2|N+  [D)]  [L)]
  • è opzionale; può apparire al massimo una per gruppo voce;
  • è legata alla riga N) / N+ / N2 immediatamente precedente;
  • segue le stesse stanghette di misura (|, ||, :|, |:, ecc.) e gli stessi decoratori di misura della riga parent.

Una riga D) che non trova una N)/N+/N2 precedente nello stesso datapack non è un errore: viene legata a uno stave implicito (rigo 0 con auto-rest) e il parser non emette alcun diagnostico. È una tolleranza propria di D): una A) senza la sua riga sotto è invece ignorata con W174 (neumaRk_articulations.md §2).


3. Vocabolario degli elementi

3.1 Dynamic puntuali

Marcatori dinamici tradizionali, ognuno puntuale (vale su una sola nota):

p   mp   mf   f   ff   fff   pp   ppp   pppp   ffff   sf   sfz   fp

Non si estendono nel tempo: il volume implicato dal mark vale per il beat dell'evento e — interpretativamente — fino al prossimo dynamic mark, ma graficamente compare una sola volta.

3.2 Hairpin grafici

Due token, ognuno renderizzato come segno grafico (crescendo/decrescendo "a forcina"):

Token Effetto
< crescendo
> decrescendo

I hairpin si estendono per ripetizione: una sequenza < < < su tre note produce un singolo segno grafico che copre quelle tre note. Una singola occorrenza è ammessa (puntuale).

3.3 Hairpin testuali

Due token brevi che generano un'indicazione testuale con linea di estensione tratteggiata:

Token Rendering
c "cresc. - - - - "
d "dim. - - - - "

Si estendono per ripetizione, esattamente come §3.2: una sequenza c c c c produce un'unica scritta "cresc." seguita da una linea tratteggiata che copre le quattro note.

Co-locazione con hairpin grafico (c< / d>): quando c e < (o d e >) compaiono sulla stessa nota come token co-located, vince la forcella grafica. Il token testuale è ignorato dal post-pass di estrazione hairpin. Per ottenere il testo "cresc."/"dim." senza forcella, usare c/d da soli. Per ottenere entrambi i segni contemporaneamente serve scriverli su note diverse (es. c < su due note adiacenti).

Compound testuali pc / fd: NON sono supportati. Un token co-located con dynamic puntuale seguito da hairpin testuale (es. pc, fd) produce solo il dynamic puntuale; l'hairpin testuale viene ignorato. Per esprimere "p e poi cresc." scrivere su due note: p c.

3.4 Annotation testuali

Container testuali col modello a cornice (vedi neumaRk_text_markup.md §2.1): il testo sta fra virgolette, la cornice è facoltativa.

Forma Effetto
"text" annotation senza cornice
["text"] annotation in un riquadro (forma di riferimento)
[text] abbreviazione di ["text"]: stesso riquadro
("text") annotation in una cornice tonda

Le forme valgono in ogni posizione: sulla nota, alla stanghetta (§6), con o senza estensione (§5). In D) la parentesi tonda serve solo alla cornice ("…"): una ( o ) in qualunque altra forma (es. (mf), (testo)) è ignorata e segnalata con W177. (mf) produce quindi mf, senza parentesi; per una dinamica editoriale fra parentesi si scrive il testo: ("mf").

Il contenuto del container è soggetto al markup unificato definito in neumaRk_text_markup.md. Lo stile di default delle annotation D) è plain, dimensione media (role reduced; ### la rimpicciolisce): italic, bold e underline sono applicati solo se richiesti esplicitamente tramite il markup utente (*…*, **…**, __…__).

Le annotation testuali sono puntuali di default; diventano estese se seguite da - adiacente (vedi §5).

3.5 Placeholder .

Il token . indica nessun elemento sull'evento corrispondente. Serve a "saltare" un evento (nota o pausa) mantenendo l'allineamento posizionale.

Il . ha anche un ruolo chiusura: una . su una nota interrompe qualunque extension testuale in corso (vedi §5.4).

3.6 Continuation -

Il token - come token standalone (separato da spazi) significa "prosegue l'extension testuale aperta a sinistra". Si applica alle sole annotation testuali (vedi §5).

- ha anche un ruolo adiacente (senza spazi) come marcatore di apertura extension ("text"-) o di ancoraggio barline ([1.]-"text", "text"-:|). I tre ruoli sono distinguibili per posizione e adiacenza (vedi §4, §5, §6).


4. Elementi note-anchored

4.1 Corrispondenza 1:1 con la riga N) parent

Ogni token note-anchored della riga D) cade su un evento (nota o pausa) della riga parent, in ordine left-to-right. La corrispondenza è strettamente posizionale:

N) | a8 b c d e f g a |
D) | p  .  .  < < < f .  |
//   ↑           ↑   ↑
// nota 1     note 4-6  nota 7

I rest contano come posizione (come neumaRk_articulations.md §4, e a differenza di L) che li salta): una . sopra un rest è un evento a tutti gli effetti. Il conteggio è per-evento, non per-nota. Esempio: D) | f p mf | su N) | c4 r4 e4 | = 3 token su 3 eventi (2 note + 1 pausa), nessun W131.

4.2 Co-locazione: più elementi sulla stessa nota

Più elementi sulla stessa nota si scrivono come token unico senza spazi interni:

N) | a4    b   c   d |
D) | f"piano fill"   .   c<   .  |
//   ↑ 3 elementi sulla stessa nota: f + "piano fill" + (nessuno su b)

L'ordine degli elementi co-located è libero: f"text"c< e "text"<fc sono equivalenti dal punto di vista semantico (stessa nota, stessi elementi). Il renderer può applicare un ordine canonico in display.

4.3 Autofill di note residue

Se la riga D) contiene meno token note-anchored della riga N) parent, le note residue ricevono un . implicito:

N) | a a a a a a a a |
D) | f               |     // ≡  D) | f . . . . . . . |

Se la riga D) contiene più token di quanti siano gli eventi (note e pause) nella riga parent (extra-token), produce warning W131.

4.4 Misure e barline

La suddivisione in misure è definita dalle stanghette | come per le altre righe musicali. Le stanghette di D) devono allinearsi a quelle della riga parent (regole generali di neumaRk_datapack.md §6).


5. Estensione testuale -

5.1 Solo i testi sono estendibili

Le annotation testuali ("text", ["text"]/[text], ("text")) sono gli unici elementi estendibili tramite trattino -. Dynamic puntuali (§3.1) non si estendono per loro natura; hairpin grafici e testuali (§3.2, §3.3) si estendono per ripetizione, non con -.

5.2 Apertura

Un trattino - adiacente (senza spazi) a destra di un'annotation testuale apre un'extension:

D) | "intro"-  -  -  -  mp |
//     ↑ apre extension     ↑ chiude

In un gruppo co-located, il - adiacente vale per l'annotation testuale del gruppo, non per gli altri elementi:

D) | ff"drums fill"-  -  -  -  -  -  -  ppp  -  -  -  - |
//     ↑ apre extension del testo (ff resta puntuale sulla nota 1)
//                                 ↑ ppp puntuale, chiude "drums fill"

5.3 Continuazione

Un - standalone (token separato da spazi) prosegue l'extension aperta a sinistra. Funziona per qualunque numero di note successive, anche attraverso le stanghette di misura:

N) | a16 a a a a a a a    a a a a a a a a | a8 a a a a a a a |
D) | ff"drums fill"- - - - - - - ppp"dim."- - - - - - - - - | - - - - - - - pp |
//   └──── extension 1 ─────────┘└──── extension 2, oltre la stanghetta ─────┘

La seconda extension parte dal testo "dim." che accompagna ppp: una dynamic puntuale da sola non si estende (§5.1), e un - incollato a ppp non aprirebbe nulla.

5.4 Chiusura

Una extension testuale termina quando si incontra uno dei seguenti eventi:

  • un nuovo elemento note-anchored senza - adiacente sopra di sé (dynamic mark, hairpin, annotation, placeholder .);
  • la fine del system corrente (chiusura implicita);
  • una nuova annotation testuale aperta con - adiacente: chiude la precedente e ne apre una nuova;
  • un nuovo begin-bar anchor -"text" (vedi §6.2) come primo token di una misura: chiude l'extension precedente alla barline di apertura della misura corrente (subito prima del nuovo ancoraggio) e apre un nuovo ancoraggio begin-bar lì allineato.

L'ultima regola si applica anche quando l'extension precedente è cross-bar barline-anchored (apertura -"prev"- … - continua sulle misure intermedie): un nuovo begin-bar -"new" la chiude implicitamente e ne apre uno nuovo, allineato al bordo barline di ingresso della misura corrente. Non occorre chiusura esplicita.

Esempio:

D) | "intro"- - - - - - - - | -"new"  p . . ff |
//     ↑ extension aperta      ↑ chiude "intro" alla barra (subito
//                              prima di "new"), apre "new" begin-bar
//                              nella misura corrente

Per chiudere esplicitamente prima della fine del system senza aprire un nuovo ancoraggio, inserire . (placeholder) o un altro elemento note-anchored privo di - adiacente.

Resa della linea. La linea tratteggiata copre l'intera larghezza dell'ultima nota estesa e si arresta subito prima dell'onset dell'evento di chiusura — sia esso un elemento note-anchored, una nuova annotation testuale, o il begin-bar della misura successiva. È la stessa terminazione delle forcelle grafiche e testuali (§3.2, §3.3). Unica eccezione: la chiusura implicita a fine system estende la linea fino al bordo destro del rigo.

5.5 Cross-bar libero

La stanghetta di misura | (e le sue varianti composte) è trasparente all'extension testuale: un - continua attraverso | senza necessità di sintassi speciale. Per ancorare un'annotation alla barline anziché a una nota interna, si usa la forma barline-anchored (§6).

5.6 Extension parallele

Più extension parallele (es. testo + hairpin) si ottengono per combinazione delle regole: il testo si estende con -, il hairpin si ripete per nota. Non esiste un meccanismo - per estendere hairpin:

N) | a a a a a a a a |
D) | "cresc."- - - - < < < < |
//   ↑ testo esteso            ↑ hairpin grafico per 4 note

Il rendering presenta entrambi i segni nella fascia D), con regole di posizionamento verticale a cura del renderer.


6. Elementi barline-anchored

6.1 Contesto: bordo barline e contenuto di D)

In neumaRk un "bordo barline" è il gruppo composto formato dalla stanghetta | e dai suoi decoratori adiacenti: ripetizione (:), cambio metro/tonalità ((3/4), (@F)), volta ([1.], [2.]), conteggio ripetizioni (:x3), ecc. Il bordo barline è proprietà della riga (vedi neumaRk_datapack.md §6) ed è comune a tutte le righe musicali del datapack: D) non lo replica nel proprio contenuto.

Di conseguenza, il contenuto di D) per ciascuna misura è il testo fra una barline e la successiva, escluso ogni decoratore del bordo barline. È su questo contenuto pulito che si applicano le regole di ancoraggio di §6.2-§6.4.

6.2 Begin-bar

Un trattino - come carattere iniziale del primo token della misura, seguito (senza spazi) da un'annotation testuale, ancora l'annotation all'inizio della misura:

D) | -"my text 1"  p . . ff |
//     ↑ "my text 1" begin-bar anchored

Il - iniziale non rappresenta extension qui: rappresenta ancoraggio barline. L'annotation resta puntuale di default; per estenderla attraverso le misure successive si applica la regola di §6.4.

Interazione con extension precedente (§5.4): se la misura precedente aveva una extension testuale aperta (note-anchored o barline-anchored cross-bar), il nuovo begin-bar -"text" la chiude implicitamente sulla nota immediatamente anteriore e apre il nuovo ancoraggio allineato al bordo barline. Per chiudere esplicitamente l'extension prima del begin-bar, inserire . o altro closing element sull'ultima nota della misura precedente.

6.3 End-bar

Simmetricamente: un'annotation testuale seguita (senza spazi) da - come ultimo token della misura ancora l'annotation alla fine della misura:

D) | ff "my text 2"- |
//          ↑ "my text 2" end-bar anchored

6.4 Extension barline-anchored cross-bar

Un'annotation barline-anchored può estendersi attraverso più misure combinando due trattini sul primo token (ancora + apre) e uno sull'ultimo (ancora + chiude):

D) | -"Vamp till cue"-  -  -  - | -  -  -  -  - | -  -  - "end"- |
//     ↑ begin-bar + apre ext      ↑ continua ext (cross-bar)        ↑ end-bar (chiude)
  • Il primo - ancora l'annotation a begin-bar.
  • Il secondo - adiacente al testo apre l'extension testuale (come per le note-anchored).
  • Nelle misure successive, - standalone continua l'extension.
  • La chiusura segue le stesse regole di §5.4; in più, una forma end-bar "end"- come ultimo token può chiudere esplicitamente un'extension aperta (anche con "end" qui usato simbolicamente — un nuovo elemento barline-anchored chiude quello in corso).

"text"- che APRE (riclassificazione note-anchored). Un "text"- come ultimo token di misura, quando nessuna linea è aperta quando lo si raggiunge e la misura seguente continua con -, non chiude nulla: apre una nuova linea cross-bar. In tal caso l'etichetta è riclassificata come apertura note-anchored sull'ultimo evento della misura (rende SULLA nota — es. il primo slash di una misura-slash — non al bordo), e la linea prosegue a destra fino alla chiusura (nota o fine-rigo). È la forma per etichettare un punto interno con linea che attraversa (es. D) | . "solo break"- | - mette "solo break" sul primo slash e tira la linea a fine-rigo). Le forme . "x"- e . "x"- - (con - eccedente sotto slash=1slot) sono equivalenti e round-trip lossless. NON scatta se una linea è già aperta ("end" chiude, sopra) o se la misura seguente non continua (resta etichetta end-bar puntuale).

6.5 Convivenza begin + end nella stessa misura

Una misura può contenere sia un'annotation begin-bar sia una end-bar:

D) | -"text 1"   p . . ff   "text 2"- |
//     ↑ begin                ↑ end

Eventuali elementi note-anchored della misura (p . . ff) si intercalano normalmente fra l'annotation begin e quella end.

6.6 Terminatore -| (chiudi sulla end-bar, senza testo)

Una extension aperta si chiude, di norma, su una nota (§5.4) — l'ultima nota coperta o l'evento di chiusura. Il terminatore copre il caso "chiudi sulla barline, gancetto, senza testo", idiomatico del rhythm tacet ----| (dove dopo la linea non c'è testo né una nota su cui poggiare): un - incollato al bordo composto come ultimo token della misura.

D) | -"vamp"- - | - -| |
//     ↑ begin-bar + apre   ↑ terminatore: chiude sull'end-bar della misura 2
  • 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 della misura (§6.1), parsato come ovunque.
  • Discriminatore incollato/spaziato (§7.2): -| (incollato) aggancia il bordo; - | (spaziato) è un - di continuazione che attraversa la barra.
  • Il terminatore è ancorato alla barline, non a una colonna-nota: non tocca la corrispondenza 1:1 con N).
  • È speculare in A) (neumaRk_articulations.md §13.5): stessa forma, stesso effetto, sopra il rigo.

Resa: la linea tratteggiata raggiunge il bordo destro della misura, con gancetto all'estremo (verso il rigo); nessuna etichetta.


7. Regole di parsing

7.1 Tokenizzazione

La riga D) è tokenizzata su spazi bianchi. All'interno di un token possono comparire più elementi co-located (§4.2). I container testuali ("…", ["…"]/[…], ("…")) ammettono spazi interni (sono delimitati dalle loro virgolette/parentesi quadre).

7.2 Disambiguazione del -

Il carattere - ha tre ruoli, distinguibili per posizione e adiacenza rispetto al contenuto della misura D):

Forma Ruolo
"text"- (adiacente a annot, non ultimo token della misura) apre extension testuale (§5.2)
- (token standalone) continua extension (§5.3)
-"text" come PRIMO token della misura ancoraggio begin-bar (§6.2)
"text"- come ULTIMO token della misura ancoraggio end-bar (§6.3)
-"text"- come primo token begin-bar + apre extension cross-bar (§6.4)
-\| (o -:\|, -\|.…) come ULTIMO token, incollato al bordo terminatore: chiude sulla end-bar, senza testo (§6.6)

Un - non riconducibile a nessuno di questi pattern non ha effetto: diventa una continuazione vuota, senza diagnostici (il codice W132, previsto per questo caso, è riservato e non viene emesso).

7.3 Disambiguazione […] e (

Il container […] in D) è sempre un'annotation testuale in un riquadro. Non collide con il volta begin ([1.]) perché quest'ultimo compare nella riga di Markers, non in D). Non collide con polychord ([top|bottom]) per lo stesso motivo.

La ( in D) è una cornice tonda solo nella forma ("…"). Ogni altra parentesi ((mf), (testo), p(…) è ignorata con W177; le play directive (=…) fuori da M) restano segnalate da W138.

7.4 Single-line e container vuoti

I container testuali sono single-line (vedi neumaRk_text_markup.md §6.2). Container vuoti "" e [] sono letterali e non interpretati come annotation (sono token testuali vuoti).

7.5 Markup interno

Il contenuto dei container in D) è soggetto al markup unificato di neumaRk_text_markup.md §3. Lo stile di default applicato è plain, size media: italic, bold e underline si attivano solo tramite markup esplicito (*…*, **…**, __…__).


8. Resa grafica

8.1 Fascia D)

Tutti gli elementi della riga D) sono renderizzati sotto il pentagramma del rigo parent, in una fascia dedicata. Quando il rigo parent è una voce 2 (N2), la fascia D) della voce 2 può essere sovrapposta o adiacente a quella della voce 1: il posizionamento verticale è scelta del renderer.

8.2 Dynamic puntuali

I dynamic mark (§3.1) sono renderizzati con i glifi di dinamica del font musicale (le lettere corsive tradizionali di p, mf, sfz…), allineati orizzontalmente al beat della nota corrispondente.

8.3 Hairpin grafici

I hairpin (</>) sono renderizzati come singolo segno "a forcina" che copre l'intervallo da prima all'ultima ripetizione, con estremi allineati ai beat delle note di apertura e chiusura.

8.4 Hairpin testuali

c e d producono rispettivamente "cresc." e "dim." come testo italic, seguiti da una linea tratteggiata che si estende fino al beat dell'ultima ripetizione. Lo stile è coerente con la convenzione tipografica musicale.

8.5 Annotation testuali

Stile default: plain, dimensione media (coerente con §3.4 e §7.5; italic/bold/underline solo via markup *…*/**…**/__…__). Le annotation con ["…"]/[…] mostrano un riquadro attorno al testo, quelle con ("…") una coppia di parentesi tonde; le annotation con "…" sono solo testo.

Un ; nell'annotation va a capo (neumaRk_text_markup.md §3bis). La pila sta sotto il rigo e cresce verso il basso: la prima riga resta dove sarebbe la riga singola. Ogni riga è centrata sulla nota; se la pila sborderebbe dal rigo, si sposta tutta insieme, in base alla riga più larga. Una sola cornice (riquadro o tonda) avvolge l'intera pila.

D) | "dolce;espr." . . . |      // →   dolce
//                                  espr.

Le extension testuali sono renderizzate come linea continua o tratteggiata (a discrezione del renderer) che parte dalla fine del testo e si estende fino al beat di chiusura. Con un'etichetta su più righe la linea segue la prima riga.

8.6 Annotation barline-anchored

Le annotation begin-bar sono allineate verticalmente al bordo sinistro della misura; quelle end-bar al bordo destro. Le extension cross-bar attraversano graficamente le stanghette di misura. Su più righe l'allineamento vale riga per riga: begin a sinistra, end a destra.


9. Diagnostica

9.1 Codici diagnostici

Codice Descrizione
W131 Numero di token note-anchored in D) superiore agli eventi di N) (W131.excess_dynamic)
W132 Riservato, non emesso: token - non riconducibile a extension o ancoraggio barline (§7.2)
W133 Container testuale non chiuso nella misura ("…, [… o ("… senza chiusura): il resto della misura è letto come testo
W138 Play directive (=…) fuori dalla riga M): ignorata (neumaRk_play_directive.md)
W177 Parentesi fuori da una cornice ("…") ((mf), (testo)): ignorate (neumaRk_text_markup.md §2.1)

9.2 Extension non chiuse

Una extension testuale che arriva alla fine del system è chiusa implicitamente a fine system (§5.4). Non è un errore: la spec considera questo un comportamento valido e robusto. Per chiudere esplicitamente prima della fine del system, basta inserire . o un altro elemento note-anchored senza - adiacente.

9.3 Hairpin con singola occorrenza

Un hairpin (<, >, c, d) che compare una sola volta su una nota non è errore e non emette warning. Poiché i hairpin si estendono per ripetizione, un'occorrenza singola non ha una nota di chiusura distinta: viene renderizzata dandole la larghezza della durata della nota — la forcella (o la linea cresc./dim.) si estende dalla nota fino a poco prima dell'onset della nota successiva, oppure, se è l'ultima nota della linea, fino al bordo destro del rigo. È il caso idiomatico della nota finale del brano in dim./cresc. al niente, dove ripetere il segno è impossibile per costruzione.

Con una dinamica co-located (forcella grafica </> + dynamic sulla stessa nota) l'ordine di scrittura determina la disposizione orizzontale lungo la durata della nota, speculare al senso musicale:

  • pp> — dinamica prima: la dinamica è di partenza, sta sull'onset e il cuneo si apre alla sua destra;
  • >pp — forcella prima: la dinamica è di arrivo, il cuneo parte dall'onset e la dinamica è posta all'estremo destro del cuneo.

Entrambe le forme sono valide; scegli in base a dove vuoi la dinamica (partenza vs arrivo). Vale per le forcelle grafiche; i text-hairpin (c/d) con dinamica co-located non hanno questa distinzione.


10. Esempi

10.1 Dinamiche essenziali

N) | a4 b c d | e f g a |
D) | p  .  .  f  | .  <  <  ff |

p su nota 1 di misura 1, f su nota 4; crescendo grafico su note 2-3 di misura 2 che culmina in ff su nota 4.

10.2 Annotation puntuale e estesa

N) | a8 a a a a a a a | a a a a a a a a |
D) | "intro"- - - mp< < < f | "verse"- - - - - - - - |

Misura 1: "intro" esteso per 4 note, poi mp chiude e parte hairpin grafico fino a f. Misura 2: "verse" esteso per tutta la misura; chiusura implicita a end-of-system.

10.3 Hairpin testuale c / d

N) | a8 a a a a a a a | a a a a a a a a |
D) | p c c c c c c c | c f . . d d d d |

Misura 1: p puntuale su nota 1, "cresc." si estende per 7 note. La prima ripetizione c cade sulla stessa nota di p (co-located). Misura 2: ulteriore c continua il "cresc." fino alla nota 1, poi f chiude. Da nota 5: "dim." si estende per 4 note.

10.4 Co-locazione complessa

N) | a4 b c d |
D) | ff"drum fill"c<  .  .  ppp |

Sulla nota 1: 4 elementi co-located (ff puntuale + testo "drum fill" + hairpin testuale c + hairpin grafico <). Le note 2-3 sono vuote; ppp puntuale su nota 4.

10.5 Barline-anchored begin

M) |[V.]                                          …
D) | -"Vamp till cue"- p . . . . . . . . |

"Vamp till cue" ancorato all'inizio della misura [V.] (volta), esteso per tutta la misura (i - continuano sulle note successive perché il trattino adiacente alla destra del testo apre l'extension).

Il decoratore [V.] di M) non è replicato nel contenuto di D): il parser lavora sul contenuto pulito della misura (vedi §6.1).

10.6 Barline-anchored cross-bar

D) | -"Vamp till cue"- p . . . . . . . . | - - - - - - - - | - - - - mp - - - |

"Vamp till cue" copre 3 misure; chiude su mp in misura 3.

10.7 Begin + end nella stessa misura

M) |:(3/4)[1.]                              :x3|
D) | -"intro"   p . . ff   "outro"- |

Annotation "intro" begin-bar + annotation "outro" end-bar nella stessa misura. Dinamiche p e ff sulle note interne. Il bordo barline di M) (:(3/4)[1.] / :x3|) non compare nel contenuto di D).

10.8 Voce 2 con dinamiche indipendenti

N)  | a4 b c d |
D)  | f . . ff |
N2  | e4 d e2  |
D)  | p . pp   |

La voce 1 ha f su nota 1 e ff su nota 4; la voce 2 ha p su nota 1 e pp su nota 3. Le due D) sono entrambe legate alle rispettive N)/N2 per posizione (vedi neumaRk_voices.md §3.1).


11. Riassunto

Concetto Sintassi Sezione
Dynamic puntuale p mp mf f ff fff pp ppp pppp ffff sf sfz fp §3.1
Hairpin grafico < > (per ripetizione) §3.2
Hairpin testuale c (→ cresc.) d (→ dim.) §3.3
Annotation testuale "text" / ["text"] ([text]) / ("text") §3.4
Placeholder . §3.5
Continuation - standalone §3.6
Co-locazione adiacenza senza spazi §4.2
Autofill note residue → . implicito §4.3
Extension testuale "text"- apre, - continua, . chiude §5
Begin-bar -"text" come PRIMO token della misura §6.2
End-bar "text"- come ULTIMO token della misura §6.3
Cross-bar barline-anch -"text"- … "end"- (cross-bar) §6.4
Terminatore -\| ultimo token, incollato al bordo (chiude senza testo) §6.6
Cross-bar note-anch - attraversa | trasparente §5.5

Il sistema è ortogonale: i tre meccanismi (dynamic puntuali, hairpin per ripetizione, testi con extension -) coesistono senza interferenze e si combinano per co-locazione.


Questo documento definisce la riga D) di neumaRk come fascia annotativa sotto-pentagramma unificata, in grado di esprimere dinamiche tradizionali, indicazioni di crescendo/decrescendo, annotation testuali puntuali ed estese e ancoraggi alle stanghette di misura, attraverso un vocabolario compatto e regole ortogonali.