Vai al contenuto

Grace notes (appoggiature e acciaccature)

Questo documento definisce la sintassi e la semantica delle grace notes in neumaRk: appoggiature e acciaccature, con relativi modificatori grafici e regole di interazione con il contesto musicale.

Le grace notes sono eventi musicali ornamentali: vengono eseguite in prossimità di una nota reale (la main) ma non concorrono al computo ritmico della misura.


1. Definizione

Una grace note è una nota ornamentale racchiusa tra parentesi quadre [ … ] e ancorata, in posizione adiacente a sinistra, a una nota reale detta main.

Una grace note:

  • non occupa tempo: la sua durata è grafica, non ritmica, e non contribuisce al riempimento della misura;
  • deve avere durata esplicita all’interno delle parentesi quadre;
  • non aggiorna il contesto musicale persistente: né la pitch né la durata di una grace note vengono memorizzate come riferimento per la deduzione degli eventi successivi (vedi neumaRk_specification.md §2.1).

2. Sintassi

Un blocco grace è costituito da una parentesi quadra aperta, da una sequenza di eventi grace separati da spazi, e da una parentesi quadra chiusa, immediatamente seguita — senza spazi — dalla nota main.

[ <grace> [<grace> …] ] <main>

2.1 Evento grace

Un evento grace è formato da:

  1. Pitch — obbligatorio, con la stessa sintassi delle note ordinarie (vedi neumaRk_notes_and_durations.md §2). È ammessa anche la forma di chord-stack <…>. L'inferenza dell'ottava ha per riferimento la pitch della main a cui il blocco è ancorato (la nota reale che segue ]), non il contesto musicale che precede il blocco — vedi §7.1.
  2. Durata — obbligatoria sul primo evento grace del blocco; sugli eventi successivi è opzionale e, se omessa, eredita dal valore precedentemente esplicitato nel blocco (vedi §3).
  3. Modificatori / e/o ^ — opzionali, ammessi solo sull’ultimo evento grace del blocco (vedi §4).

Esempi di eventi grace validi:

f#8        g16        <c e g>8       a16/^       g           f#/^

Negli ultimi due esempi la durata è omessa: viene ereditata dal valore esplicito della grace precedente nel blocco. Il primo evento di un blocco senza durata produce E009.

Non sono ammessi all’interno di un evento grace:

  • pause (rest);
  • annotazioni "…";
  • modificatori ! di forzatura accidente;
  • gruppi irregolari (t);
  • prolungamenti distanziati (. separato, ^ distanziato, ripetizione !).

2.2 Adiacenza con la main

La parentesi quadra di chiusura ] deve essere immediatamente adiacente alla nota main, senza spazi intermedi.

[f#8/^]c4        ✓
[f#8/^] c4       ✗  (spazio tra blocco grace e main)

In assenza di adiacenza, il blocco grace non viene riconosciuto come tale e produce W003 (vedi §8).


3. Durate ammesse e ereditarietà

I valori di durata ammessi per una grace note sono esclusivamente:

4    8    16

Non sono ammessi:

  • prolungamenti adiacenti (.);
  • moltiplicatori (* o x);
  • gruppi irregolari (t);
  • durata indeterminata (?).

Una grace note con durata non conforme produce E009.

3.1 Ereditarietà locale al blocco

La durata del primo evento grace del blocco è obbligatoria. Gli eventi grace successivi, se omettono la cifra di durata, ereditano il valore esplicitato per ultimo all’interno dello stesso blocco.

[f#8 g a]c4         ≡  [f#8 g8 a8]c4
[f#16 g8 a]c4       ≡  [f#16 g8 a8]c4       (a eredita 8, non 16)
[f# g8]c4           → E009 (primo evento senza durata)

L’ereditarietà è strettamente locale al blocco: non interagisce con il contesto musicale persistente (vedi §7) né attraversa il ]. Due blocchi grace consecutivi non condividono il valore: ognuno deve avere la propria durata esplicita sul primo evento.

Il valore ereditato viene preservato dal serializer in forma compatta (no cifra) per round-trip lossless del sorgente.


4. Modificatori grafici

All’interno della parentesi quadra sono ammessi due modificatori, posti in coda all’ultimo evento grace del blocco, in qualunque ordine:

  • /barrata: la grace viene resa graficamente con una barra obliqua sulla cediglia (acciaccatura);
  • ^legata: la grace è collegata alla main da una legatura grafica (slur). Riusa il simbolo ^ della legatura di valore (vedi neumaRk_notes_and_durations.md §6), in contesto grace.

I due modificatori sono combinabili: /^ o ^/ indicano una grace barrata e legata alla main, forma tipica dell’acciaccatura classica.

4.1 Vincolo di posizione dei modificatori

I modificatori / e ^ sono ammessi soltanto sull’ultimo evento grace del blocco. La loro presenza su un evento grace non finale produce E010.

[f#8 g8 a16/^]c        ✓
[f#8/]c                ✓
[f#8/ g8]c             ✗  (modificatore su grace non finale → E010)
[f#8/ g8/^]c           ✗  (idem)

5. Cardinalità del blocco

Un blocco grace deve contenere almeno un evento grace e al massimo quattro.

  • Blocco vuoto []E011.
  • Blocco con più di quattro eventi grace → E012.
[f#8]c                       ✓  (1 grace)
[f#8 g8 a16 b16/^]c          ✓  (4 grace, ultima con modificatori)
[f#8 g8 a16 b16 c16/^]c      ✗  (5 grace → E012)

6. Ancoraggio alla nota main

Il blocco grace deve essere seguito, in posizione adiacente, da una nota reale (pitch o chord-stack), che ne costituisce la main.

La nota main:

  • è una nota ordinaria a tutti gli effetti, soggetta alle normali regole di deduzione di pitch e durata (vedi neumaRk_notes_and_durations.md);
  • è l’evento ritmicamente rilevante al quale la grace è graficamente e musicalmente subordinata.

6.1 Blocco grace senza main

Un blocco grace non seguito da una nota main valida (es. ultimo evento della misura o del datapack, oppure seguito da pausa, barlinea, marker strutturale) viene ignorato dal parser e produce W004.

| c4 d4 e4 [f#8/^] |       → grace ignorata, W004
| c4 d4 e4 [f#8/^] r |     → grace ignorata, W004 (main non può essere rest)

7. Effetto sul contesto musicale

Una grace note non altera il contesto musicale persistente:

  • la pitch di una grace non viene memorizzata come ultima pitch esplicita ai fini della deduzione delle pitch successive;
  • la durata di una grace non viene memorizzata come ultima durata esplicita ai fini della deduzione delle durate successive.

Esempio (in 4/4):

c4 [f#8/^]c [f#8/^]c8 c4.
  • c4 — main esplicita, contesto: pitch=c, durata=4.
  • [f#8/^]c — grace f#8 ignorata ai fini del contesto; main c eredita durata 4 (ultima durata esplicita rimasta nel contesto).
  • [f#8/^]c8 — main c8 aggiorna il contesto a durata=8.
  • c4. — main aggiorna durata=4. (puntato).

Il contesto al termine della sequenza è coerente come se le grace non fossero mai state scritte.

7.1 Inferenza dell’ottava delle grace

La pitch di una grace deduce l’ottava rispetto alla pitch della main a cui il blocco è ancorato (la nota reale che segue ]), non rispetto al contesto musicale che precede il blocco. Le grace sono ornamentazioni della main e l’ottava più vicina è quella che le rende adiacenti al loro target visivo.

Esempio (treble, 4/4):

N) a [f8/^]g'
  • a — main, pitch a4.
  • g' — main della grace, pitch g5 (intervallo minimo da a4 porterebbe a g4; il modificatore ' aggiunge +1 ottava).
  • [f8/^] — grace f con riferimento g5: la f più vicina a g5 è f5 (un tono sotto), non f4 (che disterebbe una nona). Risultato: grace f5 → main g5, intervallo di seconda maggiore discendente.

All’interno del blocco grace, le ottave dei singoli eventi grace si calcolano in catena: il primo evento grace è ottava-inferito dalla main; i successivi sono ottava-inferiti dall’evento grace precedente nello stesso blocco (inferenza monodica standard intra-blocco). La chain del contesto della linea, invece, non attraversa il blocco: l’evento subito dopo la main eredita il contesto della main, non delle grace (vedi §7).


8. Rendering degli accidenti

Per la resa grafica degli accidenti, una grace note non aggiorna lo stato di propagazione della misura, ma lo influenza. Tre regole.

8.1 Accidente sulla grace

L’accidente viene disegnato sulla grace se e soltanto se la pitch della grace devia dalla matrice corrente della misura (cioè dalla key signature aggiornata dagli accidenti già occorsi nella misura prima del blocco grace).

In altre parole, il criterio è lo stesso che si applica alle main: la grace mostra un accidente quando suona "inatteso" rispetto allo stato visivo corrente.

Esempi (key signature: G major, F# in chiave; 4/4):

Contesto a sinistra Input grace Resa grafica della grace
(misura nuova) [f#8/^]c nessun accidente (F# coincide con chiave)
f4 (F♮) [f#8/^]g # (matrix=’f’→♮, la grace ne devia)
(misura nuova) [f8/^]c (F♮ devia da F# in chiave)
(misura nuova) [g8/^]c nessun accidente (G♮ coincide con chiave)
g#4 [g#8/^]c nessun accidente (matrix=’g’→# dopo g#4)

8.2 Rottura della propagazione dopo la grace

Una grace che devia dalla matrice corrente (cioè una grace che ha fatto disegnare un accidente per §8.1) rompe la propagazione degli accidenti per le main successive della misura aventi la stessa pitch-letter e ottava.

Concretamente, dopo una grace di questo tipo, ogni main successiva con stessa (lettera, ottava) deve riportare a video un accidente esplicito (#, b o ), anche se la matrice corrente coincide con la pitch.

Esempio (key signature: G major; misura in 4/4):

f4 [f#8/^]g4 f4

Resa grafica:

Evento matrix[‘f’][4] prima Accidente a video
f4 (F♮) 1 (F# da key sig) (devia dalla matrice). matrix → 0
[f#8/^]g4 0 (dopo f4) # sulla grace (devia, §8.1). matrix → 0
f4 (F♮) 0 (precauzionale, propagazione rotta)

Nota: la grace non aggiorna la matrice. La main f4 finale legge ancora matrix[‘f’][4] = 0 (lo stato lasciato dal primo f4); senza §8.2 non mostrerebbe alcun accidente. Il precauzionale è imposto dal "broken propagation" registrato dalla grace.

8.3 Indipendenza interna al blocco

All’interno di un blocco grace, ciascun evento grace è isolato rispetto agli altri ai fini del rendering: poiché nessuna grace aggiorna la matrice (§8.1 / regola implicita), tutte le grace del blocco vedono la stessa matrice di partenza, valutate indipendentemente l’una dall’altra.

Nota. Le regole di §8 riguardano esclusivamente la resa grafica. L’input neumaRk usa sempre pitch assolute: f denota F♮, f# denota F#, indipendentemente da contesto e key signature.


9. Esempi riassuntivi

Acciaccatura classica (barrata, legata):

N) c4 [f#8/^]c [f#8/^]c8 c4.

Appoggiatura semplice (non barrata, non legata):

N) c4 [f#8]c4

Appoggiatura legata, non barrata:

N) c4 [f#8^]c4

Cluster di grace (legatura sull’ultimo):

N) c4 [d8 e8 f8/^]g4

Grace con accordo:

N) c4 [<c e g>8/^]c4

10. Errori e warning

Codice Tipo Condizione
E009 error Durata grace mancante sul primo evento del blocco, oppure durata non conforme (ammesse soltanto 4, 8, 16)
E010 error Modificatore / o ^ su evento grace non finale del blocco
E011 error Blocco grace vuoto []
E012 error Blocco grace con più di quattro eventi grace
E013 error Pause non ammesse come evento grace (es. [r8]c)
W003 warning Blocco grace non adiacente a una nota main (spazio tra ] e main)
W004 warning Blocco grace senza nota main a destra; il blocco viene ignorato

Ulteriori condizioni di errore generali (pitch non valida, durata malformata, parentesi quadre non bilanciate, ecc.) ricadono sulle diagnostiche già definite per le note ordinarie.


11. Limitazioni note

In questa versione della specifica, le grace notes:

  • non ammettono articolazioni, dinamiche né annotazioni;
  • non ammettono pause (rest) come eventi grace;
  • non sono valide nelle righe di accordi (C)), né nelle righe di chord-rhythm: il costrutto [ … ] è riservato alle righe N).

Estensioni a questi vincoli saranno oggetto di versioni successive.