Coder Social home page Coder Social logo

aszaf's Introduction

Ászáf

Build Status

Magyar Keresztény OpenLyrics adatbázis

Az adatbázist azért hoztuk létre, hogy a ma használatos legismertebb keresztény dicsőítő, imádó, hitvalló és evangelizáló dalokat egy helyen meg lehessen találni és letölteni az OpenLP számára (http://openlp.org/) OpenLyrics formátumban (http://www.openlyrics.org/). Bár a későbbiekben más jellegű dalszövegek is bekerültek a gyűjteménybe, az továbbra is a keresztény liturgikus könnyűzenére koncentrál. Noha a létrehozók katolikusak, az adatbázis nyitott más felekezet gyűjteményei előtt is, hiszen elég sok dalunk máris közös.

A gyűjtemény kiindulópontja a Szent András Evangelizációs Iskola OpenSong formátumú „Énekfüzet” adatbázisa volt. Nagy mennyiségű dalszöveget konvertált Riszterer Tamás (@triszterer) a „Diatár - Templomi énekvetítő program” (http://diatar.eu) adatbázisából. Köszönet Rieth Józsefnek, hogy hozzájárult az énektárak OpenLyrics formátumúvá konvertálásához és azok közzétételéhez.

Letöltési oldal: http://gyuris.github.io/aszaf

Ez a mű a Creative Commons Nevezd meg! - Így add tovább! 4.0 Nemzetközi Licenc (CC BY-SA 4.0) feltételei szerint felhasználható, terjeszthető, módosítható.

Használat:

  • Csomagolás: node util/build.js
  • Ellenőrzés: node util/validate.js

aszaf's People

Contributors

atmenta avatar gyuris avatar marczellm avatar tomiolah avatar triszterer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aszaf's Issues

Világosságod küld el

A „Világosságod küld el” kezdetű dal mindkét összeállításban szerepel. Mi lesz ezzel?
Az Énekfüzet verzióban rossz a dalrészek sorrendje!

Egy adatbázis és gyűjtemények

Számunkra fejlesztőknek cél, hogy egy dalt csak egy helyen tartsunk karban. De az is cél, hogy a felhasználók egy kattintással kész gyűjteményeket tölthessenek le, ne kelljen kimazsolázniuk, hogy mit kérnek és mit nem.

Alakítsuk át a jelenlegi struktúrát build-es rendszerre.

Legyen egy forrásadatbázis (pl. /master mappa) Itt ne legyenek gyűjtemények mappái. Itt minden dalban legyen benne, hogy milyen gyűjteményben hogyan szerepel. A többszörösséget az OpenLyrics most is megengedi. Pl.:

<songbooks>
  <songbook name="Szent András Énekfüzet" entry="156"/>
  <songbook name="Sárga könyv" entry="212"/>
</songbooks>

Készüljön egy build szkript (nem tudom milyen nyelven), amely végiglépdel az összes éneken és

  • berakja egy a gyűjtemény nevével megegyező mappába pl. /songbooks/Szent András Énekfüzet (ezt kizárjuk a git forrásból),
  • majd tömörített állományt hoz létre belőlük a gyökérbe pl. /Szent András Énekfüzet.zip,
  • készít egy jegyzéket CSV formátumban, hogy milyen ének található az adatbázisban és elmenti a gyökérbe

A buildelés kiadásonként történjék. Minden módosítás után ne futassuk le a buildelést, hanem legyenek kiadások.

OpenLyrics szabvány fejlesztése

Ez rázós. Forkolni kellene az OpenLyrics szabvány. Mérlegelve, hogy a fórum eléggé halott, a kód át lett migrálva két példányban (openlyrics és matysek) is a Github-ra, de azóta érintetlen, igen:

  • szóljunk mindkét helyen, hogy szeretnénk előre lépni, van-e felelős fejlesztő, akivel dolgozhatunk vagy forkoljuk a projektet.
  • ha nem válaszolnak, akkor meg forkojunk és menjünk előre.

Fontos, hogy módosítsuk a RELAX NG sémát és a hozzá tartozó dokumentációt is csináljuk tovább (angolul) és adjunk ki magunknak egy 0.9-es kiadást. Így van a legtöbb esély, hogy előre vigyük a projektet.

Témakörök:

  • Előjáték, közjáték, utójáték módja → #8
  • Versszakon belüli ismétlődések → #9
  • Felütések és szünetjeles (=sor végén álló) akkordok → #10
  • Akkordok szöveg nélkül probléma → #10
  • Akkordok és szótagok hossza probléma → #10

author unknown

Az OpenLP-be importálva sok dal „author unknown” szerzővel jelenik meg.

  1. Le kell csekkolni, hogy ez a legújabb OpenLP-ben is így van-e?
  2. Ha igen, akkor ezt meg ki kellene küszöbölni

build: /songbook

Jelenleg a csomagolt gyűjtemények egy /songbook mappában találhatók. Tehát így: /songbook/Zöld Könyv.

Ha lehetséges, meg kellene szüntetni ezt, hogy csak a saját gyűjtemény nevű mappába legyenek.

OpenLyrics: CSS hivatkozás

Jó lenne ha a úgy tudnánk elmenteni a master-be a OpenLyrics állományokat, hogy azokba beletennénk a CSS fájlra való hivatkozást. Vagyis ez azt jelenti, hogy egyből meg lehetne nézni az állományt, könnyű ellenőrizni, ha valami hibás, nem jól sikerült. Kb. így:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="openlyrics.css" type="text/css"?>
<song xmlns="http://openlyrics.info/namespace/2009/song">

Probléma: Ha így próbálom importálni az állományt OpenLP-be, akkor nem sikerült az import, hibás XML formázásra panaszkodik. Egy downgrade szkript (#12) segíthet ezen, hogy a gyűjteménybe exportáláskor kivegyük a hivatkozást.

OpenLyrics: Ütemvonal

Ez előjátéknál hasznos lehet az ütemvonal pl. így:
| A A+ D | E |

Valóban, Laci is kérte, hogy lehetőleg legyen. Ezt szemantikusan egy ütemjelzéssel lehet leírni legtisztábban. Attól függően, hogy végül az akkordokat a szövegre írjuk, vagy hagyományosan két módon is lehetne specifikálni beat:

Hagyományos módon:

<line>
  <chord name="A" /><chord name="A+" /><chord name="D" /><beat /><chord name="E"><beat />
</line>

Szemantikusabban, mely jelzi, hogy az ütem mit foglal magába:

<line>
  <beat><chord name="A" /><chord name="A+" /><chord name="D" /></beat>
  <beat><chord name="E"></beat>
</line>

Ha ezt kiegészítjük a #10-ben jelzett duration attribútummal az akkordra is, akkor azt is el tudjuk érni, hogy bizonyos akkordok után szünet legyen.

<chord name="A" duration="2" /><chord name="A+" />

OpenLyrics: Új elemek

Felbontva a #7-t:

A probléma leírása: Van néhány egybefüggő probléma abból fakadóan, hogy a szöveg és az akkord hossza nincs szemantikailag egymáshoz rendelve. Ez megjelenésben azt jelenti, hogy jelenleg az akkordról csak azt tudjuk megmondani, hogy a szöveg egy bizonyos pontján helyezkedjen el, mégpedig onnan jobbra folyva:

  1. Felütések: Időnként a szöveg elé kell rakni az akkordot.
  2. Szünetjeles (=sor végén álló) akkordok: időnként több akkordot kell írni a sor végére (vagy a sor elejére), de ezek a egymásra folynak.
  3. Akkordok szöveg nélkül: a szöveg nélküli versszaktípusokban az akkordok szöveg nélkül kell álljanak, de ezek szintén egymásra folynak, mert nincs hosszuk.
  4. Akkordok és szótagok hossza: Ha gyorsan jön egy akkordváltás, akkor ezek egymásra csúsznak, mivel nincs hosszértékük a szöveghez viszonyítva.

A problémát akkor érthetjük meg legkönnyebben, ha a ennek a javaslatnak a 3D-s dobozmodelljét szemügyre vesszük:
dobozmodell

  • A neon-zöld színű akkordok simán csak jobbra folynak. Látható, hogy az akkor maga „nem tudja” mekkora helyet foglal a szöveg, amire érvényes.
  • A sárga színű akkordok viszont a szövegre vannak írva. Látható is a dobozmodellje, ahogy kiemelkedik, ez azt jelenti, hogy az akkord tudja mennyi helyet foglal a szöveg és ha szükséges, akkor kijjebb nyomja a doboz jobb oldalát (így keletkezik az elválasztójel a hátterében).

A példa refrénjének 2. és 4. sora közt a különbség:

Ho<chord name="A" />sanna in the <chord name="C#m" />high<chord title="B" />est.
Ho<chord name="A">san</chord>na in the <chord name="C#m">high</chord><chord name="B" />est.

Az (1) problémára megoldás

<chord position="before" name="A" />I see His love and mercy

El lehet azon gondolkodni, hogy a position="after" vagy a position="middle" szükséges-e?

Első javaslat a többire

Két akkord írásmódot kell engedélyezni, melyek mást jelentenek szemantikusan és máshogy is kell őket megjeleníteni:

  • A normált, ahogy eddig írtuk csak akkor használjuk, ha nincs kapcsolatban a szöveggel:
    • felütés (1),
    • szabadon álló sor végi vagy eleji akkordok esetén (2)
    • és a szöveg nélküli versszaktípusok esetén (3). Mivel ezt az akkordírást meg lehet különböztetni szemantikailag (CSS pl.: chord:empty) így le tudjuk kezelni a másik esettől.
  • Minden szövegre írt akkordot szótagra írunk, így:
Ho<chord name="A">san</chord>na

Ezzel a javaslattal csak egy baj van: visszafelé nem kompatibilis. A 0.8-as verzióra készített akkordokra külön kell karbantartani egy egyszerű jobbra folyó nézetmódot (ez simán kezelhető a <song version="0.8"> alapján).

Második javaslat a többire

Ez a következő csomagot jelentené:

  • A szövegben két módon lehet megadni az akkordokat. A hagyományosan írt akkordok értelmezhetőek és jobbra folynak, mint eddig. De a (4) probléma miatt lehet szótagra is írni. Így visszafelé is kompatibilis az akkordírás, de előremutató is.
  • A (2) és (3) problémára be kell vezetni a 'nem énekelt szünet' fogalmát a szövegben, melynek a hosszát is lehet szabályozni az aktuális ütem egynegyedét véve alapértéknek. Pl.:
<chord name="A"><rest /></chord><chord name="G"><rest duration="2" /></chord>

Ez egyrészt:

  • korrekt szemantika a szövegben és az előjátékban is
  • másrészt meg is lehet jeleníteni egymásra csúszás nélkül, mert a szünetjelből megjelenítési dobozt lehet kreálni.

Értékelés

Én az első preferálom, mert ez a legszebb szemantikai megvalósítás. Kérdés mennyire örülnek azok, akiknek már van egy halom akkordjuk OpenLyrics-ben.

Duplikátum

@triszterer, fogtam néhány duplikátumot az OpenLP duplikátumkeresőjével:

/master/Kegyelmed, Úr Jézus.xml
/master/Kegyelmed Úr Jézus (ismeretlen szerző).xml

/master/Áldás, méltóság és er.xml
/master/Áldás, méltóság és erő (Leonard Jones, Prazsák László).xml

/master/Laudate Dominum, laudate.xml
/master/Áldjátok az Úrat - Laudate Dominum.xml

/master/Áldott légy nagy jóságodért.xml
/master/Áldott légy nagy jóságodért (ismeretlen szerző).xml

/master/Áldott légy, Uram, szent.xml
/master/Bless the Lord my soul.xml

/master/Bless the Lord my soul.xml
/master/De profundis (A legsötétebb ég alatt).xml

/master/Stabat Mater.xml
/master/Áll a fájdalomnak anyja.xml

/master/Mise III.xml
/master/A mélyből kiáltok (Sillye Jenő).xml
/master/Mise III.xml
/master/Dicsőség.xml
/master/Szent vagy.xml
/master/Mise III.xml
? /master/Isten Báránya, Te elveszed.xml
? /master/Mise III.xml vagy
? /master/Mise IV.xml

/master/Mise IV.xml
/master/Uram, irgalmazz.xml
/master/Mise IV.xml
/master/Dicsőség a magasságban.xml

/master/Anyánk az égben.xml
/master/Anyánk vagy az égben.xml

/master/Apokrif ima.xml
/master/Apokrif ima.xml

/master/Jézus Király.xml
/master/Jézus Király.xml

/master/Édes Jézus (2).xml
/master/Édes Jézus, légy vendégünk.xml

/master/Szeretem örökké.xml
/master/Eléd lépek, jó Uram, hol béke.xml

? /master/Én Uram, én Istenem (DAX, Fülei Szt. Miklós).xml
? /master/Ti vagytok a Föld sója (Én Uram, én Istenem).xml

/master/Mária édesanyám, Béke.xml
/master/Gospa májká mojá.xml

/master/Fogadd el Uram (ismeretlen szerző).xml
/master/Fogadd el, Uram (Tolcsvai László).xml

/master/Hála legyen (Isten a szépség).xml
/master/Isten a szépség, Isten a jó.xml

/master/Halld, Izrael.xml
/master/Halld, Izrael (ismeretlen szerző).xml

/master/Hogyha csak egy ((Grupo Nueva Vida), Fábry Kornél).xml
/master/Hogyha csak mustármagnyi.xml

/master/Mise.xml
/master/Irgalmazz énnekem, jó Atyám.xml

/master/Isteni béke.xml
/master/Isteni béke, boldog öröm.xml

/master/Jézusom, Jézusom.xml
/master/Jézusom, Jézusom, a gyermeked lettem.xml

/master/Jézus vár terád.xml
/master/Jézus vár terád (ismeretlen szerző).xml

/master/Jöjj, itt az idő (Brian Doerksen, (Golgota Debrecen), Csiszér László szövegvariánsa).xml ) [ez a szövegvariáns kerüljön be!]
/master/Jöjj, itt az idő, hogy ébredj.xml

/master/Légy hideg vagy légy meleg.xml
/master/Válasszál.xml

/master/Megszülettem (Máriáss Péter).xml
/master/Megszülettem, Te adtad életem.xml

/master/Mentsd meg a lelkem.xml
/master/Tisztítsd meg szemem (ismeretlen szerző).xml
[eltérő szöveg, a kék könyv szövegvariánsa a megbízhatóbb általában]

/master/Tisztítsd meg szemem (ismeretlen szerző).xml
/master/Totus tuus.xml

/master/Nap, hold, csillagok (ismeretlen szerző).xml
/master/Szeretünk Téged, Mária.xml

/master/Ó drága Jézusunk.xml
/master/Ó, drága Jézusunk, jóságod.xml

/master/Ó Jézus, a Te lényed.xml
/master/Ó, Jézus, a Te lényed (Csiszér László).xml

/master/Szentlélek jöjj.xml
/master/Szentlélek jöjj, szállj le rám (Csiszér László).xml

/master/Szentlélek, jöjj, lobogó Láng.xml
/master/Szentlélek, jöjj, lobogó Láng (J-M. Morin, Fábry Kornél).xml

/master/Szentlélek, úgy kérünk.xml
/master/Szentlélek, úgy kérünk (Varga Attila).xml

/master/Szent, szent a neve.xml
/master/Szent, szent a neve (Viszmeg László, Viszmeg Viola).xml

/master/Szent vagy, szent vagy, szent.xml
/master/Szent vagy… Jahve Sabaoth (Kiko Argüello, Csiszér László).xml

/master/Szeretet áradjon.xml
/master/Szeretet áradjon (ismeretlen szerző).xml

/master/Tárd ki a karod, emeld fel.xml
/master/Tárd ki karod.xml

? /master/Üdvözlégy, Mária (ismeretlen szerző).xml
? /master/Üdvözlégy Mária, malaszttal (Hollósy Péter).xml

Ezek nem duplikátumok, de szerintem összevonandók:

/master/Kanadai mise - Alleluja.xml
/master/Kanadai mise - Kyrie.xml
/master/Kanadai mise - Sanctus.xml

Utána nézel ezeknek? Ha szerinted is duplikátumok, kérlek egyesítsd őket ügyelve a szerzőkre, alcímekre, könyvekre.

Kérlek, dalonként kommitold (ne ömlesztve), hogy követhető legyen mi történik.

És ha ezzel megvagy, újra importáljuk be az összeset és újra futtassuk le. :-) Jó kis cucc.

OpenLyrics: downgrade szkript

Ahogy nézegetem a #8, #9, #10, #11 bejegyzéseket és a beszélgetésünket, különösen ezt, támadt egy korszakalkotó :-) zseniális ötletem: készítsünk egy downgrade szkriptet, amely a 0.8-as szabványra alakítja vissza az állományainkat. Így végre megszabadulunk attól a kínzó problémától, hogy szép-szép minden ötletünk, csak nem fog együttműködni a nem saját programokkal, ezért nem azt csináljuk, ami kellene, hanem ami belefér.

Szóval, készülhet ez DOM manipulációval, lehet szintén NodeJS-ben, vagy készülhet XSLT-es átalakítással (talán ez a legszebb, de az XSLT-vel sohasem jutottam túl az ismerkedési szinten) is. A lényeg:

  • az előjáték, közjáték, utójáték egyszerűen törlődik vagy már ismert versszaktípussá alakul (#8),
  • a versszakon belüli ismétlések olyanná alakulnak, ahogy most is vannak, sima szöveggé (#9),
  • a szövegre írt akkordok simává lesznek: pl. <chord name="A">Még nem is éltem én</chord><chord name="A" />Még nem is éltem én. Ide értve a #10 összes módosítását (szünetjel, felütés, hossz attribútum), amiben majd megállapodunk.
  • az ütemvonal törlésre kerül (#11)

A helyes irány szerintem az, hogy olyan leírónyelvünk legyen, amelyben mindent meg lehet csinálni, amire szükségünk van. A „butább” programoknak pedig lesz egy visszabutított verzió, amivel nem kell foglalkozni, a build szkript legyártja és nagyszerű. Lehet betolni OpenLP-be, vagy amibe kell.

OpenLyrics nyomtatható változat

CSS technikával meg lehetne oldani a nyomtatható változatokat:

  • Sima CSS-sel böngészőben is meg lehet jeleníteni az XML-t
  • Prince-szel PDF is előállítható.

Ehhez el kell csak készíteni a CSS állományt és hivatkozást beszúrni az OpenLyrics állományba. A build folyamatba is beiktatható a PDF generálás.

Meg kell vizsgálni, hogy okoz-e problémát, ha a /master-be úgy kerülnek az XML állományok, hogy elve hivatkoznak a CSS állományra, vagyis egyből lehet előnézetük.

Így később az is megoldható, hogy egész gyűjteményt generáljunk PDF-be.

OpenLyrics: Versszakon belüli ismétlődések

Felbontva a #7-t:

A probléma leírása: A versszakok ismétlődésére van az OpenLyricsnek már megoldása. De vannak versszakon belüli ismétlődések is (beleértve) a hangszeres versszaktípusokat is. A jelenleg alkalmazott megoldás:

<lines>‖: Hogy ha csak mustármagnyi hitetek is volna, ezt mondotta a mi Urunk. :‖</lines>

De itt az ismétlőjel nem szemantikus, csupán egy szöveg. Legyen szemantikus ennek a jelzése. Pl. így:

<lines repeat="2">Hogy ha csak mustármagnyi hitetek is volna, ezt mondotta a mi Urunk.</lines>

Ahol a repeat egy 1-nél nagyobb szám. Amit így kell megjeleníteni:

‖:Hogy ha csak mustármagnyi hitetek is volna, ezt mondotta a mi Urunk.:‖×2

Ez CSS-sel megjelenítve valami ilyesmi lenne:

lines::before { content: '‖:' }
lines::after { content: ':‖×' attr(repeat) }

De XSLT-vel feldolgozva egyszerűen kétszer egymás után is megjelenhet a szöveg. Ez már a feldolgozóra van bízva.

OpenLyrics: Előjáték, közjáték, utójáték módja

Felbontva a #7-t:

A probléma leírása: A zenekari kidolgozottságú dalokban le kell írni ilyen részeket:

  • szöveg nélkül előjáték, közjáték, utójáték
  • szóló, ill. instrumentális rész

Első ötlet

Lásd: #7 (comment)

Második ötlet

Mivel szemantikailag az előjáték nem része a versszaknak (lásd: Dics-suli-2011 [Page 35].pdf), a legjobb megoldás ezeket versszaktípuként kezelni. Vezessünk be néhány új versszaktípust a meglévők mellé, úgy hogy ne ütközzenek a rövidítéseikkel (verse, chorus, pre-chorus, bridge, ending), mert azoknak egyedieknek kell lenniük:

  • intro (intró)
  • middle (közjáték)
  • outro (utójáték)
  • solo (szóló)
  • intrumental (instrumentális) [Talán ez ugyanaz, mint az előző, és erre nincs szükség?]

Kikötjük, hogy ezek a versszaktípusok szemantikailag szöveg nélküli versszaktípusok. Nem tartalmaznak sima szöveget. Tehát:

<lyrics>
  <verse name="i">
    <lines><chord name="D" /><chord name="A" /><chord name="G" /></lines>
  </verse>
  <verse name="v1">
    <lines>Amazing grace how sweet the sound</lines>
  </verse>
</lyrics>

Megjelenés:

Intró: D A G

build: foghíjas tartalomjegyzék

A tartalomjegyzék generálása jelenleg eléggé foghíjas, mivel a beépített XPath hivatkozások a Szent András Énekfüzetre lettek szabva.

Át kell nézni, hogy amit lehetséges, azt kinyerjünk a kezdetlegesebben kitöltött fejléc információkból is.

OpenLyrics szerkesztő

Szükséges egy szerkesztőprogram, amivel az OpenLyrics állományokat nem XML szerkesztőként, hanem kényelmes felületen lehet szerkeszteni, hogy egy sima dicsvezető is tudja használni.

A már elérhetőek alkalmazásokban talán ennek van a legjobb szerkesztője:

Lehet, hogy saját szerkesztőt kellene készíteni (/utils). Tóth Attila az budapesti Új Aratásból készített egy szerkesztőt, amikor a Szent András Énekfüzetet csináltuk: atoledit. Fel kellene tölteni.

Fejleszthető ez?

Ászáf csomag

A build szkipt készítsen a /master mappáról is egy csomagot Ászáf csomag.7z névvel. Legyen benne a teljes /master és a gyökérben található tartalomjegyzék állománya.

Átrendezés a master mappába

A refactor-build branch-ben már a Sárga könyvet (akkord nélküli) és a Szent András Énekfüzet átmozgattam, közben ügyelve a duplikátumokra (volt egy fájlütközés, és egy közös dal: Világosságot küldd el).

Tamás, megteszed ezt azokkal a gyűjteményekkel, amelyeket te hoztál a repóba?

Ha ezzel megvagyunk, akkor lehet a branchet beolvasztani a fő ágba és kiadást csinálni. Addig mást nem nagyon kellene fejleszteni.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.