Vai al contenuto

Accordi

Questo documento definisce la sintassi e la semantica degli accordi in neumaRk, inclusi:

  • dizionario delle sigle ammesse
  • normalizzazione delle varianti
  • gestione del basso
  • ritmo degli accordi (implicito, esplicito, misto)
  • accordi opzionali
  • polyaccordi (polychord)

Gli accordi sono contenuti nelle righe C) e possono essere utilizzati per determinare sia l'armonia che il suo aspetto ritmico.


1. Evento accordo

Un evento accordo è un’unità armonica che può avere:

  • una sigla di accordo
  • un basso opzionale, oppure solo un basso
  • una durata (implicita o esplicita)
  • modificatori di durata

Un evento accordo può anche rappresentare:

  • una pausa (r)
  • un ribattuto (!)
  • un polyaccordo (due sigle sovrapposte verticalmente, vedi §6)

Ogni evento accordo in neumaRk è un’entità ritmica autonoma, con durata implicita o esplicita.

Un accordo può includere un basso esplicito nella forma di slash chord (es. A/B), oppure consistere esclusivamente di un basso (es. /B).

In entrambi i casi, l’evento è soggetto alle stesse regole ritmiche degli altri accordi.

1.1 Persistenza dell’armonia (cella vuota)

Una misura di accordi vuota — priva di sigle, di % e del token NC (§1.2) — non rappresenta un vuoto armonico: l’armonia della misura precedente persiste. Il contenuto armonico vigente viene ri-realizzato sul battere della misura vuota (ri-attacco, con la stessa logica di %), non sostenuto come una legatura.

La persistenza:

  • si propaga su più misure vuote consecutive;
  • attraversa i confini di datapack, coerentemente col contesto musicale persistente (neumaRk_specification.md);
  • si interrompe su un evento NC (§1.2) e riprende solo dal successivo accordo esplicito.
C) C |   |   F

Le misure 1 e 2 portano l’accordo C; la misura 3 porta F. Sopra le misure persistenti non viene disegnato alcun glifo: il rigo accordi resta pulito.

Resa sul rigo di note. Se la riga N) di una misura persistente è vuota, la misura è resa in slash notation (c’è armonia attiva da accompagnare): vedi neumaRk_notes_and_durations.md §10 → Slash notation.

Dentro le versioni. L’armonia che permane è contesto, quindi attraversa una regione %%NAME con la regola degli altri contesti (neumaRk_versions.md §4.1.1): ogni alternativa parte dall’armonia in vigore all’ingresso della regione, e la misura dopo %%end eredita quella con cui finisce il blocco canonico — non quella del blocco selezionato. Così il resto del brano si legge allo stesso modo per tutti.

1.1.1 Continuazione parziale (. iniziale)

Quando una misura inizia con un punto . (prima di qualsiasi sigla), il punto è una continuazione dell’armonia persistente: ri-attacca l’armonia vigente (§1.1) solo per il proprio slot, lasciando il resto della misura agli accordi che seguono. È l’estensione, a livello di slot, della persistenza di cella vuota. (Distinto dal . che segue un accordo nella stessa misura, che ne prolunga la durata: vedi §4.)

C) A7 DM |   | . GM

Nella misura 3 il primo tempo continua DM — l’armonia attiva, ereditata dalla misura 1 attraverso la cella vuota della misura 2 — e il secondo tempo porta GM. L’armonia risultante equivale a notare A7 DM | DM | DM GM.

Più punti iniziali (. .) estendono la continuazione su più slot. Se l’armonia non è attiva (inizio del brano, o dopo NC), un . iniziale non continua alcuna armonia. Sul rigo accordi il punto di continuazione non disegna alcun glifo.

1.2 Assenza di accordo (NC)

Il token NC (due lettere maiuscole, senza punti) dichiara l’assenza di armonia: interrompe la persistenza (§1.1) e indica che in quella misura non è attivo alcun accordo.

  • come unico contenuto della sua cella occupa l’intera misura;
  • non realizza alcun accordo (nessuna armonia attiva);
  • è renderizzato sul rigo accordi con il glifo dedicato N.C. (resa di riferimento, informativa: codepoint riservato U+EF62 dei font BravuraLS/PetalumaLS);
  • se la riga N) corrispondente è vuota, la misura non riceve slash notation ma una pausa (non c’è armonia da accompagnare).
C) C |  NC |  F

La misura 1 porta C; la misura 2 è senza accordo (con N.C. disegnato); la misura 3 porta F. Dopo un NC, una cella vuota resta senza accordo finché non compare un nuovo accordo esplicito.

1.2.1 NC su una frazione di misura

NC non deve riempire la misura: può convivere con altre sigle, e allora si comporta come un accordo — occupa il suo slot nella deduzione del ritmo (§4.1), accetta una durata esplicita (NC(4)), e stampa N.C. in quella posizione, non al centro della misura.

Come un accordo, permane: da lì in avanti non è attiva alcuna armonia finché non compare una nuova sigla esplicita — attraverso gli slot successivi, le misure successive e le celle vuote.

C) C-7 NC |  | F

C-7 vale i primi due movimenti; dal terzo non c’è più armonia, e la misura 2 (cella vuota) resta senza accordo invece di ereditare C-7. La misura 3 riparte da F.

Ne segue che vince l’ultimo evento armonico della misura:

Sorgente Dopo la misura
C-7 NC \| \| nessuna armonia nelle due celle vuote
NC C-7 \| \| C-7 persiste nelle due celle vuote

Sulla riga N), la slash notation implicita (§10 di neumaRk_notes_and_durations.md) resta una decisione per misura: una misura a nota-riga vuota riceve gli slash se l’armonia è attiva al suo inizio. Una misura non può essere mezza slashata.

1.3 Rest armonico (R)

Il token R (una lettera maiuscola) è il gemello muto di NC: dichiara l’assenza di armonia esattamente come NC — interrompe la persistenza (§1.1) — ma non disegna nulla sul rigo accordi. Usalo quando un passaggio non deve portare alcuna sigla di accordo (es. una sezione strumentale senza cifratura), anche quando un a-capo ristamperebbe l’armonia persistente.

  • come unico contenuto della sua cella occupa l’intera misura;
  • non realizza alcun accordo e ferma la persistenza, esattamente come NC;
  • se la riga N) corrispondente è vuota, la misura non riceve slash notation ma una pausa (non c’è armonia da accompagnare);
  • a differenza di NC, non disegna alcun glifo (niente N.C., niente sigla) — la cella resta vuota.

Quando usare quale: usa NC per dichiarare visibilmente "N.C."; usa R quando vuoi semplicemente non stampare alcuna sigla.

C) C |  R |  F

La misura 1 porta C; la misura 2 è senza armonia e senza sigla stampata; la misura 3 porta F. Dopo un R, una cella vuota resta senza accordo finché non compare un nuovo accordo esplicito.

1.3.1 R su una frazione di misura

R non deve riempire la misura: può convivere con altri token, e allora vale su una frazione. In quella posizione è un sinonimo della pausa accordale r (§4.3): partecipa alla deduzione del ritmo come qualunque altro evento e non porta alcun accordo per la sua durata. Ne segue anche la regola di resa: R nudo è implicito e non disegna nulla; R(…) è esplicito e disegna una pausa visibile nel ritmo accordale, esattamente come r(…).

C) > | R C-11(8^) | !(2.)

La misura 2 non porta alcuna sigla sui primi tre movimenti e mezzo; C-11 cade sull’ultima croma, legata alla misura successiva. È lo stesso allineamento che si otterrebbe con una sigla vera al posto di R, ma senza stampare quella sigla.

Forma canonica. R frazionario e r sono lo stesso evento: il round-trip riemette r, come per le altre normalizzazioni di sigla (§3). La differenza di semantica riguarda solo la misura intera: R da solo ferma anche la persistenza dell’armonia (sopra), r no.


2. Sigla di accordo

2.1 Struttura generale

La forma generale di una sigla è:

<root><quality>[<extensions>][/<bass>]

Dove:

  • root ∈ {A B C D E F G} con alterazioni opzionali # o b (massimo un'alterazione)
  • suffix identifica il suffisso dell'accordo
  • bass opzionale, indica un basso differente dalla root

Esempi:

C   Dm  GM  F#7alt   BbM13   C7/E

3. Dizionario degli accordi

La colonna "Normalizzazione" è la forma canonica sorgente — quella che scrivi e che il round-trip riproduce. Sul rigo, tre famiglie sono rese con i glifi jazz: diminuito °, semidiminuito ø, settima maggiore Δ (es. Co7→C°7, Ch→Cø, CM→CΔ). Questi glifi non sono input validi: digitarli produce E102.

3.1 Triadi

Input ammessi Normalizzazione
C C
Cm, C- C-
Co, Cdim Co
C+, C5+, Caug Caug
Csus2 Csus2
Csus4 Csus4
Cadd2, Cadd9 Cadd2
Cadd4 Cadd4

3.2 Accordi maggiori (4 o più suoni)

Input ammessi Normalizzazione
C6 C6
C69 C69
CM, CM7, CMaj7, Cmaj7, C7M CM
CM9, Cmaj9 CM9
CM13, Cmaj13 CM13
CM#11, CM7#11, Cmaj#11 CM#11
CM9#11 CM9#11
CM13#11 CM13#11
CM+, CM#5, CM7#5, C+M7 CM#5
CMadd4 CMadd4

3.3 Accordi minori

Input ammessi Normalizzazione
C-b6, Cmb6 C-b6
C-6, Cm6, C-69, Cm69 C-6
C-7, Cm7 C-7
C-9, Cm9 C-9
C-11, Cm11 C-11
C-13, Cm13 C-13
C-M, CmM, C-M7, CmM7 C-M
C-M9, CmM9 C-M9
C-M11, CmM11 C-M11
C-M13, CmM13 C-M13

3.4 Accordi di dominante

Input ammessi Normalizzazione
C7 C7
C9 C9
C13 C13
C7#11, C7b5 C7#11
C9#11 C9#11
C13#11 C13#11
C7b9 C7b9
C7alt C7alt
C7#5, C+7 C7#5
C7#9 C7#9
C13b9 C13b9
C7sus C7sus
C9sus C9sus
C13sus C13sus
C7susb9 C7susb9
C7add4 C7add4

3.5 Accordi diminuiti e semidiminuiti

Input ammessi Normalizzazione
Co7, Cdim7 Co7
CoM7, CdimM7, CoM CoM
Cm7b5, Ch Ch
Ch9, C-9b5 Ch9
Ch11, C-11b5 Ch11

3.6 Suffissi fuori dizionario

Il dizionario (§3.1–§3.5) è l'insieme dei suffissi riconosciuti. Le grafie della settima maggiore maj/Maj (Cmaj7, Cmaj9, Cmaj#11, …) e il 7 ridondante (M7/7M) sono canonicalizzate alla forma M (§3.2) — riconosciute, non warning. La canonicalizzazione maj→M vale però solo quando il suffisso inizia con maj (famiglia maggiore): il minore-maggiore e il diminuito-maggiore vanno scritti con le forme -M/mM (§3.3) e oM (§3.5); grafie come C-maj7/Cmmaj7 non sono in dizionario e ricadono in W103. Un suffisso davvero fuori dizionario (es. dom7) non rende il documento non valido: la sigla viene conservata (root + eventuale basso) ma il suffisso non ha resa significativa, e il parser emette il warning non-bloccante W103 (unrecognized chord suffix). Si tratta di un degrado best-effort, non di un errore: il flusso di parsing prosegue.

Le grafie del dizionario distinguono maiuscole e minuscole: Cmaj e CMaj sono la forma CM, ma CMAJ7, tutta maiuscola, non è una sigla. Il parser la spezza in token che non riconosce (E102) e ne conserva quel che può (CM seguita da A).


4. Ritmo degli accordi

N.B.

Il significato del punto (.) è specifico del contesto delle righe di accordi e non coincide con quello utilizzato nelle righe di note. Il carattere punto assume significati differenti a seconda della sua posizione distanziata dall'evento accordo o inserita nel contesto di durata.

4.1 Modalità implicita

In assenza di durate esplicite, il ritmo degli accordi è dedotto.

Principio:

  • gli eventi accordo in una misura sono contati
  • la durata della misura è suddivisa equamente
  • il punto (.) prolunga l’accordo della sua stessa durata

Esempi in 4/4:

| C Dm |
| C . . Dm |
| r C . Dm . D#o . Em |

In modalità implicita il ritmo non viene visualizzato, ma serve per l’allineamento.

4.1.1 Prolungamento esplicito con slash (/)

Il token / (barra, come token isolato) prolunga l’accordo precedente esattamente come il punto (.) — stessa durata, stessa suddivisione, stesso allineamento — con un’unica differenza: stampa uno slash sul movimento prolungato, anche in modalità implicita (dove il . resta invisibile). È lo strumento per esplicitare graficamente quale accordo tiene, e per quanti movimenti.

| C A B C . | e | C A B C / | sono musicalmente identici; il secondo disegna uno slash sul 4° movimento. Sono ammessi più slash consecutivi (Eb7 / /) e la combinazione con i punti nella stessa coda (C . /), ognuno contato come un’unità di suddivisione.

Esempi in 4/4:

C) | FM E7 Eb7 . |     // ambiguo: quale accordo dura due movimenti?

C) | FM E7 Eb7 / |     // esplicito: Eb7 tiene, slash sul 4° movimento

Uno / come primo token utile della misura è un continuation placeholder che eredita l’armonia persistente (§1.1), reso con lo slash.

Disambiguazione. Lo / di prolungamento è un token isolato (spazi o barline intorno, nessuna nota dopo). È distinto dallo / attaccato a una nota, che indica il basso di uno slash chord (A/B, Eb7/Bb) o un basso da solo (/B, §1): lì lo / è incollato alla pitch, qui è isolato. La disambiguazione è puramente posizionale, coerente con il resto della spec.

Il / non altera altezze, durata, trasposizione né armonia: è solo una differenza di resa grafica rispetto al . — un prolungamento a tutti gli effetti (round-trip preserva la forma / scritta).

4.1.2 Prolungamento esplicito con linea di tenuta (-)

Il token - (trattino, come token isolato) prolunga l’accordo precedente esattamente come il punto (.) e come lo slash (/) — stessa durata, stessa suddivisione, stesso allineamento — con un’unica differenza di resa: disegna una linea di tenuta orizzontale continua che copre i movimenti prolungati. È la notazione idiomatica per "l’accordo regge fin qui".

| C A B C . |, | C A B C / | e | C A B C - | sono musicalmente identici; il terzo disegna una linea sul 4° movimento. Un run di più - consecutivi (A - -) è reso come un unico tratto continuo (non trattini staccati) esteso su tutti i movimenti coperti. È ammessa la combinazione con punti e slash nella stessa coda (C . / -), ognuno contato come un’unità di suddivisione e reso secondo il proprio marchio.

Esempi in 4/4:

C) | FM E7 Eb7 . |     // ambiguo: quale accordo dura due movimenti?

C) | FM E7 Eb7 - |     // esplicito: Eb7 regge, linea sul 4° movimento

C) | A C - - |         // C regge 3 movimenti, linea continua sugli ultimi due

Un - come primo token utile della misura è un continuation placeholder che eredita l’armonia persistente (§1.1), reso con la linea di tenuta.

Il - è usabile sia nella riga base C) sia nelle righe alternative C+ (dove la linea "regge" visivamente sopra la base).

Disambiguazione. Il - di prolungamento è un token isolato (spazi o barline intorno). È distinto dal - attaccato a una root, che indica un accordo minore (C-, F-7, §3): lì il - è incollato alla lettera, qui è isolato. C- è Do minore; C - (con spazio) è Do maggiore seguito da una linea di tenuta. La disambiguazione è puramente posizionale.

Il - non altera altezze, durata, trasposizione né armonia: è solo una differenza di resa grafica rispetto al . — un prolungamento a tutti gli effetti (round-trip preserva la forma - scritta).


4.2 Modalità esplicita

La durata di un accordo può essere indicata fra parentesi tonde:

C(4)   Dm(8.)   G7(16)   F(8t) !(8t) !(8t)   Bb(4)

La durata può contenere:

  • valore della nota (obbligatorio)
  • punti (.), modalità standard, aggiungono la metà del valore
  • t per terzina (tuplet 3:2)
  • moltiplicatori (*n)

Simboli speciali:

  • r → pausa
  • ! → ribattuto (ripete la durata, non la sigla)

La legatura ^ si scrive dentro le parentesi, dopo il valore: C(2^) lega l’accordo all’evento successivo, anche oltre la stanghetta. Scritta fuori dalle parentesi (C(2)^, C^) non è riconosciuta (E102) e la legatura si perde.

Con questa modalità di notazione, il ritmo degli accordi viene notato sopra al pentagramma.


4.3 Modalità mista

È possibile combinare modalità implicita ed esplicita nella stessa misura.

  • solo le durate esplicite vengono visualizzate
  • le altre sono dedotte
C   Dm(8^)

La pausa r segue le stesse regole di un accordo, sia per la deduzione del ritmo sia per la visualizzazione:

  • r (senza parentesi) è implicita: concorre alla deduzione come qualunque altro evento (la durata della misura, sottratte le durate esplicite, è suddivisa equamente fra gli eventi impliciti, considerando anche i punti .) e non viene disegnata nel rhythm-row;
  • r(...) (con parentesi) è esplicita e viene disegnata come pausa visibile sopra al pentagramma.

Esempio — anticipo di croma su misura altrimenti vuota:

r EbM(8^) | EbM

rende solo l'ottava di anticipo legata a EbM della misura successiva, senza pause visibili a riempire la prima misura. Equivale, per posizionamento e ritmo, a quanto già si ottiene con un accordo implicito al posto di r (Gm EbM(8^)), con la differenza che qui non c'è alcuna sigla all'inizio della misura.

Resa di riferimento (informativa). La resa di riferimento non applica la soppressione a un evento implicito (accordo o r) che cade dentro un gruppo irregolare del ritmo d'accordi: lì l'evento è disegnato (la r come pausa, l'accordo come testa-ritmo). È una deviazione della resa, non una regola di notazione: la durata e il ritmo dell'evento non cambiano.

Sempre nella resa di riferimento, su una riga che porta ritmo d'accordi una sigla senza durata propria (né (…) né membro di una lista compatta, §4.4) scende al livello delle teste-ritmo, nello spazio libero della sua colonna: le sigle col proprio ritmo restano in alto, quelle senza stanno più vicine al rigo. Fa eccezione la sigla implicita dentro un gruppo irregolare, che ha la sua testa-ritmo disegnata (paragrafo precedente) e resta in alto con le altre sigle del gruppo. Ogni sigla che sta sopra la parentesi o il numero di un gruppo irregolare del ritmo d'accordi sale quanto basta per non toccarli (C) | F(8t) Bb G(8t) C(2.) |: F, Bb e G sopra il "3", C resta alla sua altezza).


4.4 Lista compatta di durate

Quando lo stesso accordo si protrae su più figure ritmiche, invece di ripetere ! per ogni continuazione si può usare una lista di durate separate da virgola dentro le parentesi:

D/Eb(16,8,8,16,16,r16,16,16)

è la forma compatta, equivalente a:

D/Eb(16) !(8) !(8) !(16) !(16) r(16) !(16) !(16)

Regole:

  • ogni segmento ammette valore, valore. (puntato), valore.., valore..., valoret (terzina);
  • un segmento può iniziare con r per inserire una pausa interna (es. r16): l'accordo si interrompe per quella durata e poi riprende con il segmento successivo;
  • il primo segmento non può essere r (la lista deve aprire con l'accordo): D(r16,8) è un errore;
  • *n (moltiplicatore) e ^ (legatura) non sono ammessi all'interno dei segmenti, solo nella forma single-rhythm (valore*n) o sul segmento finale del gruppo (vedi sotto);
  • spazi attorno alle virgole sono tollerati: D(16, 8, 8) è valido.

Legatura ^ su lista compatta. Il ^ sull'ultimo segmento, dentro la parentesi, lega quel segmento all'evento successivo, come una normale legatura di valore sull'ultima nota della misura:

D/Eb(16,8,8,16,16,r16,16,16^)   A
                           ↑
                           ultimo `16` legato ad `A`

Resa visiva. La sigla D/Eb compare una sola volta sopra il pentagramma (ancorata al primo segmento). Sopra al pentagramma viene disegnato il ritmo dell'intero gruppo: la prima figura ha il nome dell'accordo, le successive sono continuazioni senza sigla (nessuna sigla ripetuta), eventuali r interni sono pause visibili.

Round-trip. Salvando e ricaricando, la forma compatta viene preservata: il file .nrk torna identico a quanto scritto.


5. Accordi opzionali

Una parentesi tonda aperta avvia un gruppo di accordi opzionali:

(C Dm G7)

Il gruppo può estendersi su più misure, includendo barline interne:

(FM F#-7 | B7 EM)

Le parentesi tonde sono renderizzate visivamente intorno al gruppo. Gli accordi al suo interno mantengono normale semantica ritmica e di allineamento con le altre righe del datapack.

Un gruppo opzionale può portare un comment-label (§8) attaccato alla parentesi di chiusura, senza whitespace intermedio:

(FM F#-7 | B7 EM)[Bill Evans changes]

Accordo facoltativo o tonalità. Una sigla nuda fra tonde ha la stessa forma di una tonalità ((Bb), (Dm), (F)). Decide la posizione (neumaRk_datapack.md §7.3): incollata alla barra o scritta prima della prima stanghetta è l'oggetto di contesto, cioè la tonalità della misura; staccata dopo la barra o dentro la misura è un accordo facoltativo.

C) (Bb) | Eb7 F |      // tonalità Sib (prima della prima stanghetta)

C) |(Bb) Eb7 F |       // tonalità Sib (incollata alla barra)

C) | (Bb) Eb7 F |      // accordo facoltativo Bb, poi Eb7 e F

6. Polyaccordi (polychord)

Un polyaccordo è un evento accordo costituito da due sigle sovrapposte, lette simultaneamente: una sigla superiore e una sigla inferiore, separate visivamente da una linea orizzontale.

Il polyaccordo è un evento armonico distinto dallo slash chord (§1):

  • slash chord (A/B) → un unico accordo A con basso B
  • polyaccordo ([A|B]) → due accordi indipendenti A e B sovrapposti

6.1 Sintassi

Un polyaccordo è racchiuso fra parentesi quadre, con il carattere | come separatore interno:

[<top>|<bottom>]

Dove:

  • top e bottom sono sigle di accordo valide secondo §2 (root, qualità, estensioni, basso opzionale)
  • le parentesi quadre [ ] sono obbligatorie
  • il separatore | è obbligatorio e compare esattamente una volta
  • non è ammesso whitespace interno

Esempi validi:

[D|EbM]            polyaccordo: D maggiore sopra EbM7
[CM7|F#-7]         polyaccordo con sigle estese
[D/F#|EbM]         top con basso esplicito (slash chord) sopra accordo semplice
[Am|G](8.)         polyaccordo con durata esplicita

Esempi non validi:

[D|EbM|F]          tre livelli non ammessi
[|EbM]             sigla superiore mancante
[D|]               sigla inferiore mancante
[D | EbM]          whitespace interno non ammesso

Un polyaccordo malformato dà E102 e degrada alle sigle riconoscibili che contiene, scritte una dopo l'altra ([D|EbM|F] → D EbM F).

6.2 Resa visiva

Il polyaccordo viene visualizzato come due sigle impilate verticalmente, separate da una linea orizzontale:

 D
───
EbM

La larghezza orizzontale riservata al polyaccordo è pari alla maggiore fra le due sigle.

6.3 Durata e ritmo

Il polyaccordo è un singolo evento accordale ai fini del ritmo. Tutte le regole di §4 si applicano al polyaccordo come a qualunque altro evento:

  • durata implicita: il polyaccordo conta come un solo evento nella suddivisione della misura
  • durata esplicita: la parentesi tonda segue le parentesi quadre, es. [D|EbM](4)
  • ribattuto (!) e ripetizione (.) operano sull’intero polyaccordo
C) | [D|EbM] . . [F|G7] |     // polyaccordo ripetuto tre volte, poi cambio

C) | [D|EbM](2) [F|G7](2) |   // due polyaccordi, durata esplicita

6.4 Trasposizione

In trasposizione, entrambe le sigle del polyaccordo vengono trasposte indipendentemente secondo le regole del singolo accordo.

6.5 Limiti

  • numero di livelli: esattamente 2 in neumaRk 0.6; estensioni a N livelli sono fuori specifica
  • annidamento: un polyaccordo non può contenere a sua volta un altro polyaccordo
  • gruppo opzionale: un polyaccordo può comparire dentro un gruppo ( … ) di accordi opzionali (§5)

7. Accordi alternativi (C+)

Il marker di riga C+ introduce una riga di accordi alternativa alla riga base C): armonie che il lettore può usare al posto di quelle base in date posizioni — tipicamente le changes per gli assoli.

7.1 Modello e posizionamento

  • La C+ è una riga aggiuntiva, non una sostituzione: convive con la C) nel datapack, che resta la riga principale.
  • Nel sorgente le righe C+ si collocano sopra la base; la C) è l'ultima chord-row del datapack. Sono ammesse al massimo due righe C+, impilate sopra la base.
  • Ogni C+ condivide griglia e barline della base e si allinea alle sue colonne: ogni evento alternativo si legge sopra l'evento base allineato.

7.2 Overlay per posizione (non per misura né per brano)

L'alternativa agisce posizione per posizione:

  • dove la C+ ha un accordo, quello è l'alternativo per quella colonna;
  • dove la C+ ha una cella vuota (| |), o non copre affatto una misura, non propone alcun alternativo: vale la base.
C+ |     | Ab7 | D-7          |
C) | C   | A-  | D-7  Bb7  A7 |

→ M1 nessun alternativo (vale C); M2 Ab7 sostituisce A-; M3 D-7 sostituisce solo il primo evento, Bb7 e A7 restano.

7.3 Ritmo e prolungamenti

La C+ accetta lo stesso vocabolario ritmico della base: durate (…), ribattuto !, legatura ^, e i prolungamenti . (invisibile), / slash (§4.1.1) e - linea di tenuta (§4.1.2).

7.4 Etichetta

Una riga C+ può contenere come primo token un comment-label (§8), con qualunque cornice: C+ "solos changes", C+ ["solos changes"] (o C+ [solos changes]), C+ ("solos changes").

7.5 Trasposizione e realizzazione

  • Trasposizione: gli accordi C+ seguono la trasposizione del brano esattamente come quelli base.
  • Realizzazione: l'armonia effettiva del brano è definita dalla sola riga base C); la C+ è un'alternativa di lettura e non concorre alla realizzazione armonica.

8. Comment-label

Un comment-label è un testo libero attaccato in postfix a un evento accordale per annotarlo.

8.1 Sintassi

Il comment-label segue il modello a cornice dei container di testo (neumaRk_text_markup.md §2.1): il testo sta fra virgolette, la cornice attorno è facoltativa. Le forme sono semanticamente equivalenti e differiscono solo per la grafica:

  • "<testo>" — nessuna cornice;
  • ["<testo>"] — riquadro (forma di riferimento);
  • [<testo>] — riquadro, abbreviazione di ["<testo>"] (stesso risultato: le virgolette non compaiono mai);
  • ("<testo>") — cornice tonda.

Il testo è una stringa di caratteri stampabili (spazi inclusi) e ammette il markup testuale definito in neumaRk_text_markup.md. Il carattere di chiusura del container (" o ]) non può comparire letteralmente nel testo: usare l'escape \" o \] (C7[a\]b]), oppure la forma fra virgolette ["a]b"], dove la ] è già testo. Fra virgolette anche una | è testo: Eb7alt["a|b"] è un label, non un polyaccordo (§6).

Riscrivendo il documento, sulla riga accordi il riquadro si scrive nell'abbreviazione [testo] quando il testo lo consente, e nella forma ["testo"] quando contiene ] o |: le due forme sono equivalenti (Eb7alt["tritone"] è riscritto Eb7alt[tritone]).

Lo stile di default del comment-label è plain (tondo), size media (role reduced; ### la rimpicciolisce), con qualunque cornice. Il markup testuale *…* accende l'italic sopra questo default.

Tre scope ammessi, distinti per punto di attacco:

  • chord-level — attaccato a un chord event (anche polychord), senza whitespace intermedio:
Eb7alt"tritone"            nessuna cornice
Eb7alt["tritone"]          riquadro (forma di riferimento)
Eb7alt[tritone]            riquadro (abbreviazione)
Eb7alt("tritone")          cornice tonda
[A|EbM]"polychord exp."
  • group-level — attaccato alla parentesi di chiusura ) di un gruppo di accordi opzionali (§5):
(FM F#-7 | B7 EM)"Bill Evans changes"
(FM F#-7 | B7 EM)["Bill Evans changes"]
(FM F#-7 | B7 EM)("Bill Evans changes")
  • row-level — come primo token utile della chord-row, preceduto solo dal marker di riga C) / C+, con qualunque cornice. Due posizioni:

  • senza barlines — label come unico contenuto della riga (la chord-row non contiene eventi musicali):

    C+ "solos changes"
    C+ ["solos changes"]
    

    La label resta anche quando la riga non ha altro: riscrivendo il documento, C) [Intro] | e C) "solos" diventano C) | [Intro] | e C) | "solos" |, la stessa riga con la stessa label.

  • con barlines — label come primo token dentro le bar della riga, prima di qualunque chord-event:

    C+ | "solos changes" | Cm7 | F7 |
    C+ | ("solos changes") | Cm7 | F7 |
    

    Il segmento della label è una misura: la riga qui sopra ne ha tre, la prima con la sola label. Come per ogni riga la stanghetta d'apertura è facoltativa (neumaRk_datapack.md §6), ma solo davanti al contesto: una label la rende vera, e C+ "solos changes" | Cm7 | F7 | è la stessa riga di tre misure. Per mettere la label sulla misura del primo accordo la si scrive nella stessa misura: C+ | "solos changes" Cm7 | F7 |.

Un label scritto in testa a una misura successiva alla prima non è un label di riga: appartiene a quella misura e si attacca all'accordo che lo segue (C) | Eb7 F | [xy] G | equivale a | Eb7 F | G[xy] |). Se nella misura non segue alcun accordo (C) | Eb7 F | [xy] |), il label resta nella sua misura, sulla cella vuota, al battere 1, mentre l'armonia precedente persiste; lo stesso vale sulle righe C+. Due label in testa alla stessa misura sono un duplicato (E126, §8.4): vale il primo.

```
C) | Eb7 F | [xy] | G |
N) | c4 d e f | g1 | c1 |
```

8.2 Disambiguazione

Il delimitatore […] è condiviso con altri costrutti già definiti nella spec. La disambiguazione è posizionale:

Costrutto Forma riconosciuta
Polychord (§6) [<top>\|<bottom>] — contiene \| interno, nessun whitespace
Volta (flow §3.2) attaccato a barline d'inizio misura: \|[1.]
End-decorator (flow §4.3) attaccato a :\| o barline di fine: [xN]:\|, [D.S.]
Comment-label (riquadro) attaccato a chord / ) di optional group, o primo token della row, nella forma ["…"] / […]

Il parser riconosce il polychord per primo (vincola la forma a | interno), gli altri sono distinti per posizione di attacco.

La forma "…" del comment-label non collide con nessuno di questi costrutti, perché il delimitatore " non è condiviso. La disambiguazione del comment-label "…" resta posizionale (attaccato a chord, ) di gruppo opzionale, o primo token della row).

La cornice tonda ("…") è distinta dal gruppo di accordi opzionali (§5) e dalla durata C(4) dal " che segue subito la (: (C7 F7) apre un gruppo, ("alt") è una label. Una tonda incollata alla barra finale (("ad lib"):|) è un end-decorator, come le altre forme (flow §4.3).

8.3 Resa visiva

  • chord-level — plain ridotto sopra al chord (sopra l'eventuale notazione ritmica), con la cornice scritta.
  • group-level — plain ridotto sopra al gruppo, allineato a sinistra, con la cornice scritta. Le parentesi degli optional restano invariate con qualunque cornice.
  • row-level — plain ridotto a inizio riga, allineato a sinistra col primo evento musicale; se il primo accordo ha un comment-label, la label di riga ne prende il bordo sinistro (cornici incluse).

La cornice aderisce al testo (non scende sulla sigla sottostante). Lo stile di default (plain, size media) è proprietà del costrutto e si applica con qualunque cornice; la cornice decide solo la grafica attorno al testo (vedi neumaRk_text_markup.md).

Resa di riferimento (informativa). Il comment-label sopra la sigla (chord, group e row-level) e la sua cornice sono nel colore dell'inchiostro, come tutta la partitura, in corpo minore della sigla: è il corpo a distinguerli dalla sigla e dalle annotazioni di nota.

Su più righe. Un ; nel comment-label va a capo, a ogni livello (neumaRk_text_markup.md §3bis): la pila cresce verso l'alto, l'ultima riga resta dove sarebbe la riga singola, e una sola cornice avvolge la pila. Un label di gruppo o di riga impilato sopra il comment-label del primo accordo ne scavalca l'intera pila; le righe C+ sopra si alzano di quanto serve. Nel label a lato di §8.5 la linea tratteggiata parte dall'ultima riga.

C) | (C7"alt;b9" F7 | Bb A7)"Bill;Evans" | D-7"voicing;drop 2" |

8.4 Limiti

  • al massimo un comment-label per evento (errore E126 se duplicato sullo stesso evento), indipendentemente dalla cornice usata; vale anche per il gruppo: in (C7 F7)"a""b" la seconda label è un duplicato del gruppo (E126) e si scarta, non passa a F7; lo stesso per due label in testa a una misura (§8.1, | [xy] [zz] G |)
  • il label è puramente annotativo: non influisce su pitch, durata, ritmo, flusso musicale né trasposizione
  • ammesso sia su riga base C) sia su righe alternative C+
  • i container stanno su una riga del sorgente: il delimitatore di chiusura deve comparire entro fine riga (per andare a capo nella resa si usa ;, §8.3)

8.5 Estensione a linea (label-)

Un comment-label chord-level può portare un trattino - incollato al delimitatore di chiusura ("…"-, ["…"]-/[…]- oppure ("…")-). Questo suffisso cambia la resa del label da sopra la sigla a estensione orizzontale a lato:

  • il testo è disegnato a destra della sigla (non più centrato sopra);
  • da fine testo parte una linea tratteggiata che si prolunga fino al primo terminatore della riga, ovvero:
  • la prossima sigla stampata (le celle vuote / continuazioni invisibili sono saltate); oppure
  • una misura NC → la linea si ferma prima del glifo N.C.; oppure
  • una misura R (rest armonico, muta e senza glifo, §1.3) → la linea si ferma all'inizio della misura;
  • (un NC frazionario, §1.2.1, è una sigla stampata a tutti gli effetti: ferma la linea per la prima regola, non per questa);
  • se non ne segue nessuno, fino a fine riga / fine brano;
  • la linea termina con un gancino verticale verso il basso.

È l'idioma per annotare un evento che si estende nel tempo — tipicamente un break, un drum fill, un solo:

C)  | C-7"break"-  |  |  | Bb6 |

C-7 porta l'etichetta break a destra; la linea tratteggiata copre le tre misure fino a Bb6. La forma boxed è equivalente:

C)  | C-7[break]-  |  |  | Bb6 |

Se al posto della sigla di arrivo c'è una cella NC o R, la linea si ferma lì (prima del glifo N.C., oppure all'inizio della misura muta R):

C)  | C-7"break"-  | NC |     // la linea si ferma al glifo N.C.

C)  | C-7"break"-  | R  |     // la linea si ferma all'inizio della misura R

Disambiguazione. Il - di estensione è incollato al delimitatore di chiusura del label ("break"-, nessuno spazio). È distinto dal - di prolungamento con linea di tenuta (§4.1.2), che è un token isolato e prolunga l'armonia: C-7"break" - (con spazio) è la sigla con label sopra seguita da un prolungamento; C-7"break"- (incollato) è la sigla con label a lato + linea di annotazione. La disambiguazione è puramente posizionale (adiacenza al delimitatore).

Il - di estensione è puramente annotativo: non altera durata, ritmo, armonia né flusso; non conta come slot di suddivisione (a differenza del - di prolungamento). Round-trip lossless: il serializer riemette il - incollato. Senza il - il label resta sopra la sigla (§8.3, invariato).

Resa di riferimento (informativa). Label a lato, linea tratteggiata e gancino sono nel colore dell'inchiostro, come tutta la partitura. La label a lato ha il corpo delle annotazioni testuali di A) (A) "vamp"-), maggiore di quello della label sopra la sigla (§8.3).

Nota. L'estensione è definita solo a livello chord-level. Su group-level / row-level il - incollato si ignora: non apre una linea, non occupa uno slot, e il documento riscritto non lo conserva.

Gemello A)-row. Questa estensione inline (label a destra della sigla) ha un gemello sopra la banda accordi: una riga A) scritta sopra la C) che ancora annotazioni testo, linee tratteggiate e staffe d'analisi { } agli accordi stampati. Vedi neumaRk_articulations.md §2.1.


9. Regole generali di durata

  • in caso di conflitto prevale la sintassi esplicita
  • la normalizzazione unifica grafie enarmoniche/equivalenti in un'unica resa canonica (es. 7b5→7#11, dim7→o7, m7b5→ø): unifica la grafia, non il significato armonico
  • il ritmo implicito è deterministico

10. Diagnostici

Codice Condizione
E101 Lista ritmica compatta non valida o che comincia con una pausa (D(16*2,8), D(r16,8)), espressione di accordo o di polyaccordo non interpretabile (§4.4, §6)
E102 Token non riconosciuto nella riga accordi: sigla non valida (CMAJ7), glifo di resa digitato (CΔ), polyaccordo malformato, ^ fuori dalle parentesi (§3, §4.2, §6)
E126 Più di un comment-label sullo stesso accordo, gruppo o riga (§8.4)
E127 Più di 2 righe C+ per datapack (§7.1)
E129 Più di una riga base C) nel datapack (neumaRk_datapack.md §3.bis.1)
E135 Chiave sulla riga accordi (E135.clef_on_chord_row) o riferimento d'altezza su C)/C+ (E135.pitch_ref_on_secondary_row): componente scartato (neumaRk_datapack.md §7.3)
E300 Ripetizione di misura % senza sorgente (neumaRk_flow_and_repeats.md §7)
W103 Suffisso fuori dizionario: sigla conservata senza suffisso (§3.6)
W131 Riga A) sopra C) con più testi delle colonne di sigla stampate (neumaRk_articulations.md §2.1)
W400 Nota del ritmo accordi con durata non positiva: omessa (§4)

Questo documento definisce la semantica armonica e ritmica delle righe di accordi in neumaRk.