Samenvatting: Orthodoxe kerkmuziek-repository project¶
Status per 25 juni 2026. Bedoeld als startpunt voor een vervolggesprek met Claude als het huidige gesprek de sessielimiet bereikt.
Doel van het project¶
Een systeem voor orthodoxe kerkmuziek (Slavische traditie) waarmee parochies
zangmateriaal kunnen beheren, delen en gebruiken voor de liturgie en voor het
instuderen van stemmen door koorleden. Het geheel wordt opgezet binnen de
GitHub-organisatie github.com/orthodox-ronl, ontsloten via
GitHub Pages (*.github.io).
Huidig experiment¶
We bouwen een bron-repository (bron) met daarin de zangstukken, en
zijn van plan om die te gaan testen via een kale Hugo-installatie voor de
parochie Hemelum (en later Groningen) die zangstukken uit bron ophaalt en
toont. Doel van dat experiment: erachter komen welke ontwerpbeslissingen de
bron-repo nodig heeft door 'm echt te proberen gebruiken, niet om nu al een
kant-en-klare site te bouwen.
Stand van zaken: alleen de bron-repo is uitgewerkt. De Hugo-kant is nog niet gestart. Dat is de logische volgende stap.
Architectuur — overwogen scenario's (besloten)¶
Drie scenario's zijn overwogen voor hoe parochies en de bron-repo zich tot elkaar verhouden:
- A. Monoliet bron + dunne parochie-sites — alles centraal, parochies consumeren alleen.
- B. Federatief — elke parochie een eigen volwaardige repo, bron-repo alleen gedeelde basis.
- C. Hybride — bron-repo blijft centraal, met een laagdrempelig contributieproces voor parochies.
Besluit: voorlopig scenario C in lichte vorm. Met 2-3 parochies (Hemelum, Groningen, mogelijk later Leeuwarden en Zwolle) en jij (de opdrachtgever) als enige technische beheerder — de koorleider/priester beoordeelt inhoudelijk maar werkt niet zelf met git — voegt een federatieve opzet (B) alleen overhead toe zonder voordeel. Eén bron-repo dus, met lichte, aparte presentatie-repo's per parochie (eigen "gezicht", gedeelde content).
Bron-repo: kernconcepten¶
Terminologie¶
- Zangstuk: de eenheid waarvoor een bron (VSA, scan, MusicXML, ...) bestaat. Vervangt de eerder gebruikte, te generieke term "item".
- Source / bron-variant: een specifieke versie van een zangstuk, met eigen herkomst (auteur/componist/arrangeur, referentie).
- Compositie (nog niet uitgewerkt): een verzameling zangstukken in een bepaalde volgorde voor een gebruikscontext (bijv. "Antifonen - weekdagen, Hemelum"). Bedoeld om duplicatie van VSA-inhoud over meerdere markdown-bestanden te voorkomen. Vorm (YAML vs. leesbaar document) nog niet bepaald — bewust opengelaten, prioriteit lager dan de bron-repo zelf.
Bron versus afgeleid: een principiële regel¶
Een bestand is een bron als er geen geautomatiseerd, herhaalbaar pad
bestaat om het uit een ander bestand in de repository te genereren. Dit
geldt voor scans, VSA-bestanden, en MusicXML/andere bestanden die
rechtstreeks uit een muziekprogramma komen (niet afgeleid van VSA). Een SVG
of MusicXML die door de vsa-tool automatisch uit een .vsa-bestand is
gegenereerd is afgeleid en wordt niet in de repository opgenomen — wordt
gegenereerd op het moment dat het nodig is (build-stap, nog niet
geïmplementeerd).
Drie statussen voor een source-entry¶
file:— het bronbestand staat daadwerkelijk in de repository.access:— het bestand wordt niet opgenomen omdat er copyright op rust; in plaats daarvan een contactpunt of URL.status: nog-niet-getranscribeerd— de bron is bekend (en vaak vrij van rechten), maar nog niet als bestand aanwezig. Geenfile:, geenaccess:. Nieuw geïntroduceerd toen bleek dat "bron nog niet getranscribeerd" iets anders is dan een copyright-kwestie.
Eén bronbestand met meerdere zangstukken — een algemene regel¶
- Tekst/VSA-bronbestanden met meerdere zangstukken (bijv. een markdown
met meerdere
::: vsa-notatie :::-blokken) → meteen splitsen in losse.vsa-bestanden, één per zangstuk. Geen probleem, want elk zangstuk krijgt zijn eigen klein bestand. - Scans/PDF's met meerdere zangstukken op één blad (zoals
Troparion+Kondakion toon 1 op één scan) → niet splitsen (zou bijsnijden
vereisen). In plaats daarvan: het bestand blijft bij één zangstuk, en het
andere zangstuk verwijst ermee naar het bestand via een relatief pad
(
file: ../ander-zangstuk/sources/scan/bestand.pdf). Als dit patroon vaker voorkomt, een gedeelde/scans/-map op het hoogste niveau overwegen.
Auteurschap / copyright¶
- Velden:
author,composer,arranger(gebruik wat van toepassing is; ook waarden als "Anoniem" of "Anoniem-2" zijn toegestaan). copyright_status:vrij,copyrighted, ofonbekend.- Copyright-gevoelig materiaal wordt vooralsnog niet in een aparte
private repo gezet — de metadata staat gewoon in de publieke bron-repo,
alleen het bestand zelf ontbreekt (zie
access:hierboven). Voor individuele zangstukken kan copyright-status worden vastgelegd; in het algemeen gaan we ervan uit dat het geen probleem wordt, zonder dat nu overal preventief uit te zoeken.
Liturgische metadata (nieuw, ad-hoc geïntroduceerd, mag verder groeien)¶
gelegenheid: de liturgische gelegenheid (bijv. "H. Nicolaas van Myra", "Zondag (opstandingscyclus)").gelegenheidsdatum: vaste kalenderdatum indien van toepassing (bijv. "12-06").gelegenheidstype: bijv.vast-feestofzondag-cyclus.tone: de liturgische toon (los van de identiteit/id van het zangstuk — bleek nodig omdat meerdere, totaal verschillende zangstukken in dezelfde toon kunnen staan).koormap_nummer: een bestaand, stabiel nummeringssysteem uit de Nederlandse liturgiepraktijk. Cijfer = volgorde van zangstukken voor niet-speciale zondagen; letter erachter = variant daarvan (bijv. "8a", "15c"). Let op: dit is iets anders dan de numerieke prefix in bestandsnamen zoals010-/020-/034-— dat laatste is slechts een sorteervolgorde van de scanbestanden zelf, geen liturgisch nummer (status: bevestigd door opdrachtgever).language: voor zangstukken met meerdere taalversies van dezelfde compositie (bijv. Cherubijnenhymne Kastorski: Kerkslavisch getranslitereerd- Nederlands).
- Bewust nog niet vastgelegd: schriftlezingen (epistel/evangelie) die in sommige bronbestanden bij een feest stonden. Die horen bij de viering/liturgische context als geheel, niet bij het zangstuk zelf — te behandelen zodra het liturgisch-kalender-subsysteem aan de orde is.
Naamgevingsconventie voor zangstuk-id's¶
- Voor zangstukken die bij een specifieke gelegenheid horen (heiligenfeest
op vaste datum):
<type>-<gelegenheid-slug>, bijv.troparion-nicolaas-van-myra,kondakion-tempelgang-moeder-gods. - Voor zangstukken die bij de zondagscyclus horen (afhankelijk van de
toon van de week, niet van een vaste datum):
<type>-zondag-toon-<n>, bijv.troparion-zondag-toon-1. Aanvankelijk per ongeluktroparion-toon-1genoemd; later hernoemd zodra de feest-specifieke naamgeving duidelijk maakte dat "toon" alléén niet onderscheidend genoeg is. - Geen vaste regel (nog) voor zangstukken zonder duidelijke
gelegenheid/cyclus (bijv.
trisagion,eengeboren-zoon) — daar is de algemene naam van het zangstuk zelf voldoende.
Licenties¶
Twee aparte licentiebestanden, omdat inhoud en eventuele code andere
licentievormen vragen:
- LICENSE-CONTENT: CC BY-SA 4.0, voor de zangstukken/notatie/metadata.
- LICENSE-CODE: MIT, voor eventuele scripts/tools.
Openstaande vragen / nog te beslissen¶
- Compositie-laag: vorm nog niet gekozen (puur YAML-verwijzingen vs. leesbaarder documentformaat). Lage prioriteit; pas relevant zodra er echt meerdere composities zijn om mee te vergelijken.
- Vierde zangstuk uit het Hemelum-bestand ("Rest van de kleine intocht") — bewust nog niet uitgewerkt op verzoek van de opdrachtgever.
- Gedeelde
/scans/-map: nu opgelost met cross-reference vanuit één zangstuk naar het bestand bij een ander zangstuk. Zodra dit patroon vaker voorkomt, dit herzien. - Kastorski copyright: status
onbekend, bewust niet uitgezocht (overlijdensjaar componist, auteursrechtelijke termijn). docs/zangstuk-formaat.md: nog te schrijven — een formele specificatie van het zangstuk.yaml-formaat, gebaseerd op de vele praktijkgevallen die inmiddels zijn doorlopen.- Hugo-opzet: nog te beginnen. Eerste concrete stap: kale Hugo-site voor Hemelum, met als doel één pagina die één zangstuk toont. Open vraag daarbij: hoe haalt Hugo de data uit de bron-repo op (git submodule, build-time fetch via CI, of Hugo Modules)? Voorlopige voorkeur: build-time fetch, om submodule-gedoe en tight coupling te vermijden.
- Mogelijk ontbrekende uploads: de opdrachtgever dacht meer markdown-/scanbestanden geüpload te hebben dan er daadwerkelijk zijn aangekomen. Geen technisch probleem geconstateerd — gewoon opnieuw uploaden indien nodig.
Technische randvoorwaarden van de werkomgeving (voor Claude zelf)¶
- Geen directe toegang tot de computer van de opdrachtgever: alleen
bestanden die expliciet zijn geüpload, zijn leesbaar; alleen bestanden die
expliciet via
present_filesworden aangeboden, zijn voor de opdrachtgever downloadbaar. - Werk gebeurt in een tijdelijke containeromgeving die niet persisteert tussen gesprekken.
Volledige boomstructuur van de bron-repo tot nu toe¶
Onderstaande structuur toont alle bestanden zoals ze tot nu toe zijn
aangemaakt, inclusief de inhoud van elke zangstuk.yaml als commentaar
(zodat boom en inhoud in één oogopslag te zien zijn). PDF/VSA-bestanden zijn
hier alleen als bestandsnaam genoemd; hun inhoud staat niet herhaald (die is
al apart gedeeld in dit gesprek, en blijft ook gewoon op je eigen schijf
staan zodra je de eerder gedeelde bestanden hebt gedownload).
bron/ # root van de bron-repository
README.md
LICENSE-CONTENT # CC BY-SA 4.0
LICENSE-CODE # MIT
.gitignore
docs/
zangstuk-formaat.md # NOG TE SCHRIJVEN
zangstukken/
antifoon-1-weekdagen/
zangstuk.yaml
# id: antifoon-1-weekdagen
# title: "1e Antifoon (weekdagen)"
# sources:
# - id: liturgikon
# author: "Liturgikon"
# reference: "Liturgikon, pp. 174-175, 270-271"
# copyright_status: vrij
# status: nog-niet-getranscribeerd
# note: "Bron bekend en vrij van rechten, maar nog niet als
# VSA-bestand getranscribeerd."
# - id: groningen
# file: sources/vsa/groningen.vsa
# based_on: liturgikon
# author: "Parochie Groningen"
# description: "Refreintekst 'Door de gebeden van de heilige
# Moeder Gods, o Heiland, red ons'"
# copyright_status: vrij
sources/
vsa/
groningen.vsa
antifoon-2-weekdagen/
zangstuk.yaml
# id: antifoon-2-weekdagen
# title: "2e Antifoon (weekdagen)"
# sources:
# - id: liturgikon
# author: "Liturgikon"
# reference: "Liturgikon, pp. 174-175, 270-271"
# copyright_status: vrij
# status: nog-niet-getranscribeerd
# note: "Bron bekend en vrij van rechten, maar nog niet als
# VSA-bestand getranscribeerd."
# - id: groningen
# file: sources/vsa/groningen.vsa
# based_on: liturgikon
# author: "Parochie Groningen"
# description: "Refreintekst 'Verlos ons Zoon van God, Die
# wonderbaar zijt in Uw heiligen...'"
# copyright_status: vrij
sources/
vsa/
groningen.vsa
eengeboren-zoon/
zangstuk.yaml
# id: eengeboren-zoon
# title: "Eengeboren Zoon (weekdagen)"
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
# NOG NIET UITGEWERKT (op verzoek opdrachtgever):
# troparia-kleine-intocht-weekdagen/ ("Rest van de kleine intocht")
troparion-zondag-toon-1/
zangstuk.yaml
# id: troparion-zondag-toon-1
# title: "Troparion - Zondag, toon 1"
# gelegenheid: "Zondag (opstandingscyclus)"
# gelegenheidstype: zondag-cyclus
# toon: 1
# sources:
# - id: scan-koormap-010
# file: sources/scan/010-troparion-kondakion-toon-1.pdf
# author: "Liturgikon"
# copyright_status: vrij
# note: "Scan bevat zowel het Troparion als het Kondakion van
# toon 1. Zie ook het zangstuk kondakion-zondag-toon-1,
# dat naar dit bestand verwijst. Voorlopige bron (platte
# tekst, geen notatie); te vervangen zodra een VSA- of
# MusicXML-versie beschikbaar is."
# - id: groningen
# file: sources/vsa/groningen.vsa
# based_on: scan-koormap-010
# author: "Parochie Groningen"
# copyright_status: vrij
# note: "VSA-transcriptie, afkomstig uit bronbestand
# 'zondag-toon-1.md' (koormap Groningen). Inhoudelijk
# gelijk aan scan-koormap-010, nu als VSA-notatie
# beschikbaar."
sources/
scan/
010-troparion-kondakion-toon-1.pdf
vsa/
groningen.vsa
kondakion-zondag-toon-1/
zangstuk.yaml
# id: kondakion-zondag-toon-1
# title: "Kondakion - Zondag, toon 1"
# gelegenheid: "Zondag (opstandingscyclus)"
# gelegenheidstype: zondag-cyclus
# toon: 1
# sources:
# - id: scan-koormap-010
# file: ../troparion-zondag-toon-1/sources/scan/010-troparion-kondakion-toon-1.pdf
# author: "Liturgikon"
# copyright_status: vrij
# note: "Dit zangstuk heeft geen eigen scanbestand: de scan
# bevat zowel het Troparion als het Kondakion van toon 1,
# en is fysiek opgeslagen bij het zangstuk
# troparion-zondag-toon-1. Eerste geval van een scan die
# door meerdere zangstukken wordt gedeeld; bij herhaling
# een gedeelde /scans/-map overwegen."
# - id: groningen
# file: sources/vsa/groningen.vsa
# based_on: scan-koormap-010
# author: "Parochie Groningen"
# copyright_status: vrij
# note: "VSA-transcriptie, afkomstig uit bronbestand
# 'zondag-toon-1.md' (koormap Groningen)."
sources/
vsa/
groningen.vsa
# (geen sources/scan/ hier - zie note hierboven)
trisagion/
zangstuk.yaml
# id: trisagion
# title: "Trisagion"
# koormap_nummer: "8a"
# sources:
# - id: scan-koormap-020
# file: sources/scan/020-_8a__trisagion.pdf
# author: onbekend
# copyright_status: onbekend
# note: "Scan met genoteerde muziek (geen VSA). Tekst in het
# Nederlands met Kerkslavische transliteratie.
# Componist/arrangeur niet op het blad vermeld."
sources/
scan/
020-_8a__trisagion.pdf
cherubijnenhymne-kastorski/
zangstuk.yaml
# id: cherubijnenhymne-kastorski
# title: "Cherubijnenhymne (Kastorski)"
# koormap_nummer: "15c"
# sources:
# - id: scan-koormap-034-ru
# file: sources/scan/034-_15c__cherubijnen_hymne__kastorski_-_ru_.pdf
# composer: "A. Kastorski"
# language: kerkslavisch-getranslitereerd
# copyright_status: onbekend
# note: "Zelfde compositie als scan-koormap-034-nl, alleen
# andere taal. Copyright-status nog niet uitgezocht."
# - id: scan-koormap-034-nl
# file: sources/scan/034-_15c__cherubijnen_hymne__kastorski_-_nl_.pdf
# composer: "A. Kastorski"
# language: nederlands
# copyright_status: onbekend
# note: "Zelfde compositie als scan-koormap-034-ru, Nederlandse
# vertaling van de tekst."
sources/
scan/
034-_15c__cherubijnen_hymne__kastorski_-_ru_.pdf
034-_15c__cherubijnen_hymne__kastorski_-_nl_.pdf
cherubijnenhymne-onbekend/
zangstuk.yaml
# id: cherubijnenhymne-onbekend
# title: "Cherubijnenhymne (vooralsnog ongeïdentificeerd)"
# sources:
# - id: scan-koormap-groningen-2019
# file: sources/scan/koormap-groningen-2019.pdf
# author: onbekend
# copyright_status: onbekend
# note: "Scan uit koormap Groningen, 2019. Voorlopige bron; te
# vervangen zodra een VSA- of MusicXML-versie beschikbaar
# is. Componist/herkomst nog niet vastgesteld.
# PLACEHOLDER-bestand in de huidige uitwerking, geen
# echte scan-inhoud."
sources/
scan/
koormap-groningen-2019.pdf # placeholder, nog te vervangen
troparion-nicolaas-van-myra/
zangstuk.yaml
# id: troparion-nicolaas-van-myra
# title: "Troparion - H. Nicolaas van Myra"
# gelegenheid: "H. Nicolaas van Myra"
# gelegenheidsdatum: "12-06"
# gelegenheidstype: vast-feest
# toon: 4
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
kondakion-nicolaas-van-myra/
zangstuk.yaml
# id: kondakion-nicolaas-van-myra
# title: "Kondakion - H. Nicolaas van Myra"
# gelegenheid: "H. Nicolaas van Myra"
# gelegenheidsdatum: "12-06"
# gelegenheidstype: vast-feest
# toon: 3
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
troparion-apostel-andreas/
zangstuk.yaml
# id: troparion-apostel-andreas
# title: "Troparion - Apostel Andreas, de Eerstgeroepene"
# gelegenheid: "Apostel Andreas, de Eerstgeroepene"
# gelegenheidsdatum: "11-30"
# gelegenheidstype: vast-feest
# toon: 4
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
kondakion-apostel-andreas/
zangstuk.yaml
# id: kondakion-apostel-andreas
# title: "Kondakion - Apostel Andreas, de Eerstgeroepene"
# gelegenheid: "Apostel Andreas, de Eerstgeroepene"
# gelegenheidsdatum: "11-30"
# gelegenheidstype: vast-feest
# toon: 2
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
troparion-tempelgang-moeder-gods/
zangstuk.yaml
# id: troparion-tempelgang-moeder-gods
# title: "Troparion - Tempelgang van de Moeder Gods"
# gelegenheid: "Tempelgang van de Moeder Gods"
# gelegenheidsdatum: "11-21"
# gelegenheidstype: vast-feest
# toon: 4
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
kondakion-tempelgang-moeder-gods/
zangstuk.yaml
# id: kondakion-tempelgang-moeder-gods
# title: "Kondakion - Tempelgang van de Moeder Gods"
# gelegenheid: "Tempelgang van de Moeder Gods"
# gelegenheidsdatum: "11-21"
# gelegenheidstype: vast-feest
# toon: 4
# sources:
# - id: liturgikon
# file: sources/vsa/liturgikon.vsa
# author: "Liturgikon"
# copyright_status: vrij
sources/
vsa/
liturgikon.vsa
Sjablonen vs composities (notitie 2026-07)¶
| Concept | Waar | Normatief |
|---|---|---|
| Compositie | bron/composities/*.yaml (toekomst) |
terminologie §19 |
| Sjabloon | markdown parochie content-source | catalogus-samenstelling-zangstuk.md |
| Samenstelling | gepubliceerde markdown + :::include |
terminologie §18 |
De hugo-demo goddelijke-liturgie.yaml is een legacy inventarisatie; nieuw
parochiewerk: sjablonen + catalogus (handleiding
sjabloon schrijven).
Hoe verder te gaan in een nieuw gesprek¶
Plak dit document als eerste bericht, en voeg toe wat je daarna wilt doen —
bijvoorbeeld:
- "Laten we nu docs/zangstuk-formaat.md schrijven op basis van het
bovenstaande."
- "Laten we beginnen met de Hugo-opzet voor Hemelum."
- "Hier zijn nog een paar markdown-/scanbestanden met zangstukken, voeg die
toe volgens dezelfde conventies."