Changelog ufficiale¶
neumaRk 0.6.0 — Versione corrente (in sviluppo)¶
Versione di riferimento dichiarata dagli esempi della specifica
(nrk:0.6). Estende la 0.5.0 con un'ampia ondata di feature, elencate
qui sotto.
Novità della 0.6¶
La 0.6 estende la 0.5.0 con le feature seguenti; ognuna è specificata nel documento indicato.
| Feature | Documento |
|---|---|
| Grace notes | neumaRk_grace_notes.md |
Seconda voce N2 |
neumaRk_voices.md |
Continuità stave N+ / multi-stave |
neumaRk_datapack.md §4 |
Ripetizione di misura % |
neumaRk_flow_and_repeats.md §7 |
Polyaccordi [top\|bottom] |
neumaRk_chords.md §6 |
Comment-label / accordi alternativi C+ |
neumaRk_chords.md §7 |
Persistenza armonia (cella vuota + . di continuazione iniziale) + assenza accordo NC |
neumaRk_chords.md §1.1-1.2 |
| Markup testuale unificato | neumaRk_text_markup.md |
Sezioni collassabili [? …] / [!] |
neumaRk_markers.md §4 |
Dinamiche D) estese |
neumaRk_dynamics.md |
Play directive (=Style,Tempo) |
neumaRk_play_directive.md |
PLAY) / FORM) |
neumaRk_play_and_form.md |
Versioni %%NAME … %%end |
neumaRk_versions.md |
Articolazioni A) (base + estensioni §8-12) |
neumaRk_articulations.md |
Lyrics L) + blocco LYRICS) |
neumaRk_lyrics.md |
Note estese N) (noteheads, glissato, ritmo {}) |
neumaRk_notes_and_durations.md §11-12 |
Pausa multi-misura RN |
neumaRk_notes_and_durations.md §13 |
Spacer s (pausa invisibile) |
neumaRk_notes_and_durations.md §14 |
Anacrusi di sezione (>>> misura aperta + > levare mid-brano) |
neumaRk_notes_and_durations.md §7.1 |
| Collezioni (book / playlist) | neumaRk_collections.md |
Cambiamenti normativi rilevanti nella 0.6¶
Oltre alle nuove feature, la 0.6 introduce alcuni cambiamenti che modificano sintassi o codici rispetto alle bozze precedenti:
- Codici del blocco
LYRICS)rinumerati inW157/W158. In una prima bozza il bloccoLYRICS)condividevaW152/W153con le Collezioni; ora ogni codice ha un solo significato (Collezioni:W152–W156; bloccoLYRICS):W157= sezione inesistente,W158= pickup in overflow). - Chiusura di sezione opzionale:
[!]sostituisce[?](neumaRk_markers.md§4.2).[!]è un marker anonimo di apertura di sezione non-opzionale e chiude lo scope opzionale precedente come effetto della regola generale §4.1. - Ripetizione di misura
%con span N>1: il token compare in ognuna delle N misure consecutive del run (es.| a | b | %2 | %2 |), preservando l'invariante "una cell = una misura" (neumaRk_flow_and_repeats.md§7). - La cella d'accordo vuota ora fa persistere l'armonia (prima:
silenzio). Una misura
C)priva di sigle/%/NCri-realizza l'accordo precedente sul battere (neumaRk_chords.md§1.1). Per dichiarare esplicitamente l'assenza di armonia si usa il nuovo tokenNC(§1.2, glifoN.C., erroreE128se misto a un accordo). Cambia di conseguenza il trigger della slash notation implicita: ora include l'armonia persistente ed escludeNC(neumaRk_notes_and_durations.md§10).
Convenzione dei codici diagnostici¶
E###— error: costrutto non valido, emesso come errore bloccante (LOG_ERROR).W###— warning: diagnostica non bloccante, best-effort (LOG_WARNING); il parsing prosegue.
Il prefisso indica la severità, non la categoria. L'intera famiglia
diagnostica 0.6+ (W130–W158: dinamiche, articolazioni, play directive,
PLAY) / FORM), sezioni collassabili, versioni, HV), collezioni, blocco
LYRICS)) è emessa come warning ed è stata rinominata da
E13x/E14x/E15x a W13x/W14x/W15x per allineare il prefisso alla
severità reale.
Le due tabelle che seguono — codici di base (pre-0.6 e fondamentali) e
codici 0.6+ — insieme costituiscono la mappa completa e autorevole
codice → significato, allineata al parser. Ogni codice ha un solo significato.
I codici interni E901–E905 sono dev-facing (EN-only) e non normativi.
Allocazione codici di base (pre-0.6 e fondamentali)¶
| Codice | Significato | Famiglia (doc) |
|---|---|---|
| E001 | Token non interpretabile: nota / evento grace / chord-stack <…> / rhythm group {…} malformato o non chiuso |
Note e durate / Grace |
| E002 | Una durata non può seguire . o ! |
Note e durate |
| E003 | Tuplet non valido | Note e durate |
| E004 | Impossibile interpretare la pitch | Note e durate |
| E005 | Le durate delle note superano il metro della misura | Note e durate |
| E006 | Più di uno slash-rhythm / per misura |
Note e durate |
| E007 | Slash / senza spazio (meno di un beat dopo l'allineamento) |
Note e durate |
| E008 | Ottava assoluta @<n>_ richiede durata esplicita |
Note e durate |
| E009 | Durata grace mancante sul primo evento, o non conforme (solo 4/8/16) |
Grace notes |
| E010 | Modificatore / o ^ ammesso solo sull'ultimo evento grace |
Grace notes |
| E011 | Blocco grace vuoto [] |
Grace notes |
| E012 | Blocco grace con più di 4 eventi | Grace notes |
| E013 | Pausa non ammessa come evento grace | Grace notes |
| E101 | Lista ritmica compatta / polychord / espressione accordo non interpretabile | Accordi |
| E102 | Token non riconosciuto nella riga accordi | Accordi |
| E110 | Troppi stave nel datapack (max 4) | Datapack / multi-stave |
| E122 | N) senza match: più continuazioni che stave nel datapack precedente (usa N+) |
Datapack (N+) |
| E123 | N2 senza rigo parent valido |
Voci |
| E124 | N2 duplicata sullo stesso rigo |
Voci |
| E125 | Direttiva di chiave non ammessa in riga N2 |
Voci |
| E126 | Più di un comment-label sullo stesso chord / group / row | Accordi (alternate) |
| E127 | Max 2 righe alternative C+ per datapack |
Accordi (alternate) |
| E128 | NC misto ad altro contenuto nella stessa misura |
Accordi |
| E300 | Measure-repeat (% / RN) senza sorgente valida |
Flusso / MMR |
| E301 | Impossibile interpretare la nota dell'armatura di chiave | Header / chiave |
| W002 | Tuplet non chiuso prima della fine misura (auto-riempito con pause 1/64) | Note e durate |
| W003 | Blocco grace non adiacente alla main (ignorato) | Grace notes |
| W004 | Blocco grace privo di main adiacente (ignorato) | Grace notes |
| W006 | Pitch fuori dal range MIDI [1..127] | Note e durate |
| W007 | Token di notazione ritmica {…} non valido (durata o tuplet) |
Note e durate |
| W008 | Pausa multi-misura RN su span con contenuto: degrado a pausa normale |
Note e durate (MMR) |
| W009 | Modificatore non ammesso su spacer s (ignorato) |
Note e durate (spacer) |
| W103 | Suffisso accordo non riconosciuto | Accordi |
| W301 | Impossibile dedurre titolo o credits dalla prima riga di header | Header |
| W400 | Nota del ritmo accordi con durata non positiva (omessa) | Accordi (ritmo) |
Allocazione codici 0.6+ (fonte unica)¶
Le righe A)/D)/L) condividono W131 (eccesso token) per identità
semantica, non per collisione.
| Codice | Significato | Famiglia (doc) |
|---|---|---|
| W130 | D) senza riga N)/N+/N2 parent valida |
Dinamiche |
| W131 | Token in eccesso rispetto agli eventi N) |
A)/D)/L) (condiviso) |
| W132 | D) token - non riconducibile a extension/barline |
Dinamiche |
| W133 | Container testuale non chiuso a fine riga | Dinamiche |
| W134 | Play directive vuota (=) |
Play directive |
| W135 | Ordine slot invertito (tempo prima di style) | Play directive |
| W136 | BPM fuori range (10–999) | Play directive |
| W137 | Figura NRK non valida in metric modulation | Play directive |
| W138 | Play directive in riga diversa da M) |
Play directive |
| W139 | Token A) fuori dal vocabolario |
Articolazioni |
| W140 | Più di una sezione FORM) |
PLAY/FORM |
| W141 | Durata |BARS non valida (1–999) |
PLAY/FORM |
| W142 | Repeat count xN fuori range (2–99) |
PLAY/FORM |
| W143 | Keyword &xxx non riservata |
PLAY/FORM |
| W144 | Legatura A) malformata (non chiusa a fine riga) |
Articolazioni |
| W145 | FORM) non in fondo al documento |
PLAY/FORM |
| W146 | [!] ridondante: nessuna sezione opzionale da chiudere |
Markers |
| W147 | Blocco %%NAME non chiuso (manca %%end) |
Versioni |
| W148 | %%end orfano (nessun blocco aperto) |
Versioni |
| W149 | Blocco %%NAME annidato |
Versioni |
| W150 | HV) malformato |
Versioni |
| W151 | Sezione collassabile non a inizio rigo (§4.7) | Markers |
| W152 | Riga item: in collezione nrk-book: |
Collezioni |
| W153 | Chiave override sconosciuta in item: |
Collezioni |
| W154 | Riga item: non seguita da un blocco-brano |
Collezioni |
| W155 | Direttiva header collezione dopo il primo blocco | Collezioni |
| W156 | Collezione priva di blocchi-brano | Collezioni |
| W157 | LYRICS) [NAME] riferisce una sezione inesistente (reference-broken) |
Lyrics (blocco LYRICS)) |
| W158 | Gruppo pickup <…> di LYRICS) in overflow sulla corsa di note precedente |
Lyrics (blocco LYRICS)) |
Nota storica:
W144era stato bozzato anche per "PLAY)nidificata", caso impedito strutturalmente dal parser (mai emesso); il codice resta quindi alle articolazioni. La sezione collassabile non-a-inizio-rigo è stata spostata daW147(che collideva con Versioni) aW151(2026-05-26).
neumaRk 0.5.0 — Prima versione pubblica¶
Stato¶
Public preview. Il linguaggio è utilizzabile e coerente, ma soggetto a evoluzioni a breve termine.
Significato della versione¶
Questa è la prima versione pubblica di neumaRk. Il numero 0.5 riflette una maturazione concettuale già avanzata, pur senza garantire stabilità definitiva dell’interfaccia semantica.
Funzionalità incluse¶
- struttura a datapack
- header con deduzione conservativa
- note con durate implicite ed esplicite
- accordi con semantica ritmica e durate implicite ed esplicite
- accordi con lista compatta di durate
X(a,b,r16,c,...)(vedi §4.4) - gestione di ripetizioni e flusso
- supporto a formati Compact / Human / Verbose
Chiarimenti normativi¶
- contesto musicale persistente
- semantica contestuale dei simboli
- priorità della nota unica nella battuta
- riga Format deducibile
Non ancora stabilizzato¶
Elenco storico alla 0.5.0; molte di queste voci sono state introdotte nella 0.6 (vedi Novità della 0.6).
- articolazioni, dinamiche, lyrics
- polyaccordi (sintassi
[top|bottom], vedineumaRk_chords.md§6) - multi-stave per datapack (fino a 4 righi, vedi
neumaRk_datapack.md§4) - ripetizione di misura (sintassi
%/%!/%2/%!2/%4/%!4, vedineumaRk_flow_and_repeats.md§7) - possibili estensioni sintattiche
- raffinamento delle regole di deduzione
- validazione formale completa
Compatibilità¶
Non esistono versioni pubbliche precedenti.