Note e Durate¶
Questo documento definisce la sintassi e la semantica delle note musicali in neumaRk: altezze (pitch), accidenti, durate, prolungamenti e meccanismi di deduzione implicita.
L’obiettivo è fornire una specifica deterministica, ma compatibile con la scrittura rapida in modalità informale.
1. Evento nota¶
Un evento nota è l’unità musicale atomica nella riga N) di neumaRk.
Ogni evento nota rappresenta un accadimento musicale puntuale nel tempo e contribuisce alla costruzione della sequenza ritmica e melodica del brano.
Un evento nota può specificare, in forma esplicita o implicita:
- un’altezza (pitch);
- una durata;
- modificatori di durata;
- modificatori di ottava;
- annotazioni;
- legature di valore.
Alcuni di questi elementi possono essere omessi, purché possano essere dedotti in modo deterministico dal contesto musicale persistente, secondo le regole definite in questo documento.
Continuità della deduzione¶
La deduzione di altezze e durate in neumaRk si basa sull’ultimo valore esplicito incontrato nell’intero documento, e non è limitata al singolo rigo di note o al singolo datapack.
All’inizio di un nuovo datapack musicale, il riferimento per la deduzione delle altezze e delle durate è l’ultimo evento nota del datapack precedente, se presente.
In assenza di qualunque riferimento precedente (ad esempio all’inizio del brano), la deduzione utilizza i valori di default definiti dalla specifica, oppure fallisce nei casi in cui non sia possibile una deduzione deterministica.
1.1 Struttura sintattica dell’evento nota¶
Un evento nota è costituito da una sequenza ordinata di elementi adiacenti, senza spazi intermedi.
L’ordine degli elementi è fisso e deve essere il seguente:
- Legatura alla nota precedente (
^), opzionale - Altezza (pitch), opzionale perché deducibile
- Forzatura di accidente (
!), opzionale
(ammessa solo se l’altezza è esplicitamente indicata) - Modificatori di ottava, opzionali
(ottave relative tramite'o,, oppure ottava assoluta) - Durata, opzionale
- durata esplicita (numero potenza di 2, con eventuali punti o moltiplicatori);
- indicatori di tuplet;
- oppure
?per durata sconosciuta - Annotazioni, opzionali, fra doppi apici
- Legatura alla nota successiva (
^), opzionale
Tutti gli elementi che compongono un evento nota devono essere adiacenti. La presenza di uno spazio separa eventi nota distinti.
Gruppi fra parentesi tonde
(…). Oltre alla durata esplicita in lista (r(…), suffisso) e al cambio di chiave ((@…), prefisso), un evento nota può portare gruppi(…)aggiuntivi che ne specificano la testa o un glissato ornamentale. Il loro significato si determina per contenuto e posizione: vedi la regola unica in §11. Al massimo per nota: una chiave (prefisso), un glissato-in (prefisso), un notehead (suffisso), un glissato-out (suffisso).
Un evento nota può omettere uno o più elementi secondo le regole di deduzione definite in questo documento, ma l’ordine relativo degli elementi non può mai essere alterato.
Eventi nota costituiti da un singolo simbolo¶
È ammesso un evento nota costituito esclusivamente da un singolo simbolo, senza indicazione esplicita di pitch o durata, purché esista un contesto musicale precedente valido.
I seguenti simboli possono costituire da soli un evento nota valido:
- Modificatori di ottava (
'o,) - Legatura di valore (
^)
In tali casi, l’evento nota:
- eredita il pitch dall’evento nota precedente;
- eredita la durata dall’evento nota precedente;
- applica esclusivamente la semantica del simbolo indicato.
In particolare:
- un evento costituito da
'o,modifica l’ottava del pitch ereditato; - un evento costituito da
^prolunga la nota precedente dello stesso valore.
Un evento nota costituito da un singolo simbolo è valido solo se pitch e durata possono essere dedotti in modo deterministico dal contesto. In assenza di tale contesto (ad esempio all’inizio del brano), l’evento non è valido.
2. Pitch (altezza)¶
2.1 Sintassi di base¶
Un pitch è espresso come:
<nota>[alterazione][ottava]
Dove:
nota∈{a b c d e f g}alterazione∈{#, b}(opzionale, anche doppi)cambio di ottava(opzionale, vedi il prossimo paragrafo)
Esempi:
c d# fb g##
2.2 Ottave relative¶
Il calcolo dell'ottava viene fatto in base all'altezza della nota precedente, considerando l'intervallo meno ampio da essa.
Esempi:
f4 bb f c
Il carattere ' subito dopo l'altezza della nota, ne sposta l'ottava in senso ascendente.
Il carattere , subito dopo l'altezza della nota, ne sposta l'ottava in senso discendente.
Esempi:
f4 bb, f' c'
Sono permessi più segni consecutivi per il cambio di ottava.
Esempi:
a,4 g''' a,,,
All'inizio del brano (o all'inizio di uno stave, in un datapack
multi-rigo) l'altezza di orientamento è la nota marcata dalla
chiave di partenza: chiavi in G usano un riferimento g, chiavi
in F un riferimento f, chiavi in C un riferimento c.
In dettaglio, per le chiavi previste da neumaRk:
| Chiave | Notazione | Riferimento |
|---|---|---|
| violino | (@G) |
g4 |
| violino 8va alta | (@G8va) |
g5 |
| violino 8va bassa | (@G8vb) |
g3 |
| soprano | (@C1) |
c4 |
| mezzo-soprano | (@C2) |
c4 |
| contralto | (@C3) |
c4 |
| tenore | (@C4) |
c4 |
| baritono (variante in do) | (@C5) |
c4 |
| baritono (variante in fa) | (@F3) |
f3 |
| basso | (@F) o (@F4) |
f3 |
| basso 8va bassa | (@F8) o (@F8vb) |
f2 |
Solo la chiave dichiarata all'inizio (del brano o del rigo) determina il riferimento di orientamento. Un eventuale cambio di chiave successivo (vedi §9) modifica la chiave grafica e la resa visiva delle note, ma non altera il riferimento usato per il calcolo delle ottave relative.
2.3 Ottave assolute¶
È comunque possibile affermare l'ottava assoluta di una nota aggiungendo
il carattere @ seguito dal numero dell'ottava (4 per il do centrale)
e dal carattere _. La numerazione è quella scientifica: C-1 è il
MIDI 0, C9 è il MIDI 120; il range pratico utile è circa -1..9.
Esempi:
c@4_8. g@3_2
La durata è obbligatoria quando si usa
@<n>_: il_funge da separatore tra il numero d'ottava e il valore di durata, ed è privo di significato senza un valore che lo segua. Una scrittura comec@4_(senza durata) produce errore E008.
'/, restano ammessi come "nudge" sopra l'ottava assoluta — c@4_'
equivale a C5, c@4_,8 equivale a C3 da ottavo. Sono sconsigliati
perché ridondanti: usare direttamente c@5_ / c@3_8.
Dopo una nota con ottava assoluta, l'inferenza per gli eventi successivi
riparte da quella nota come last_pitch standard (intervallo minimo
via DIATONIC_MATRIX, come in §2.2).
Ottava assoluta in chord-stack <…>
Dentro un chord-stack, l'ottava assoluta è ammessa soltanto sulla prima pitch, nella forma:
<a@4_ c>4
Vincoli obbligatori:
- il
_che chiude@<n>_sulla prima pitch è obbligatorio (è il separatore richiesto dalla notazione); - la durata dell'accordo dopo
>è obbligatoria (es.>4). La durata vive fuori dalle graffe e si riferisce a tutto l'accordo; omettendola si ricade nello stesso errore E008 del caso monofonico, perché internamente il token viene riformulato comea@4_4(prima pitch + durata) e quel_resta senza un valore numerico che lo segua.
Le pitch successive del chord-stack (le "extras") accettano per ora
solo notazione relativa: la loro ottava è inferita per intervallo
minimo a partire dalla pitch primaria (vedi §2.2). Una scrittura
come <a@4_ c@5_>4 non è supportata; vedi backlog per estensione
futura agli extras.
2.4 Pitch implicito¶
Se una nota non specifica un pitch, essa erediterà l'ultimo
pitch incontrato nel parsing; se nessun pitch è ancora stato
visto, si usa il riferimento di orientamento iniziale definito
in §2.2 (g4 per chiave di violino, f3 per chiave di basso,
c4 per chiavi in do, ecc.).
Esempio:
f4 8 8 g 4 8
2.5 Accidenti forzati¶
Il carattere ! immediatamente dopo il pitch forza la visualizzazione dell’accidente, anche se sarebbe implicitamente deducibile dalla tonalità.
Esempio:
f#!8
Questo indica che l’accidente # deve essere mostrato graficamente.
2.5.1 Propagazione degli accidenti entro la misura¶
Un accidente, una volta mostrato, propaga secondo la convenzione standard
fino alla fine della misura. La regola è modellata da una matrice
[lettera][ottava] che memorizza l'inflessione attiva per ogni coppia
lettera+ottava; la matrice è inizializzata dalla tonalità all'inizio di ogni
misura (e di ogni rigo).
- Una nota mostra il proprio simbolo di accidente solo se la sua inflessione
differisce dal valore corrente in matrice per quella lettera+ottava (oppure
se forzata con
!, §2.5); altrimenti nessun simbolo. Quando il simbolo è mostrato, la matrice viene aggiornata. - La propagazione è per-ottava: un accidente su
c(ottava 4) non influenzacdi un'altra ottava (c5). Ogni coppia lettera+ottava è indipendente. - Chord-stack (§2.6): ogni pitch dello stack è valutata singolarmente vs la matrice.
- Voce 2 (
N2): ha matrice di propagazione indipendente dalla voce 1. - Grace notes (precedono la main): sono valutate vs la matrice ma non la
aggiornano; se una grace devia dalla matrice, rompe la propagazione per
quella lettera+ottava → le main successive della stessa misura mostrano un
accidente esplicito anche se coincidono con la matrice (così il lettore non è
ingannato dall'inflessione introdotta dalla grace). Vedi
neumaRk_grace_notes.md §8.
2.6 Accordi impilati (chord-stack) <…>¶
Più altezze suonate insieme si scrivono fra parentesi angolari come un unico
evento: <p1 p2 …> seguito da una durata.
N) <c e g>4 . do maggiore tenuto per due quarti
N) <f c'> f bicordo + fa al canto
Sintassi interna. Le pitch dentro <…> sono separate da spazio; ognuna usa
la sintassi delle note (lettera + accidente + '/, per le ottave). Le ottave
si inferiscono a cascata: la prima pitch dalla nota precedente fuori dallo
stack, ciascuna successiva dalla precedente dentro lo stack (intervallo minimo,
§2.2). L'ottava assoluta è ammessa solo sulla prima pitch (§2.3).
Durata. Sta fuori dalle angolari, dopo > (<c e g>4), e vale per
l'intero accordo. Se omessa, l'evento eredita la durata dal contesto come una
nota normale (<c e g> .).
Un solo evento. Il chord-stack conta come un evento nell'allineamento
count-based con le righe A)/D)/L).
Legatura ^. Vale per l'intero evento; in resa lega i tasti corrispondenti
per indice (<c e>4^ <c e>4 → due legature).
Ancoraggio primario (regola normativa). L'evento successivo allo stack inferisce altezza e ottava dalla prima pitch dello stack, non dall'ultima. Internamente lo stack mantiene la cascata; verso l'esterno conta solo la primaria.
N) <c e g>^ <c e g> due accordi identici (senza la regola il 2º salirebbe d'ottava)
N) <f c'> f il 2º f resta all'ottava del primo f della triade
N) <f bb, d> f triade di Sib con fa al canto; f successivo = primo dello stack
Errori e limiti.
<>vuoto o<…non chiuso → E001 (token malformato).- Stack attaccato alla nota seguente senza spazio (
<c e g>e4) → E001; rimedio: aggiungere lo spazio. r(rest) es(spacer, §14) non sono validi dentro uno stack; attualmente sono ignorati in silenzio (candidato a un diagnostic futuro).
Il
>che chiude uno stack appartiene al token: non è mai una stanghetta né un'anacrusi (§7), anche quando è seguito da una pitch (<c e g> e4). Analogamente la|interna a un polychord[top|bottom]è il separatore del polychord, non una stanghetta (neumaRk_chords.md §7.2).
3. Durata¶
3.1 Durata esplicita¶
La durata può essere indicata subito dopo il pitch:
c4 d8 e16
I valori ammessi sono quelli standard della notazione musicale (unità con denominatore basato su potenze del 2): 1 => semibreve 2 => minima 4 => semiminima 8 => croma 16 => semicroma 32 => biscroma
3.2 Gruppi irregolari (tuplet)¶
Una durata può essere seguita dalla lettera t che indica un valore di tuplet.
Se non ci sono altri caratteri a completamento, s'intenderà un a tuplet con rapporto 3:2 (terzina).
Se la lettera t è seguita da n:n il gruppo irregolare sarà basato su quel rapporto (es 5:3, 7:8).
La seconda parte del rapporto può essere omessa nei casi più frequenti:
t4 equivale a t4:3
t5 equivale a t5:4
t7 equivale a t7:4
3.2.1 Eredità della ratio nel gruppo¶
Una nota senza marcatore di tuplet che segue una nota tuplet, mentre il
gruppo è ancora aperto (non ha raggiunto un ciclo completo del rapporto),
eredita la ratio del gruppo corrente (t_num:t_den). Solo la prima nota
del gruppo deve portare il marcatore; le successive lo ereditano fino a chiusura.
N) c8t d e | … # d, e ereditano la terzina 3:2 aperta da c8t
3.2.2 Gruppo irregolare incompleto a fine misura¶
Se a fine misura un gruppo irregolare resta aperto (la somma delle sue unità
non raggiunge un ciclo completo del rapporto), l'autofill lo completa con
pause della stessa unità di tuplet (lo stesso base_dur dell'ultima nota del
gruppo), finché il gruppo si chiude o la misura è piena.
- Se la chiusura riesce, nessun diagnostic (è il caso tipico del round-trip di una terzina completa il cui rest finale era stato omesso).
- Se l'autofill non riesce a chiudere il gruppo, viene emesso W002 («Tuplet not closed before measure end; auto-filled with 1/64 rests»).
3.3 Durata implicita¶
Se una nota non specifica una durata, valgono le seguenti regole, in ordine di priorità:
- se è l’unica nota della battuta, essa occupa l’intera durata della battuta;
- viene usata l’ultima durata esplicita incontrata nel contesto musicale;
- se è all’inizio del brano e non esiste alcun riferimento precedente,
la durata è considerata sconosciuta (
?).
La regola della nota unica che occupa l’intera battuta ha priorità superiore a tutte le altre forme di deduzione, incluse quelle basate sul contesto musicale persistente.
3.3.1 Riconciliazione con la durata della misura (algoritmo normativo)¶
Una volta attribuita a ogni evento una durata (esplicita o ereditata), la somma della misura può non coincidere con la durata del metro. La riconciliazione segue un algoritmo deterministico. Ogni evento è prima classificato:
- esplicito — durata scritta nell'evento. In anacrusi (§7) con più di una nota, tutti gli eventi sono trattati come espliciti (l'anacrusi non riempie la misura, quindi non si redistribuisce);
- sconosciuto — durata
?(§3.4); - implicito — durata ereditata dal contesto. Solo gli impliciti in coda (la sequenza di impliciti dopo l'ultimo esplicito) partecipano alla redistribuzione.
Invariante: le durate esplicite non vengono mai modificate dalla riconciliazione. Si toccano solo gli impliciti in coda, gli
?, o si aggiunge una pausa finale.
Caso A — nessun ? (tutte le durate note). Sia S la somma della misura e
M la durata del metro:
S ≈ M(entro tolleranza) → la misura è valida, nessuna azione.S > M(eccesso):- se esistono impliciti in coda e la durata ricalcolata
(M − S + somma_impliciti_coda) / numero_impliciti_codacade su un valore ritmico rappresentabile (potenza di 2 con da 0 a 3 punti) → redistribuzione silenziosa su quegli impliciti. Idioma tipico:c2 d ein 4/4 →d/eereditano la minima (totale 1½ semibrevi), vengono compressi a semiminime; - altrimenti è un eccesso reale → errore E005 (durata oltre il metro),
misura marcata non valida, troncamento delle note finali finché la misura
rientra, più un'eventuale pausa finale di riempimento. Copre sia l'eccesso
puramente esplicito (
4 4 4 4 4in 4/4) sia l'eccesso implicito non rappresentabile. S < M(difetto):- se una tuplet è rimasta aperta, viene prima completata (§3.2.2);
- poi la durata residua è riempita con una pausa finale. È autofill standard NRK: nessun diagnostic (il vecchio W001 è stato ritirato).
Caso B — misto (? insieme a durate note). La durata residua M − S è
ripartita equamente fra i soli eventi ? (vedi §3.4); non si aggiunge pausa
finale (gli ? assorbono il residuo).
3.4 Durata sconosciuta (?)¶
Indicando ? come durata, il valore è considerato indeterminato.
Il valore mancante per completare la misura viene ripartito equamente fra tutte le note con durata ?.
Esempio:
c? d? e?
in una misura di 4/4 individuerà una terzina di minime.
4. Prolungamenti di durata¶
N.B.¶
Il significato del punto (.) è specifico del contesto delle righe di note
e non coincide con quello utilizzato nelle righe di accordi.
Il carattere punto assume significati differenti a seconda della sua posizione adiacente o distanziata all'evento nota.
4.1 Punto adiacente¶
Un punto immediatamente adiacente al valore prolunga la durata della metà del valore precedente, come nella notazione standard:
g4.
4.2 Punto distanziato¶
Un punto separato da spazio prolunga la durata dello stesso valore, e può essere ripetuto:
g8 . .
g8 ..
individuerà una durata di tre crome.
Conta solo lo spazio dopo la nota, non fra i punti: entrambe le forme sono equivalenti.
4.3 Moltiplicatori¶
Un moltiplicatore esplicito può essere indicato come:
g16*5
g16x5
individuerà una durata pari a 5/16. Entrambe le forme sono equivalenti.
5. Ripetizione (!)¶
Il punto esclamativo (distanziato dall'evento nota) ripete la stessa nota e la stessa durata:
g8 !!!
Equivale a:
g8 g8 g8 g8
È possibile combinare . e !.
6. Legatura di valore (^)¶
Il simbolo ^ indica una legatura di valore (tie).
- se adiacente a un evento nota, subito dopo di esso, esso lega con la nota successiva
- se adiacente a un evento nota, precedendolo, esso lega con la nota precedente
- se isolato, equivale a un punto (
.) - se è l’unico segno nella battuta, lega con una nota che riempie la battuta
Accidenti attraverso la legatura. Una nota legata alla precedente segue due regimi rispetto alla propagazione (§2.5.1):
- continuazione naturale — stesso spelling (es.
eb ^eb): nessun simbolo di accidente (la legatura grafica esprime la continuazione), ma la nota semina comunque la matrice, così che note successive con la stessa lettera+ottava ma inflessione diversa mostrino l'accidente esplicito; - respelling enarmonico — lettera/inflessione diverse attraverso la legatura
(es.
eb ^d#): la seconda nota è trattata come una nota nuova e mostra l'accidente, perché è la prima volta che quella lettera compare nella misura.
7. Anacrusi¶
L’anacrusi (battuta in levare) è introdotta dal segno > come marcatore di
barline iniziale della prima misura:
N) > c8 d | e4 e e e | … # levare di due crome prima della misura 1
Regole:
- Dove vale.
>è anacrusi solo in una riga di note o accordi (C/N). InA)è accento, inD)decrescendo, inM)/L)testo (vedineumaRk_datapack.md §3.bisper il filtro di classificazione). Il>è riconosciuto come anacrusi solo se seguito da contenuto (pitch /</ barline), così un>finale d'accento non viene confuso. - Misura non contata. La misura d'anacrusi non entra nella numerazione delle misure.
- Durate esplicite. In una misura d'anacrusi con più di una nota, tutti gli eventi sono trattati come espliciti: l'anacrusi è parziale per definizione, quindi non si redistribuisce per riempirla (§3.3.1). Le durate implicite si calcolano solo in base all'ultimo valore esplicito ricevuto.
- Pausa di completamento all'inizio. Se la misura d'anacrusi è più corta della misura piena, la pausa di completamento è aggiunta in testa (non in coda), così gli eventi si allineano al tempo forte che segue.
7.1 Anacrusi di sezione (a metà brano)¶
L'anacrusi non è confinata all'inizio del brano: una sezione interna (tipicamente un Refrain dopo un Verse) può aprirsi in levare. In quel caso l'ultima misura della sezione precedente mostra i propri valori fino alle note del levare escluse, e la sezione nuova inizia con l'anacrusi.
Il caso si esprime con due marcatori distinti, uno per lato:
| Marcatore | Posizione | Riga su cui sta | Significato |
|---|---|---|---|
>>> |
in coda alla misura | nessun contenuto dopo | misura aperta: la misura non viene completata con la pausa di coda, perché un levare la completa più avanti |
> |
in testa alla misura | seguito da contenuto | levare entrante: come §7, ma ammesso come barline iniziale del primo datapack di una sezione, non solo del primo datapack del brano |
[Verse]
a b | c d | a2 r8 >>> # ultima misura del verse, lasciata APERTA
> || [Refrain] # Markers: `>` tiene vuota la colonna del levare
> g a b || c1 ... # Notes: `>` apre il levare g a b, poi battere c1
Regole:
-
>leading vs>trailing. Lo stesso segno è disambiguato dalla posizione, esattamente come §7 distingue l'anacrusi dall'accento:>seguito da contenuto (pitch /</|) è levare entrante;>>>non seguito da nulla è misura aperta (uscente). Il sigillo di coda è a forma fissa (>>>): il numero di>non ha significato. -
>>>esplicito, obbligatorio. La misura aperta richiede il marcatore>>>: senza, una misura corta riceve la normale pausa di completamento di coda (autofill standard). NRK non deduce l'apertura dal datapack successivo — ogni datapack resta auto-descrittivo, e il marcatore sopravvive a riordini/spostamenti delle sezioni. -
>>>è strutturale (propaga al system). La misura aperta>>>è alla stregua di un segno di misura / barline: è una proprietà del system, non della singola voce. È perciò sufficiente su un rigo del datapack per propagarsi a tutti gli altri, esattamente come le barline condivise (§4.1 dineumaRk_datapack.md). Non va replicato voce per voce. -
>entrante è per-riga. Il levare entrante>è invece per-riga (come §6.4 dineumaRk_voices.md): ogni voce porta il proprio. Sulle righe senza note (Markers, Chords) il>prenota la colonna del levare lasciandola vuota, così l'etichetta di sezione ([Refrain]) e la barra di battere si allineano alla prima misura reale e non sopra l'anacrusi. La grammatica lo consente già perché|conta come contenuto valido dopo>(> || [Refrain]). -
Numerazione. Il levare di sezione non è contato (come §7). La misura aperta che lo precede è contata normalmente: è una misura reale della sezione precedente, solo più corta.
-
Niente doppia pausa. A differenza dell'anacrusi iniziale (§7), il levare di sezione non riceve la pausa di completamento in testa: è la misura aperta che lo precede a fornire la rincorsa. La coppia (misura aperta + levare) è temporalmente contigua nel playback. Simmetricamente, la misura aperta non riceve la pausa di completamento in coda.
-
Nessuna validazione metrica. (Misura aperta + levare) sono presi così come scritti, anche se non sommano a una misura piena: nessun warning. Resta responsabilità dell'autore.
-
Senza misura aperta. Se la sezione precedente termina su una misura piena (nessun
>>>) ma quella nuova apre con>, il>si comporta come un'anacrusi §7 a sé stante (levare parziale con pausa di completamento in testa).>>>è ciò che lega i due lati; in sua assenza non c'è legame. -
Barre di sezione. NRK non impone la convenzione tipografica "doppia barra prima del levare": le barline (incluse
||) si collocano dove l'autore le scrive. La forma… || c1con la doppia barra sul battere è legittima.
Composizione con i lyrics. Il gruppo pickup
<…>del bloccoLYRICS)(neumaRk_lyrics.md §8.4.1) è la controparte testuale di questo levare: le sillabe pickup si appoggiano alle note del levare di sezione qui definito.
8. Annotazioni¶
Dopo una nota è possibile aggiungere, ad essa adiacente, un'annotazione testuale in due forme container, semanticamente equivalenti, che differiscono solo per la presenza del box grafico:
"<testo>"— forma primaria, senza box;[<testo>]— forma variante, con box.
c4"text" annotation senza box
c4[text] annotation con box
c4"$F1" fingering (prefisso riservato, vedi §8.1)
L'annotation ammette il markup testuale definito in
neumaRk_text_markup.md. Lo stile di default è plain, size ridotta,
in entrambe le forme.
8.1 Prefissi riservati¶
Se il primo carattere dopo l'apertura del container è $ seguito da
una lettera maiuscola riservata, il markup è disabilitato
sull'intera annotation: il contenuto è interpretato come direttiva
strutturale.
| Prefisso | Significato |
|---|---|
$F |
fingering |
$S |
string number |
Altri prefissi potranno essere definiti in estensioni future.
8.2 Disambiguazione con grace notes¶
In note-row il delimitatore […] è condiviso con il blocco grace
(vedi neumaRk_grace_notes.md). La disambiguazione è posizionale
rispetto al pitch adiacente:
| Pattern | Interpretazione |
|---|---|
[…]MAIN (nessuno spazio dopo ]) |
grace block |
PITCH[…] con whitespace o EOT dopo ] |
annotation con box |
PITCH[…]MAIN (nessuno spazio prima né dopo) |
grace block (priorità) |
[…] orfana (no pitch adiacente) |
W004 grace senza main |
Esempi:
c4[text] d4 annotation con box su c4 (spazio dopo `]`)
c4 [d8/^]e4 grace block ancorato a e4
c4[d8/^]e4 grace block ancorato a e4 (priorità grace)
c4 [text] d4 quadre orfane → W004 (grace ignorato)
Per evitare ambiguità in casi limite, è raccomandato usare la forma
primaria c4"text" per le annotation: il delimitatore "…" non
collide con il blocco grace.
9. Cambio di chiave¶
La chiave di default è quella di violino. Si può definire un cambio chiave con le notazioni:
(@G)per la chiave di violino(@C1)per la chiave di soprano(@C2)per la chiave di mezzo-soprano(@C3)per la chiave di contralto(@C4)per la chiave di tenore(@F3)oppure(@C5)per la chiave di baritono(@F)oppure(@F4)per la chiave di basso(@G8va)per la chiave di violino all'ottava acuta(@G8vb)per la chiave di violino all'ottava bassa(@F8)oppure(@F8vb)per la chiave di basso all'ottava bassa
Il cambio di chiave si mantiene nel brano fino a una nuova definizione.
Disambiguazione con la tonalità. In un decoratore di battuta
(…)(vedineumaRk_datapack.md §7.1) possono comparire sia un cambio di chiave ((@F)) sia un cambio di tonalità ((F),(Dm)). Il prefisso@identifica la chiave: la direttiva di chiave è riconosciuta prima della tonalità, così(@F)non viene letto come tonalità di Fa.
In un datapack a più righi (vedi neumaRk_datapack.md §4), la chiave
dichiarata come primo token di una riga N) si applica al rigo
corrispondente. In assenza di direttiva, ciascun rigo eredita l’ultima
chiave definita nel proprio contesto.
10. notazioni non standard¶
Slash notation¶
Sul pentagramma, al posto delle note, vengono disegnati degli slash (barre oblique) in numero pari ai movimenti della misura. Esistono due modi per generarla:
1. Implicita (default). In una misura con armonia attiva, se la riga di note è vuota (senza neanche pause), la misura viene resa con slash notation. È armonia attiva: un accordo esplicito, un %, oppure un accordo che persiste da una misura precedente (cella d'accordo vuota, vedi neumaRk_chords.md §1.1). Una misura marcata NC (neumaRk_chords.md §1.2) non è armonia attiva: con riga di note vuota riceve una pausa, non slash.
2. Esplicita, con il costrutto /. Il simbolo / nella riga N) è un evento del linguaggio che genera slash notation. Può essere usato da solo per riempire l'intera misura, oppure mescolato a note: la sua durata è implicita (autofill) e occupa tutto lo spazio non coperto dalle altre note della misura.
Esempi (in 4/4):
N) a b c d | / | a b c d
N) a4 /
N) / a8 b
Regole.
- Al più un
/per misura (più d'uno produce errore E006). - Lo slash non accetta una durata: la sua durata è sempre quella residua della misura.
- Quando la regione slash inizia o finisce a metà di un movimento (es.
| a8 / |), viene aggiunta una pausa interna per chiudere il movimento parziale, e gli slash disegnati coprono i movimenti interi restanti (in| a8 / |in 4/4: 1 croma + 1 pausa-croma + 3 slash da un quarto). - Se dopo l'allineamento ai movimenti non resta spazio per almeno uno slash, il
/viene declassato a pausa (errore E007). - Una riga composta solo da
/(più barlines/punti/spazi) non richiede il prefissoN): viene riconosciuta automaticamente come riga di note. Es.| / | / | / | / |è già una valida riga di note.
Estensioni dell'evento nota (sigillate 2026-05-24)¶
Le sezioni §11-§13 sono normative e implementate end-to-end (Fasi 3.2-3.3). Stato/dettagli:
neumaRk_changelog.md §0.6. Impatto sulla classificazione basso:N)è il default sink della cascata (neumaRk_datapack.md §3.bis), quindi una riga con(x),(u-)…,{…}oR4cade in Notes senza toccare gli altri predicati ({}Rnon sono in nessun charset;Rmaiuscola è libera, i pitch sono minuscoli).
11. Teste di nota e glissato di nota (la regola delle parentesi (…))¶
In N) le parentesi tonde sono sovraccariche. Il significato di (…) legato a una
nota si determina per contenuto (e posizione prefisso/suffisso):
| Contenuto della parentesi | Significato | Posizione |
|---|---|---|
@… (es. @G) |
cambio chiave (§9) | prefisso/inline |
cifre / lista (es. 4, 16,8,8) |
ritmo esplicito (§3, anche r(…)) |
suffisso |
notehead-token x d t s /, oppure vuoto |
testa nota / nota fra parentesi (§11.2) | suffisso |
direzione+trattino u- d- u-- d-- |
glissato di nota (§11.3) | prefisso = in, suffisso = out |
Discrimine operativo: primo carattere + presenza del trattino finale. Caso
chiave: (d) = diamante (notehead); (d-) = glissato giù (il trattino marca il
glissato). Senza il trattino i due collidono.
Una nota può combinare gruppi-parentesi distinti (uno per concetto):
(u-)a2(x) = glissato-in-su corto + a2 + testa a croce; a2(x)(d-) = a2 testa
a croce + glissato-out-giù.
11.1 Le tre cose "slash" da non confondere¶
/standalone: slash-region ritmica (1 slash = 1 movimento, beat-aligned), vedi §10.(/): testa slash su una nota, all'altezza reale del pitch (§11.2).{…}: notazione ritmica, slash centrata senza pitch (§12).
11.2 Teste di nota (noteheads)¶
Implementato end-to-end (Fase 3.2). Stato/dettagli:
neumaRk_changelog.md §0.6.
Suffisso (…) su una nota, insieme chiuso:
| Forma | Testa |
|---|---|
(x) |
croce |
(d) |
diamante |
(t) |
triangolo (orientamento unico; varianti su/giù rinviate) |
(s) |
quadrato |
(/) |
slash (testa rhythm all'altezza del pitch) |
() (vuote) |
nota fra parentesi (editoriale / ghost) |
N) a2(x) b2(/) c2() d2(d)
- Chord-stack:
<c e g>(x)applica la testa a tutte le pitch dello stack. - Un solo notehead per nota.
Overload posizionale: dentro
()la letteratè triangolo; fuoritè il marcatore tuplet (8t, §3.2); inA)è il gruppetto. Disambigua la posizione dentro/fuori parentesi (regola §11). Idemd(fuori da()non è notehead). Pers: dentro()è la testa quadrata; fuori, come token-pitch a sé, è lo spacer (§14).
11.3 Glissato di singola nota (scoop / fall / doit / plop)¶
Implementato end-to-end (Fase 3.2b). Stato/dettagli:
neumaRk_changelog.md §0.6. Co-locabile con i noteheads (a(x)(d-)).
Glissato ornamentale in entrata o uscita da una nota (diverso dal glissato fra
due note, che vive in A) come gl — neumaRk_articulations.md §9).
- direzione:
u(su) /d(giù); lunghezza:-corto,--lungo; - in/out dalla posizione: prefisso = in, suffisso = out;
- il trattino marca il glissato (lo distingue dal notehead, §11).
| Scrittura | Significato | Nome jazz |
|---|---|---|
(u-)a |
gliss IN su, corto | scoop |
(d-)a / (d--)a |
gliss IN giù | plop / drop |
a(u-) |
gliss OUT su, corto | doit / lift |
a(d-) / a(d--) |
gliss OUT giù | fall (corto / lungo) |
N) (u-)a2 a8 a(d--) | (d-)a a(u-)
12. Notazione ritmica {…}¶
Implementato end-to-end (Fase 3.2c). Stato/dettagli:
neumaRk_changelog.md §0.6.
Un gruppo {…} è reso come notazione ritmica: teste slash centrate sul
rigo, senza altezza. { e } sono delimitatori nuovi in NRK.
N) a4 r | b4 {8 8 16 16 8 4}
- Contenuto: solo durate (niente pitch); rest ammessi (
{8 8 r8}→ glifi di pausa) e spacer ammessi ({8 8 s8}→ posizione ritmica saltata, nessuna testa, §14). L'altezza è sempre centrata. - Notehead di default = slash. Override col suffisso notehead di §11.2:
{8 8 16}(x)= teste a croce. - Solo le note dentro le graffe sono rese come rhythm notation; il resto della misura è normale.
- Tuplet ammessi dentro
{…}(es.{8t 8t 8t}); marcatore tuplet non valido → warning W007.
13. Pausa multi-misura (MMR) RN¶
Implementato end-to-end (Fase 3.3): parse, validazione span-vuoto (W008), playback ×N, glifo MMR dedicato e rinumerazione +N. Stato/dettagli:
neumaRk_changelog.md §0.6.
RN (es. R4) rende una pausa multi-misura di N battute: un'unica cella
che vale N misure, col conteggio misure che avanza di N. Resa: glifo MMR standard
(barra spessa) col numero N sopra. R è maiuscola (libera in N), dove i
pitch sono minuscoli). Richiede N ≥ 2 (R1 = pausa di battuta singola,
ridondante → pausa normale). (Forma Rx4 scartata: si usa RN, coerente con
%N.)
13.1 Quando si usa (condizione di span vuoto)¶
Le stanghette sono condivise dal sistema: non si collassa un rigo mentre se ne
mostra un altro. Quindi un MMR si rende solo se l'intero span è vuoto a livello
di sistema — tutte le voci/stave a riposo e accordi vuoti. È utile
esattamente in due casi: (a) singolo staff/voice con span vuoto; (b) più
staff/voices tutti RN allineati sullo stesso span (incluso il doppio rigo
pianistico a riposo).
C) A | | B # accordi vuoti sullo span centrale
N) a | R4 | b # → MMR di 4 battute; conteggio misure +4
Se sullo span c'è qualsiasi contenuto (accordi, note di un'altra voce, marker),
RN non è lo strumento: warning e degrado a N pause per-battuta (si scrivono
direttamente pause normali).
Corollario: poiché
RNvive solo in span uniformemente vuoti, non esiste mai un'altra parte con contenuto da allineare in quello span → nessuna macchineria "espandi-per-allineare".
13.2 RN ≠ collasso in estrazione¶
Vanno tenuti separati:
RN= "voglio un MMR qui, in questa vista" (notazione esplicita, span vuoto).- Collasso in estrazione = automatico: estraendo una parte singola da uno
score multi-parte, le battute vuote di quella parte collassano in MMR senza
notazione speciale (si scrivono pause normali). È feature futura (arriva con
l'estrazione parti);
RNsu span vuoto è invece implementabile da subito. La scelta "nella parte gli accordi si omettono" è un'impostazione di estrazione, non un marcatore MMR.
13.3 Regole di confine (resa)¶
- Solo battute intere: se la parte entra a metà battuta, le battute intere vanno in MMR e il mezzo-tempo ai bordi resta pausa normale.
- Lo span si spezza a: cambio di sistema (line break), doppia stanghetta,
ritornello
:|/|:, cambio di tonalità/metro/tempo, lettera di prova. Es.R8con un cambio di tonalità a metà → due MMR.
14. Spacer — pausa invisibile (s)¶
Implementato end-to-end (2026-05-27): parser, classificazione, serializer, render (GhostNote) e playback. Vedi
neumaRk_changelog.md §0.6. Impatto sulla classificazione basso: come perr, una riga di soliscade nel default sinkN)(neumaRk_datapack.md §3.bis, TB1 esteso as).
Lo spacer è un evento che occupa durata esattamente come una pausa
(r), ma non rende alcun glifo: avanza il tempo metrico senza disegnare
nulla sul rigo. È mutuato dal costrutto omonimo di LilyPond. Serve a riservare
spazio metrico senza segno grafico: allineare per colonna una seconda voce o le
sillabe (L)), lasciare "vuoti" pilotati in una misura, posizionare un'unica
annotazione su un punto del tempo senza pausa visibile.
14.1 Sintassi¶
s è un token-pitch speciale (come r): sostituisce l'altezza e accetta
tutta la grammatica di durata di una pausa.
| Forma | Significato |
|---|---|
s |
spacer di durata implicita (eredita dal contesto, §3.3) |
s4 s8 s16 |
durata esplicita (§3.1) |
s4. s2.. |
punto adiacente (§4.1) |
s8 . . |
punto distanziato (§4.2) |
s4t s8t5 |
dentro un tuplet (§3.2) |
s16*5 s16x5 |
moltiplicatore (§4.3) |
s !!! |
ripetizione (§5) |
N) c4 s4 e4 s4 # due eventi reali alternati a due spacer da un quarto
N) s2 g2 # primo tempo "vuoto" (invisibile), poi g da minima
14.2 Semantica¶
Lo spacer è indistinguibile da r per: durata, conteggio della misura,
autofill (§3.3.1) e playback (silenzio — evento non udibile). L'unica
differenza è la resa grafica.
r (pausa) |
s (spacer) |
|
|---|---|---|
| Resa | glifo di pausa | nessun glifo |
| Durata / metro | conta | conta (identico) |
| Playback | silenzio | silenzio (identico) |
| Classificazione riga | Notes | Notes |
Misura interamente di spacer. La misura appare otticamente vuota ma il tempo avanza normalmente. Non si applica la pausa-di-misura di riempimento (whole rest) né la slash notation riservata alle misure armoniche vuote (§10): lo spacer è una scelta esplicita di "niente segno".
14.3 Restrizioni¶
Lo spacer non ha altezza né presenza grafica, quindi non accetta i modificatori che presuppongono una nota o un ancoraggio visivo. In tutti i casi seguenti il modificatore è ignorato con warning W009:
| Scrittura | Esito |
|---|---|
^s / s^ |
nessuna legatura: lo spacer non lega (§6). Per prolungare, usa la nota reale o r |
s"…" / s[…] |
nessuna annotazione (§8): manca l'ancora visiva |
s(x) (u-)s |
nessun notehead/glissato (§11): riservati alle note reali |
Inoltre, per simmetria con r:
- Chord-stack
<…>:sal suo interno non è valido, ignorato in silenzio (§2.6). - Grace block:
snon ammesso come evento grace → E013 (comer,neumaRk_grace_notes.md).
14.4 Niente forma multi-misura¶
Non esiste uno spacer multi-misura (SN non è definito): la S maiuscola è
il marcatore d'intestazione Style (neumaRk_header.md), e una MMR (§13) è per
definizione una pausa visibile. Per saltare N misure in modo invisibile si
ripete s misura per misura.
15. Regole di deduzione (riassunto)¶
- pitch o durata omessi vengono dedotti dal contesto
- la deduzione non deve mai produrre ambiguità semantica
- in caso di conflitto, prevale sempre la sintassi esplicita
Questo documento definisce il livello atomico della notazione musicale in neumaRk.