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): vedineumaRk_notes_and_durations.md §10 → Slash notation.Dentro le versioni. L’armonia che permane è contesto, quindi attraversa una regione
%%NAMEcon 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%%enderedita 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 riservatoU+EF62dei 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 (nienteN.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.
Rfrazionario ersono lo stesso evento: il round-trip riemetter, come per le altre normalizzazioni di sigla (§3). La differenza di semantica riguarda solo la misura intera:Rda solo ferma anche la persistenza dell’armonia (sopra),rno.
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#ob(massimo un'alterazione)suffixidentifica il suffisso dell'accordobassopzionale, 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 produceE102.
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 tper 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 (larcome 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,BbeGsopra il "3",Cresta 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
rper 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 accordoAcon bassoB - polyaccordo (
[A|B]) → due accordi indipendentiAeBsovrapposti
6.1 Sintassi¶
Un polyaccordo è racchiuso fra parentesi quadre, con il carattere | come separatore interno:
[<top>|<bottom>]
Dove:
topebottomsono 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 laC)nel datapack, che resta la riga principale. - Nel sorgente le righe
C+si collocano sopra la base; laC)è l'ultima chord-row del datapack. Sono ammesse al massimo due righeC+, 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); laC+è 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] |eC) "solos"diventanoC) | [Intro] |eC) | "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, eC+ "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
E126se 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 aF7; 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 alternativeC+ - 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 glifoN.C.; oppure - una misura
R(rest armonico, muta e senza glifo, §1.3) → la linea si ferma all'inizio della misura; - (un
NCfrazionario, §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 laC)che ancora annotazioni testo, linee tratteggiate e staffe d'analisi{ }agli accordi stampati. VedineumaRk_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.