Ga naar inhoud

@-keywords (draft)

Status: draft v0.

Voor wie: wie een .mvsa typt in VSCode (koorpartituur, litanieën, antwoorden) en wil weten welke @-regels bestaan, wat ze doen, en wanneer je ze wél of juist níet gebruikt.

Gedeelde metadata met eenstemmige .vsa (Nederlandse termen, andere schrijfwijze): Metadata-brug.

Een keyword-regel is een regel die (na optionele spaties) begint met @, daarna een keyword, daarna spatie, daarna argumenten die bij dat keyword horen:

@keyword argumenten…

Het keyword zelf volgt: eerste teken een letter, daarna letters, - of _ ([A-Za-z][A-Za-z-_]*). Voorbeelden: @do, @oct, @tekst.

Soort Gedrag
Gedefinieerd (deze pagina) Tooling kent de betekenis; foute argumenten → error
Onbekend (nog niet hier) Mag je gebruiken om te experimenteren; validate meldt een warning, geen error
Ongeldige keyword-vorm Bijv. @1foo of @ alleen → warning (geen error); export gaat door
@--- Optionele no-op-scheider tussen LSATB-systemen (lege regel volstaat); commentaar erna OK

Keyword-regels mogen:

  • bovenaan het bestand;
  • bij het begin van een sectie (vóór of na @sectie);
  • tussen LSATB-systemen van dezelfde sectie.

Ze mogen niet midden in een LSATB-systeem (tussen L: en S:).

Overzicht van de sticky tooncontext (@do / @mode / @oct): ook Semantiek. Hieronder per keyword: wat het is, wat je ermee kunt, en wanneer je het wel/niet gebruikt.


@do

Wat het is. Zet de grondtoon van de do-context voor het eerstvolgende LSATB-systeem (en verder, tot je @do opnieuw zet).

Vorm. @do + spatie + toonnaam met octaaf, bv. F4, G4, Bb3.

Wel gebruiken als het stuk niet in de default F4 staat, of als je midden in een bestand van toonsoort/grondtoon wisselt vóór een nieuw systeem.

Niet gebruiken om per noot te “tunen”: dat doe je met laddergraden of toonnamen op de stemregels. @do is document-/sectie-context, geen lokale correctie.

Default als je @do weglaat: F4.

@do F4

@mode

Wat het is. Zet de modus (majeur/mineur) die bij de do-context hoort, geldig vanaf het eerstvolgende LSATB-systeem.

Vorm. @mode major of @mode minor.

Wel gebruiken samen met @do als je mineur nodig hebt, of als je wilt vastleggen dat het stuk majeur is (expliciet, voor lezers en export).

Niet gebruiken voor kerktoon / toonnummer (“toon 8”): dat is metadata buiten deze keywords (nog geen apart keyword) of hoort in de bestandsnaam / catalogus.

Default: major.

@mode major

@oct

Wat het is. Zet per stem het schrijfoctaaf: hoe hoog een laddergraad zonder octaafsuffix, en een toonnaam a–g zonder wetenschappelijk cijfer, klinkt t.o.v. @do. Typisch: bas en tenor één octaaf lager schrijven (B=-1, T=-1), zodat je re / d typt in plaats van re- / d-.

Vorm. @oct + toekenningen Stem=n (spaties of komma’s). De stem-namen zijn dezelfde stemidentifiers als op de stemregels (niet alleen S/A/T/B), bv. @oct S=0 A=0 T=-1 B=-1 of @oct sop=0, zeep=-1. Matching is hoofdletterongevoelig; S1 deelt de waarde van S, Zeep2 deelt Zeep.

Wel gebruiken bij SATB of andere stem-ids met laddergraden of kale a–g, zodat elke stem in een comfortabel schrijfoctaaf blijft. Kale a–g delen het do-octaaf ([schrijf-do, +12)): bij @do F4 is c = C5.

Niet gebruiken om één losse noot te verschuiven: gebruik dan een octaafsuffix op die noot (so-, fa+, c+), of een wetenschappelijke toonnaam (g3, c5). Wetenschappelijke cijfers (g3) negeren @oct. Geen lyrics-ids (L…) in @oct.

Default: 0 voor elke stem die je niet noemt.

@oct S=0 A=0 T=-1 B=-1
@oct sop=0, zeep=-1

Zie Semantiek — schrijfoctaaf.


@start

Wat het is. Zet beginankers (EHM) per stem voor relatieve hoogtestijl, geldig vanaf het eerstvolgende LSATB-systeem.

Vorm. @start + toekenningen, bv. @start S=- A=\3 T=\6 B=\8.

Wel gebruiken als je relatieve (vsa-achtige) hoogte wilt zonder EHM in elke regelidentifier te herhalen.

Niet gebruiken als voorkeur boven de identifier-vorm: S-: / T\6: op de stemregel zelf is meestal duidelijker (anker zit bij de stem). @start en S-: betekenen voor die stem hetzelfde beginanker; de identifier wint als beide voorkomen.


@sectie

Wat het is. Opent een nieuwe sectie met een id. Een sectie is een muzikale eenheid van een of meer LSATB-systemen — in bestanden zonder @speelplan.

Vorm. @sectie + spatie + id: [a-z][a-z0-9_-]* (kleine letters).

Sectie-einde. Bij een nieuwe @sectie, bij EOF, of (later) bij fence-::: is de laatste maatstreep van het vorige laatste systeem (|, ||, …) het sectie-einde. Expliciet midden in een bestand (zonder nieuwe @sectie) gebruik je || of :||. Tooling schrijft bij genereren bij voorkeur ||. Zie Syntax — sectie-einde.

Wel gebruiken om delen te benoemen die je apart wilt exporteren (vsa mvsa mxl … --section id) of om schetsen in één experiment-bestand uit elkaar te houden (couplet / refrein / pitch-variant).

Niet gebruiken samen met @speelplan (dan: @blok). Niet als litanie-cue (dat is @tekst). Niet om meerdere speelplannen in één file te nesten — één plan = één .mvsa.

@sectie openingsfrase

@blok

Wat het is. Opent een speelblok: genoemd LSATB-segment voor een @speelplan. Geen “sectie” in de zin van ||-afsluiting; tussen blokken is || niet verplicht.

Vorm. @blok + spatie + id: [1-9][0-9]* of [a-z][a-z0-9_-]*.

Wel gebruiken wanneer je een speelplan hebt: elk blok één keer, volgorde in @speelplan. Eén speelplan per bestand.

Niet gebruiken i.p.v. @tekst of @mscz-newline; niet i.p.v. @sectie buiten een speelplan-bestand (tenzij je redactioneel een id wilt zonder plan).

Zie Speelplan.

@blok 1

@speelplan

Wat het is. Zet de canonieke klinkende volgorde van speelblokken. Bladmuziek (MSCZ) blijft compact (volta / herhaling / D.S. of expand); MXL-playback schrijft het plan uit.

Vorm. @speelplan + komma-gescheiden ids (zelfde id-vorm als @blok). Hoogstens één per bestand — nest geen plan in @sectie.

Wel gebruiken bij vaste herhaalpatronen (bijv. alleluia 1-2-1-2-1-3).

Niet gebruiken samen met |: / :| in die speelblokken; niet naast @sectie in hetzelfde bestand.

Zie Speelplan.

@speelplan 1, 2, 1, 2, 1, 3

@title

Wat het is. Zet de titel van het stuk zoals die op het blad en in export (MusicXML / MuseScore) verschijnt. Geen staff-tekst bij een systeem, maar de partituurtitel.

Vorm. @title + spatie + een string tussen dubbele aanhalingstekens (zelfde stringvorm als @tekst):

@title "(1a) Vredeslitanie"

Wel gebruiken bovenaan het bestand (of bij een duidelijke wissel van stuk) als de bestandsnaam niet de gewenste titel is. Bij export wint @title van de bestandsnaam als fallback.

Niet gebruiken voor:

  • cues boven één koorantwoord — dat is @tekst;
  • sectie-ids voor export (--section) — dat is @sectie;
  • gezongen tekst — dat hoort op L:.

Zet je @title meer dan eens, dan geldt de laatste waarde in het bestand. Bij export naar .mscz zet tooling de titel expliciet als MuseScore- workTitle én als Title-tekst in het kopkader (MusicXML-import laat dat veld soms leeg).


@tekst

Wat het is. Zet een zichtbare tekstregel boven het eerstvolgende LSATB-systeem. Bij export naar MuseScore (.mscz) wordt dat system-tekst boven de bovenste notenbalk, uitgelijnd aan het begin van die maat (niet midden boven de eerste noot). Typisch: priestercue of rubriek vóór een koorantwoord.

Vorm. @tekst + spatie + een string tussen dubbele aanhalingstekens:

@tekst "P: Gezegend … der eeuwen"

Binnen de string: \" voor een aanhalingsteken, \\ voor een backslash.

Wel gebruiken voor korte cues die op het blad bij dat systeem horen (litanie: “P: …”, “D: …”, een korte rubriek). Zet de regel direct boven het LSATB-blok waarop de tekst moet verschijnen.

Niet gebruiken voor:

  • de gezongen tekst — die hoort op de lyrics-regel (L:);
  • de titel van het hele stuk — gebruik @title;
  • sticky context zoals toonsoort — gebruik @do / @mode / @oct.

Gedrag t.o.v. systemen. @tekst is niet sticky: de tekst geldt alleen voor het eerstvolgende LSATB-systeem. Meerdere @tekst-regels vóór hetzelfde systeem worden onder elkaar gezet (zelfde volgorde als in het bestand). Staat @tekst aan het eind zonder volgend systeem → warning.

@tekst forceert geen nieuw MuseScore-systeem. Wil je wél een nieuwe regel in de partituur, zet dan @mscz-newline (eventueel samen met @tekst). De cue staat boven de ge-cue-de maat. Op het partituur/MSCZ-pad: als die maat niet het begin van een MuseScore-systeem is, sluit export de vorige maat af met een dubbele maatstreep (behalve als daar al een herhaalstreep :| / :|| staat — die blijft zichtbaar) en zet de cue als SystemText. Geen mid-systeem-HBox en geen spacermaat: MuseScore tekent daar een accolade middenin het systeem of een leeg stuk notenbalk. Wil je wél een duidelijke regelsprong, gebruik @mscz-newline. Canonieke MSCZ-eisen: checklist S14–S19 en leesbaarheid — cues. Op het playback/MXL-pad (Coria): vóór elke mid-flow @tekst (niet de eerste maat van het stuk) komt dezelfde [PAUZE]-maat als na || — whole-rest met lyric [PAUZE], cue erboven. Staat er al een sectie-eindestreep (|| / :||) vóór die cue, dan geen tweede pauze. Herhaalstrepen (:|) blijven intact.

Lange cues met ... worden op twee regels gezet: de tweede regel begint bij .... Is de cue breder dan de maat, dan krijgt die maat minstens die breedte (MusicXML width / MuseScore-maat).

@mscz-newline
@tekst "P: Laat ons de Heer in vrede bidden"
L:  Heer ont-ferm_ U__  ||
S:  a    -   -     -    ||
A:  f    -   -     -    ||
T:  c    -   -     -    ||
B:  f    -   c     f    ||

@mscz-newline

Wat het is. Geeft aan dat bij mvsa → .mscz-conversie het eerstvolgende LSATB-systeem als nieuw MuseScore-systeem moet beginnen (nieuwe regelsprong op het blad). Heeft geen effect op de gezongen inhoud; alleen layout.

Vorm. Alleen het keyword, zonder argumenten:

@mscz-newline

Wel gebruiken als een antwoord, couplet of cue op een nieuwe regel van de partituur moet staan (bijv. litanie-antwoorden onder elkaar, of een duidelijke visuele breuk vóór een nieuw blok). Vaak samen met @tekst:

@mscz-newline
@tekst "P: Gezegend … der eeuwen"
L: A_-men_ |
…

Niet gebruiken voor:

  • cues zonder regelsprong — alleen @tekst volstaat (export zet desnoods een dubbele maatstreep vóór de cue);
  • sectiegrenzen in de bron — dat is || / @sectie;
  • scheiding van vscode-blokken zonder MSCZ-layout — dan volstaat een lege regel (optioneel @--- met commentaar).

Gedrag. Geldt alleen voor het eerstvolgende LSATB-systeem (niet sticky). Op het eerste systeem van de partituur is een explicit new-system overbodig (dat systeem begint al). Staat @mscz-newline zonder volgend systeem → warning. Ongeldig met argumenten → error.

Op het partituur/MSCZ-pad: export zet <print new-system="yes"/> op de eerste maat van dat systeem. Op playback/MXL is de markering aanwezig maar voor Coria niet bedoeld als layout-sturing.


Document-metadata (titel, personen, bron, tempo)

Deze keywords zetten partituur-metadata (bovenaan of in MuseScore-info), niet cues bij een LSATB-systeem. Laatste waarde in het bestand wint. @title staat hierboven apart uitgelegd. De persoons-/bron-keywords hieronder gebruiken dezelfde quoted-stringvorm; @tempo is een BPM-getal zonder aanhalingstekens.

Actief (gaan mee naar MusicXML / MuseScore)

Keyword Voorbeeld MusicXML MuseScore-meta
@title @title "(1a) Vredeslitanie" <work-title> titel
@ondertitel @ondertitel "Litanie van de vrede" <movement-title> subtitle
@composer @composer "Archimandriet Feofan" <creator type="composer"> composer
@tekstdichter @tekstdichter "…" <creator type="lyricist"> lyricist
@arrangeur @arrangeur "bew. Hemelum" <creator type="arranger"> arranger
@vertaler @vertaler "NL: …" <creator type="translator"> translator
@bron @bron "Liturgikon, p.147-149" <source> (+ MSCZ-colofon) source
@copyright @copyright "CC BY-SA 4.0 — …" <rights> (+ footer/colofon) copyright
@tempo @tempo 72 of @tempo 72 "Andante" sound tempo + optioneel <words> (via MusicXML)
@toon @toon "8" miscellaneous-field tone (via MusicXML)

@tempo. Aantal slagen per minuut (BPM) voor beluisteren en oefenen. Vorm: @tempo + spatie + geheel getal 1–999, optioneel gevolgd door een quoted tempo-woord, bijvoorbeeld @tempo 72 of @tempo 72 "Andante". Laatste waarde vóór een systeem wint voor die plek; het eerste @tempo in het bestand is het document-starttempo. Default als je @tempo weglaat: 130 (zelfde default als eenstemmige VSA).

Bij export naar MusicXML (playback/Coria én partituur) komt op de maat <sound tempo="…"/> (kwartnoot = BPM) plus een metronoommarkering met print-object="no". Het getal stuurt afspelen (audio/Coria); de metronoom blijft op het blad / in .mscz / PDF onzichtbaar. Het optionele woord wordt wél als zichtbare <words> gezet. MSCZ-nabewerking zet MuseScore- Tempo op visible=0 voor het geval de import de metronoom toch toont.

Lokale tempo-woorden op de L-regel ([rit], [atempo]) horen bij uitvoeraanwijzingen, niet bij @tempo.

@tempo 72
@tempo 72 "Andante"

Niet midden in een LSATB-systeem.

@toon. Kerktoon / oktoechos-nummer van het zangstuk (catalogus en MusicXML). Vorm: quoted string, bv. @toon "8". Gaat mee als <miscellaneous-field name="tone"> in <identification> (zelfde veldnaam als eenstemmige VSA tone). Zie de metadata-brug.

@toon "8"

@composer. Naam of aanduiding van de componist (of traditionele toeschrijving), zoals die rechtsboven op het blad / in MuseScore-info verschijnt. Gebruik dit niet voor het boek of blad waar je uit overneemt — dat is @bron.

@composer "Archimandriet Feofan"

@bron. Referentie naar de bron van de partituur (boek, bladzijden, uitgave), zodat je later terug kunt vinden waar deze notatie vandaan komt. Gaat mee in beide exportpaden:

  • MusicXML (playback/Coria én partituur): <identification><source>…</source>
  • MuseScore/MSCZ: meta-tag source

Op het MSCZ-blad: MuseScore toont meta source niet in de kop. De partituur-export zet @bron daarom als regel Bron: … in het colofon (onderaan), naast copyright en eventuele bibliotheek-id. Gebruik @bron voor de herkomst; gebruik @tekstdichter alleen voor een echte tekstdichter (die verschijnt dan wél als lyricist linksboven).

Optionele schrijfwijze met dubbele punt na het keyword: @bron: "…" ≡ @bron "…". Let op: bron: in een quoted string (bv. @tekstdichter "bron: koormap …") is gewoon tekst — dat is geen keyword en geeft geen warning; zet herkomst bij voorkeur via @bron.

@bron "Liturgikon, p.147-149"

@ondertitel. Ondertitel onder de hoofdtitel (bv. liturgische aanduiding). Gaat mee in partituur/MSCZ (movement-title / MuseScore subtitle); Coria- playback behoudt die tag (geen sanitize-strip).

@tekstdichter / @arrangeur / @vertaler. Personenrollen naast de componist; zelfde stringvorm. Alleen zetten als je die rol echt kent. @tekstdichter verschijnt op het MSCZ-blad (lyricist-plek). De partituurbron hoort in @bron (colofon), niet als nep-tekstdichter.

@copyright. Bronnotice voor footer (kort) en colofon (volledig) in .mscz, en <rights> in MusicXML. Zonder @copyright gebruikt MSCZ-export een default (CC BY-SA 4.0 + eredienst-zin).

Bibliotheek-id komt niet uit een @-keyword: tooling leidt die af uit het pad onder bibliotheek/… bij export.

Gereserveerd (nog niet in praktisch gebruik)

Deze keywords mag je al zetten (geen warning); validate controleert alleen de stringvorm. Export naar MusicXML/MSCZ negeert ze voorlopig — zodat de namen vastliggen voor later gebruik.

Keyword Bedoeling Voorbeeld
@genre Soort zangstuk (litanie, tropaar, …) voor catalogus/filters @genre "litanie"
@opmerkingen Redactionele notities voor de bewerker (niet bedoeld als bladtekst) @opmerkingen "nog controleren"

Niet gebruiken als vervanging van @tekst (zichtbare cue) of #-commentaar voor tijdelijke tipjes in de bron — @opmerkingen is voor blijvende metadata zodra tooling die gaat tonen.


@taal

Wat het is. Sticky passage-taal / laag-label voor hulptekst-export en Coria-partnamen: vanaf het eerstvolgende LSATB-systeem tot je @taal opnieuw zet. De keys zijn dezelfde lyrics-identifiers als op de lyrics-regels (alles wat met L/l begint).

Vorm.

Vorm Betekenis
@taal nl · @taal ksl · @taal auto Hele passage: richting voor primaire lyrics (L)
@taal Lap=aap Lus=noot Per lyrics-id een vrij label (Coria); spaties of komma’s
@taal L=ksl, L'=nl Zelfde; L' is alias voor L1
@taal "nl" Document-metadata (quoted); als de string nl of ksl is, ook sticky voor L
Waarde (richting) Effect bij --hulptekst
ksl Hulptekst = Latijn (uit kerkslavische bronletters)
nl Hulptekst = Cyrillisch (uit Nederlandse bronletters)
auto Per lettergreep detecteren (default als je @taal weglaat)
ander label Alleen Coria-naam (bv. aap); richting blijft auto/detect

Coria-partnamen (--hulptekst-as-parts): één MusicXML-part per stem × lyrics-laag, genaamd {stemidentifier} ({label}) — bijvoorbeeld Sop (aap), Zeep (noot). Stemidentifiers die precies S/A/T/B zijn (eventueel met cijfer) krijgen de bekende namen Soprano/Alto/Tenor/Bass. Ontbreekt een label voor de tweede laag bij nl/ksl, dan het complement (ksl↔nl).

Wel gebruiken voor gemengde passages, parallelle lyrics, of duidelijke Coria-keuzes. Matching is hoofdletterongevoelig; Lus2 deelt het label van Lus.

Niet gebruiken als vervanging van aparte uitvoeringsvormen (-nl / -ksl) wanneer de melodie of lettergreepdeling verschilt. Part-namen in MusicXML zijn globaal: bij wisselende @taal midden in één bestand volgen de Coria-labels de eerste sticky toekenning in de export.

@taal Lap=aap, Lus=noot
@oct sop=0, zeep=-1
Lap: Heer_ |
Lus: Хер_  |
Sop: a4    |
Zeep: f3   |

Zie kerkslavisch-transliteratie en het reviewcorpus.


@---

Wat het is. Optionele no-op die een LSATB-systeem afbreekt — hetzelfde effect als een lege regel. Voor een gewone scheiding tussen vscode-systemen volstaat die lege regel; @--- is vooral handig als je bij de scheiding commentaar op dezelfde regel wilt (@--- tweede couplet). Voor een nieuwe MuseScore-regel op het blad: gebruik @mscz-newline, niet alleen @--- of een lege regel.

Vorm. @--- of @ ---. Optioneel commentaar erna op dezelfde regel (wordt genegeerd, geen error/warning), bv. @--- tweede systeem of @ --- zie Liturgikon p.12.

Gewone scheiding (voorkeur: lege regel):

L: Heer_ … |
S: a     … |

L: Heer_ … ||
S: a     … ||

Wel @--- gebruiken als je commentaar wilt meenemen bij de scheiding:

L: Heer_ … |
S: a     … |
…

@--- volgende couplet

L: Heer_ … ||
S: a     … ||
…

Niet gebruiken als zichtbare inhoud op het blad — daarvoor is @tekst. Ook niet als vervanging van @mscz-newline (dat forceert de MSCZ-regelsprong). Zonder commentaar is @--- overbodig naast een lege regel.


Onbekende keywords

Alles wat de vorm van een keyword heeft maar niet in de lijst hierboven staat (bijv. @voices) mag je zetten om te experimenteren. vsa mvsa validate geeft een warning (MVSA-DIRECTIVE), geen error: export en verdere verwerking gaan door. Ongeldige keyword-vormen (bijv. @1foo) geven eveneens een warning. Zodra een keyword officieel wordt, komt het op deze pagina met vaste argumenten en gedrag.