Semantiek (draft)¶
Status: draft v0.
Sync-contract (lengte-posities)¶
Binnen elke maat moeten alle lyrics-regels van het systeem en alle stemregels dezelfde structuur van lengte-posities hebben:
- Hetzelfde aantal L-stukken (events), waarbij een recite-run als één L-stuk / één positie telt;
- Bij elk melisma-stuk: hetzelfde aantal
&-slots in elke lyrics-regel en in elke stemregel.
Kolomuitlijning in de editor is voor invoer optioneel comfort: wat telt voor validatie is de telling, niet het aantal spaties. Gegenereerde en canonieke bestanden volgen wél de canonieke kolomuitlijning.
Ongelijke partituurnoten onder één lettergreep¶
Soms beweegt de sopraan onder één lettergreep over drie tonen, terwijl de tenor één noot aanhoudt. Op de lyrics-regel staan dan drie slots; de tenor schrijft toch drie slots, met aanhouden:
L: … Ster~&~&~ …
S: … a4&b4&c5 …
T: … d4&-&- …
d4&-&- betekent semantisch hetzelfde als d4&d4&d4. Bij export naar MSCZ
(partituur) trekt tooling opeenvolgende melisma-noten op dezelfde hoogte samen
tot één noot waarvan de duur de som is van de slot-duren. Playback-.mxl
houdt de slots apart (Coria).
Reciteertoon¶
Een L-stuk tussen ( … ) is een recite-run: meerdere lettergrepen (en
eventueel meerdere woorden), één hoogte-stuk per stem. Optionele ELM
direct na ) zet de duur; zonder ELM geldt de recite-standaard (export:
breve). Uitgewerkte voorbeelden: Syntax — reciteertoon.
L: (Eer aan de Va-der,) Geest_. |
S: f#4 f#4 |
Hier zijn twee posities: de recite-groep, daarna Geest_. (zelfde toon, andere
duur — daarom een apart L-stuk).
Directives: @do, @mode, @oct¶
Praktische beschrijving van alle gedefinieerde @-keywords (inclusief
@title, @tekst, @sectie, @start): Keywords.
Deze sticky toon-directives mogen:
- bovenaan het bestand;
- aan het begin van een sectie (vóór of na
@sectie); - tussen LSATB-systemen van dezelfde sectie.
Geldigheid: een directive geldt vanaf het eerstvolgende LSATB-systeem
onder die regel, totdat dezelfde soort directive opnieuw wordt gezet. Eerdere
systemen in de sectie houden de oude waarde. Types overrulen elkaar niet:
@oct laat @do ongemoeid.
| Directive | Betekenis | Default |
|---|---|---|
@do |
Grondtoon van de do-context, bv. F4 of G4 |
F4 |
@mode |
Modus, bv. major |
major |
@oct |
Schrijfoctaaf per stem, bv. @oct S=0 A=0 T=-1 B=-1 |
alle stemmen 0 |
Ontbrekende stem in @oct → 0 voor die stem.
Schrijfoctaaf¶
@oct B=-1 verschuift het schrijf-do van de bas: laddergraden zonder
suffix, beginankers (B-: / T\5:), EHM-eindankers (||-, ||\3) en
toonnamen a–g zonder wetenschappelijk cijfer tellen t.o.v. dat schrijf-do
(@do + @oct voor die stem). Een suffix - / + / -2 op een laddergraad
of toonnaam telt extra t.o.v. het schrijfoctaaf.
Do-octaaf: a–g zonder cijfer liggen in het halfopen interval
[schrijf-do, schrijf-do + 12). Bij @do F4 is c = C5 (= so), niet C4.
Wetenschappelijke cijfers op toonnamen (g3, bb4, c4) zijn absoluut
(wrap bij C) en negeren @oct.
Absolute en relatieve hoogte¶
Zie ook het werkplan
mvsa-v0-syntax.md §2 en
Syntax — regelidentifier.
De regelidentifier zet de default/start van een stemregel:
| Regelidentifier | Stijl-default | Beginanker |
|---|---|---|
S: (geen EHM) |
Absoluut (do-re-mi of a–g) | Geen; eerste absolute token zet de lopende toon |
S-: / T\6: |
Relatief (vsa-achtig) | De EHM in de identifier (zelfde rol als @start voor die stem) |
Daarnaast op de regel zelf:
- EHM in een hoogte-stuk: relatief t.o.v. de lopende toon van die stem.
- Laddergraad / toonnaam: zet de lopende toon absoluut t.o.v. het
schrijf-do (
@do+@oct; anker, ook op een relatieve regel). - Mix per stem of per hoogte-stuk is toegestaan.
- Op laddergraden:
+/-achter de naam = octaaf, geen kruis. Kruis/mol:#/b(prefix of suffix; ook gecombineerd met octaaf alsso-#/fa#-) of Nederlandse namen (fis/bes). Details en verboden spellingen: Syntax — kruis en mol.
Octaafsuffix so- = so-1; kale -/+ betekent −1 / +1. Andere octaven
vereisen een cijfer (so-2).
@start S=- en S-: betekenen voor stem S hetzelfde beginanker; de
identifier-vorm is de voorkeur als de EHM bij die stemregel hoort.
Lopende toon over systeembraken¶
De lopende toon van elke stem loopt door over LSATB-systeembraken (lege regel tussen systemen), in de volgorde waarin export of validatie de systemen afloopt:
| Context | Volgorde |
|---|---|
Export playback (.mxl) |
sections_for_layout: bij @speelplan de klinkende (uitgeschreven) vorm |
Export partituur (.mscz) |
Bladvorm: documentvolgorde, elk speelblok één keer (tenzij expand-vangnet) |
| Eindanker-check / normalize | Documentvolgorde |
Gevolg: een kale - (of ~ als hoogte) aan het begin van een nieuw
systeem betekent “zelfde toon als de laatste klinkende noot van die stem in
het vorige systeem” — precies wat soft-wrap na import schrijft.
Beginanker wint: staat op de nieuwe stemregel een EHM in de
regelidentifier (S-:, T\6:, …) of een expliciete @start-toewijzing voor
die stem, dan wordt de lopende toon opnieuw gezet en geldt leading -
ten opzichte van dat anker (niet ten opzichte van het vorige systeem).
Zonder beginanker en zonder eerdere toon blijft het gedrag: - klinkt als
schrijf-do (zoals binnen één systeem vóór de eerste absolute toon).
Ankers: zetten vs. checken¶
| Plaats | Rol | Voorbeeld |
|---|---|---|
| EHM in de regelidentifier | Zet de lopende toon (beginanker), zoals @start |
S-:, T\6: |
| Token aan de maatstreep | Checkt alleen de lopende toon na die maat; wijzigt die niet | \|mi, \|/ |
| Laddergraad als hoogte-stuk | Zet de lopende toon (klinkt / telt als lengte-positie) | … mi \| |
Eindanker (maatstreep)¶
Vorm en disambiguatie: Syntax — eindanker aan de maatstreep.
- Kale streep (
|,||, …): geen marker, geen check. (Geen equivalent van VSA-[:]: die lege vorm bestaat in mvsa niet.) - EHM na de streep (
|/,|-,|\6, …): dezelfde EHM-inhoud als in VSA (zonder[…:]). De verwachte ladderpositie is die van de EHM t.o.v. het schrijf-do van die stem (@do+@oct); die wordt vergeleken met de berekende lopende toon van de stem na de maat. - Absoluut (
|mi,||fa,|g4, …): verwachte toon absoluut t.o.v. het schrijf-do / wetenschappelijk octaaf.
Bij mismatch: error. Bij match: de lopende toon blijft ongewijzigd (geen reset).
Pitfalls rond ~¶
Het teken ~ is op de L-regel alleen ELM (duur). Recite markeer je met
( … ), niet met een leading ~.
| Rol | Waar | Voorbeeld |
|---|---|---|
| Recite-groep | Tussen ( en ) |
(hei-li-ge) |
| ELM (duur 1×, geen glyph) | Direct na lettergreep, na ), of als slot |
li~, (ia,)~ |
Gevolg:
(hei)is recite op “hei”.hei~is lettergreep “hei” met ELM-duur~(geen recite).- In melisma’s heeft ELM-
~de voorkeur boven ELM--vóór een lettergreepstreepje: schrijfli~&~-ge, nietli-&--ge(dubbele-is ambigu voor lezer en kuiser). - Canoniek op L: lone standaard-lengte is impliciet (geen
~na de lettergreep). Schrijf~wél in&-melisma (ziel~&~) en na recite-)als de duur geen breve is (()~,(ia)~— zonder ELM na)= breve). Kale ELM--is invoer-tolerantie (kuiser → eerst~, daarna lone~weglaten). Woordstreepje met extra breedte: spaties vóór-letter(…_&_ -li).
De kuiser mag recite-haakjes niet stilzwijgend weghalen of ELM-~ niet in
woordstreepjes veranderen.
Canonieke layout vs. tolerantie¶
| Onderwerp | Canoniek | Kuiser |
|---|---|---|
| Standaard-lengte op L | Lone ~ weggelaten; ~ bij &-melisma en na ) (niet-breve); - hoort bij lettergrepen |
Eenduidige ELM-- → ~, daarna lone ~ weg; waarschuwt bij ambiguë - (regel + kolom) |
| Woordstreepjes | - direct vóór de volgende lettergreep; bij breedte spaties ervóór (hei -li) |
Geen stille hei- li→hei-li-collapse; Pyphen-warnings bij ontbrekende / verdachte streepjes |
| Maat-/sectiestrepen | Op alle LSATB-regels op dezelfde posities | Mag strepen van één regel naar de andere kopiëren als eenduidig |
| Kolomuitlijning | Zie Syntax — canonieke kolomuitlijning | Mag losser zijn; gegenereerde output en voorbeelden zijn strikt |
| Directives | Sticky tot overrule | — |
Semantiek (sync-telling) hangt niet van kolommen af: ongelijke spaties mogen
in losse invoer. De standaardlayout die tooling schrijft (en die in
examples/mvsa hoort te staan) volgt wél de kolomregel.
Relatie tot eenstemmige VSA¶
ELM-betekenissen en de idee van do-context
komen uit VSA 1.0. mvsa herdefinieert geen eenstemmige VSA-scopes {…} op
de L-regel. Chromatische alias + in EHM’s blijft een open punt in VSA zelf;
op mvsa-laddergraden is + octaaf.