Prohlížení vývoje antifon

20.10.2011 22:30 | kategorie: Projekt | Komentáře

Některé antifony ze starších vrstev projektu mají za sebou poměrně dlouhou historii revizí melodie. Rád bych představil nový nástroj, který umožňuje tuto historii si prohlédnout.

V adresáři se zdrojovými kódy projektu se ve složce "nastroje" nachází skript prehledverzi.rb. Je to skript napsaný v jazyce Ruby, pro jeho spuštění je tedy potřebný příslušný interpret. Nemá žádné grafické uživatelské rozhraní a spouští se z příkazové řádky. (Dobře vím, že právě teď většinu čtenářů dokonale přešla chuť ho zkoušet. S tím se počítá - tento článek je především pro další skladatele a "skladatele", kteří píší noty v LilyPondu a pro správu verzí používají git a po drobné úpravě by můj skript třeba mohli dobře využít.)

Skriptu se jako jediný argument na příkazové řádce předá název souboru, jehož historie má být získána. Pro správnou funkci skript musí být spuštěn v Git-repositáři a zpracovávaný soubor musí být zdrojový kód not pro sázecí program LilyPond. Tento soubor dále musí být v Git-repositáři vedený. (Skript je totiž primitivní nadstavbou nad nástroji git.) Nakonec je pro funkci skriptu potřeba adresář "pracovni", do kterého skript ukládá své pomocné soubory i svůj výstup.

      git clone git://github.com/igneus/In-adiutorium.git
      cd In-adiutorium
      mkdir pracovni
      ruby nastroje/prehledverzi.rb kompletar.ly
    

Skript z git-repozitáře vytahá všechny dostupné verze specifikovaného souboru (resp. všechny ty, které přímo vedly ke vzniku té aktuální) a pro každý jednotlivý kousek not (score) vytvoří v pracovním adresáři soubor, který obsahuje všechny její verze od nejnovější po nejstarší. Ten je možné normálně přeložit LilyPondem a prohlížet.

Na ukázku jsem připravil historii jedné z antifon kompletáře.

Napsal jsem skript prehledverzi.rb výhradně pro potřeby projektu In adiutorium a bez ambic na funkčnost za jeho hranicemi. Dovede si poradit jen se zcela primitivními soubory not - nerozumí ani lilypondovským proměnným, ani vnořeným souborům, nedovede si adekvátně poradit s textem vloženým mezi noty příkazem \markup, ... Pro potřeby, pro které byl napsán, ale funguje dostatečně. Podobný skript, který by si dokázal korektně poradit s jakýmikoli notami napsanými v LilyPondu, by sice nejspíš byl velice užitečnou pomůckou pro řadu uživatelů, nevystačil by ale při zpracovávání not s jednoduchou mechanickou fintou a musel by obsahovat kompletní nebo téměř kompletní sémantický analyzátor jazyka LilyPond - a to dělat nechci. A neumím.

Důvodem vzniku skriptu byla potřeba mít možnost kontrolovat degenerace melodie - melodii antifony, která se mi z nějakého důvodu po určitém časovém odstupu přestane líbit, předělám. Když ale některá antifona nemá na melodie štěstí a projde takovým předěláním desetkrát, bohužel není jisté, že desátá melodie je lepší než devět předchozích. Možnost vidět je všechny za sebou a porovnávat je tedy důležitá.

[EDIT 19.2.2012] Skript už dlouho umí vyrobit přehledný soubor obsahující vývoj všech antifon ze zpracovávaného souboru. Oddíl každé antifony je nadepsán jejím textem a každý commit má u sebe datum.