From 75664ed4440e5e223f3acaa4d32720ce4a8ceb4c Mon Sep 17 00:00:00 2001 From: dotmg Date: Sun, 27 Jul 2025 18:57:47 +0200 Subject: [PATCH] I: include --- .../files/META-INF/container.xml | 6 -- .../composeResources/files/config.json | 12 +++- .../composeResources/files/ews-16.txt | 11 ++++ .../composeResources/files/ews-17.txt | 13 +++++ .../composeResources/files/ffpm-100.txt | 10 ++++ .../composeResources/files/ffpm-127.txt | 10 ++++ .../composeResources/files/ffpm-131.txt | 7 +++ .../composeResources/files/ffpm-307.txt | 11 ++++ .../composeResources/files/ffpm-310.txt | 9 +++ .../composeResources/files/ffpm-357.txt | 9 +++ .../composeResources/files/ffpm-358.txt | 10 ++++ .../composeResources/files/ffpm-392.txt | 9 +++ .../composeResources/files/ffpm-54.txt | 10 ++++ .../composeResources/files/ffpm-9.txt | 10 ++++ .../composeResources/files/ffpm-97-1.txt | 11 ++++ .../composeResources/files/ffpm-97-2.txt | 10 ++++ .../mg/dot/feufaro/musicXML/MusicXML.kt | 2 +- .../kotlin/mg/dot/feufaro/solfa/ParseULine.kt | 3 +- .../kotlin/mg/dot/feufaro/solfa/Solfa.kt | 58 +++++++++++++++---- 19 files changed, 202 insertions(+), 19 deletions(-) delete mode 100644 composeApp/src/commonMain/composeResources/files/META-INF/container.xml create mode 100644 composeApp/src/commonMain/composeResources/files/ews-16.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ews-17.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-100.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-127.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-131.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-307.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-310.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-357.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-358.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-392.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-54.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-9.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-97-1.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-97-2.txt diff --git a/composeApp/src/commonMain/composeResources/files/META-INF/container.xml b/composeApp/src/commonMain/composeResources/files/META-INF/container.xml deleted file mode 100644 index 8ee2bfe..0000000 --- a/composeApp/src/commonMain/composeResources/files/META-INF/container.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/composeApp/src/commonMain/composeResources/files/config.json b/composeApp/src/commonMain/composeResources/files/config.json index 6416eab..a7331fa 100644 --- a/composeApp/src/commonMain/composeResources/files/config.json +++ b/composeApp/src/commonMain/composeResources/files/config.json @@ -2,7 +2,17 @@ "themeMode": "DARK", "fontSize": 18.5, "playlist": [ - "assets://ffpm-101.txt", + "assets://ffpm-131.txt", + "assets://ffpm-54.txt", + "assets://ews-17.txt", + "assets://ffpm-127.txt", + "assets://ews-15.txt", + "assets://ews-14.txt", + "assets://ffpm-310.txt", + "assets://ffpm-392.txt", + "assets://ffpm-358.txt", + "assets://ffpm-307.txt", + "assets://ffpm-97-1.txt", "assets://ews-13.txt", "assets://ffpm-38.txt", "assets://ffpm-57.txt", diff --git a/composeApp/src/commonMain/composeResources/files/ews-16.txt b/composeApp/src/commonMain/composeResources/files/ews-16.txt new file mode 100644 index 0000000..551591a --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ews-16.txt @@ -0,0 +1,11 @@ +M0:|h:Genevan Psalter, 1551 Edition, attr. Louis Bourgeois (1510-1561)|c:G|m:4/4|a:Paraphrased, William Kethe -c. 1954; Thomas Ken (1637-1711)|r:LM +U0:z8:84444888/84444888/84444888/84(22)4(22)(44)(44)8 +N1:ddt,l,s,drmmmmrdfmrdrmrdl,t,dsmd-rf-m-r-d- +N2:s,s,s,m,m,m,s,s,s,s,dt,dddt,ds,s,s,s,l,f,m,s,s,d-t,l,t,d-t,-s, +N3:mmrdt,dt,ddmssmlssmrdt,ddrdrdmFsl-s-sfm- +N4:dds,l,m,l,s,d,ddds,l,f,d,s,l,t,ds,m,f,r,l,t,dl,-s,r,-m,f,s,-d, +E1:All peo_ple that on earth do dwell,/sing to the Lord with cheer_ful voice./Serve him with joy, his prai_ses tell,/come now be_fore him and re_joice! +E2:Know that the Lord is God in_deed;/he formed us all wi_thout our aid./We are the flock he comes to feed,/the sheep who by his hand were made. +E3:O en_ter then his gates with joy,/wi_thin his courts his praise pro_claim./Let thank_ful songs your tongues em_ploy./O bless and mag_ni_fy his name. +E4:Trust that the Lord our God is good,/his mer_cy is for_e_ver sure./His faith_ful_ness at all times stood/and shall from age to age en_dure. +E5:To Fa_ther, Son and Ho_ly Ghost,/The God whom Heaven and earth a_dore,/From men and from the an_gel host/Be praise and glo_ry e_ver_more./ diff --git a/composeApp/src/commonMain/composeResources/files/ews-17.txt b/composeApp/src/commonMain/composeResources/files/ews-17.txt new file mode 100644 index 0000000..ed696a4 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ews-17.txt @@ -0,0 +1,13 @@ +M0:|h:Siraslund Gesangbuch, 1665|c:G|m:3/4 +U0:z0:444624444444(444)C/444624444444(444)C/444C/4444(22)(22)C/444444(42222)C +N1:ddsmrdt,l,s,l,t,dr--dddsmrdt,l,s,l,t,dr--dssslmfssf-m-rs,l,t,drmr----d +N2:s,l,s,dt,l,s,f,m,f,f,m,l,s,f,m,s,l,s,dt,l,s,f,m,f,f,m,l,s,f,m,drddddrdl,t,d-t,s,f,f,m,l,S,l,--s,f,m, +N3:mmrssmmdddrddt,-dmmrssmmdddrddt,-dmrmfsfrms-s-sddrdl,t,l,rdt,-d +N4:dl,t,ds,l,m,f,d,f,r,l,f,s,-d,dl,t,ds,l,m,f,d,f,r,l,f,s,-d,dt,df,dl,t,dr-mds,m,f,r,l,f,m,f,--s,-d, +E1:Praise to the Lord, the Al_migh_ty, the King of cre_a_tion;/O my soul, praise Him, for he is thy health and sal_va_tion:/Join the great throng,/Psal_te_ry, or_gan, and song,/Sound_ing in glad a_do_ra_tion. +E2:Praise to the Lord; over all things he glo_ri_ous_ly reign_eth:/Borne as on ea_gle-_wings, safe_ly his saints he sus_tai_neth./Hast thou not seen/How all thou nee_dest hath been/Grant_ed in what he or_dai_neth? +E3:Praise to the Lord, who hath fear_ful_ly, wond_rous_ly, made thee!/Health hath vouch_safed and, when heed_less_ly fal_ling, hath stayed thee./What need or grief/E_ver hath failed of re_lief?/Wings of His mer_cy did shade thee. +E4:Praise to the Lord, who doth pros_per thy way and de_fend thee;/Sure_ly his good_ness and mer_cy shall e_ver at_tend thee;/Pon_der a_new/What the Al_migh_ty can do,/Who with his love doth be_friend thee. +E5:Praise to the Lord, Who, when tem_pests their war_fare are wa_ging,/Who, when the e_le_ments Mad_ly a_round thee are ra_ging,/Bid_deth them cease,/Tur_neth their fu_ry to peace,/Whirl_winds and wa_ters as_suag_ing. +E6:Praise to the Lord, Who, when dark_ness of sin is a_boun_ding,/Who, when the god_less Do tri_umph, all vir_tue con_found_ing,/Shed_deth His light,/Cha_seth the hor_rors of night,/Saints with His mer_cy sur_round_ing. +E7:Praise to the Lord, O let all that is in me a_dore Him!/All that hath life and breath, Come now with prai_ses be_fore Him./Let the A_men sound from His peo_ple a_gain,/Glad_ly for aye we a_dore Him. diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-100.txt b/composeApp/src/commonMain/composeResources/files/ffpm-100.txt new file mode 100644 index 0000000..96614ff --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-100.txt @@ -0,0 +1,10 @@ +M0:|c:G|m:4/4|t:FFPM 100 Moa mba efa nisy va|r:77.77.77|a:A. Rakotovao, 1880-1956 +U0:z0:${x4} 62446280/ ${x0} 62444(22)80/ 62446280 +N1:mrddfmr/ slsmrdd/ t,drfmrd/ rmflsfm/ mrddf-mr/ slsmrdd +N2:#m, sfmssdt/ dddsfmm/ s7/ ssttd3/ sSl3tdt/ d4tss +N3:#t, d4tdr/ mfmdtdd/ rmftdrm/ tdrfmls/ d4r-ss/ mfmsfmm +N4:#d, d3ms3/ d3msdd/ s4d'3/ s4d'3/ dmffr-ds/ dddmsd'2 +Y1:Moa mba efa nisy va,/Fahoriana toy izao?/Jeso ‘Lay Mpanisy soa,/Tompo sy Mpanjaka koa,/Entina tsy meloka,/Entina\ any Kalvary. +Y2:He, ny lanivo_any/Vo_atsindron-defona!/Tongotra\ aman-tanany/Vo_afantsika\ avokoa./Eny, fa ny ainy koa,/Foiny tany Kalvary. +Y3:Mafy ‘zay ,ry Jeso ô!/Mafy nefa zakanao;/Ny fitiavanao anay!/No niaretanao izay!/Menatra\ aho, Jeso ô,/Ra\ha hadino Kalvary. +Y4:Taomy aho, Jeso ô!/Mba ho any Kalvary;/Ka ny foko tsy madio/Mba di_ovinao anio,/Ento aho Jeso ô!/Ento any Kalvary.// diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-127.txt b/composeApp/src/commonMain/composeResources/files/ffpm-127.txt new file mode 100644 index 0000000..504e210 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-127.txt @@ -0,0 +1,10 @@ +M0:|c:G|m:4/4 Faingampaingana|t:FFPM 127 Tahaka ny masoandro miseho|a:T. Kingo 1634-1703, Nad. C. Borchgrevink 1841-1919|h:O. Ahnfelt 1813-1882|r:11.10.11.10.D +U0:z0:${x4} 4y4y4y42z2/ 4y4y4y8/ ${x0} +N1:#s, dssmrrlrddt/ ltdsffmrrd/ dssmrrlrddt/ ltdsffmrrd/ #d smmlssfsffm/ smmlssfsfm/ #s, mrrdttlrddt/ ltdsffmrrd +N2:#f, s4llfllss/ fslsllsttd/ s6Fslls/ Fssslddttd/ d6ttrrd/ d6ttrd/ dttlsslllss/ fslsllstts +N3:#t, mmmdr7/ d4rrdffm/ mmmdttrtdmr/ rrmmflssfm/ mssfmmrrsss/ mssfmmrrss/ ssfmmrdffmr/ d4rrdffm +N4:#r, d4ffrffsslffmffsssd/ d4ssrrFss/ lssdffsssd/ d6s3dd/ d6s3d/ dsslmmfrrss/ lffmffsssd +Y1:Tahaka ny maso_andro miseho,/Sady mamiratra tsara izao;/To_y ny heriny\ izay mahale_o,/Na di_a takon'ny rahona tao./Tahaka\ izany Jesosy Mpamonjy/Izy nitsangana velona\ indray/Ry olombelona i\zay vo_avonjy,/Mba miderà Azy mandrakizay. +Y2:Saotra\ aman-dera sy laza sy hery/Aoka ho Azy hatramin'izao,/Izy nanafaka ny olom-bery,/Indro ny fasana vaky sy lao,/Izy nanafaka ny vavahady,/Aiza, ry fahafatesana ô!/Aiza ny herinao sahy mi_ady/Amin'ny mino sy amin'ny to ? +Y3:Jesosy Mpamonjy ô! Mba hasoavy/Ka mba arovy ny mino Anao,/Ka ny fanahinao aoka ho avy/Mba hanazava ny fonay izao;/Ary tantano i\zahay tsy hani_a,/Fa Hi_anao no mpi_aro anay!/0! ry Mpamonjy anay, mba avi_a,/Ka mba vonjeo, fa mi_andry\ izahay. +Y4:Jeso, i\zahay te-hisaotra toko_a/Noho ny so_a nomenao anay:/Teraka teto nitondra ny so_a,/Dia ny fi_ainana mandrakizay./Saotra omenay anao I\zay nijaly,/Nefa natsangan'ny Rainao indray,/Rahatrizay izahay dia hifaly/Any an-danitra mandrakizay!// diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-131.txt b/composeApp/src/commonMain/composeResources/files/ffpm-131.txt new file mode 100644 index 0000000..d207222 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-131.txt @@ -0,0 +1,7 @@ +I0:ffpm-54.txt:^[MY].*: +M0:|h:J Neander, 1650-1680|c:G|m:3/4|a:L. Stueland 1843-1930|r:14.14.4.7.8|t:FFPM 151 Tonga ny andro malaza +Y1:Tonga ny andro malaza izay mahafaly/Indro, nandresy Jesosy, ilay vao nijaly!/Velona\ indray Izy, natsangan’ny Ray,/Aoka isika hifaly! +Y2:Efa nahery Jesosy ka resy Satana,/Menatra mafy ireo fahavalo nitana/Ka mba zahao: rava ny fasana\ izao,/Rava fa tsy nahatàna! +Y3:Helo sy fahafatesana resy toko_a/Ary ny tambin’ny ota dia efa nalo_a!/Jeso Izay maty ka velona\ indray,/Tompon’ny aina tokoa! +Y4:Mba mihobi_a, ry olona mino rehetra/An’i Jesosy ny hery izay tsy voafetra!/Izy nanao làlana tsara vaovao/Resy ny ratsy rehetra! +Y5:Faly isika fa manana fanantenana,/Mbola hi_antso Jesosy ho_e: «Mitsangàna!»/Amin’izay, velona mandrakizay/Ny nodimandry tra-bonjy! diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-307.txt b/composeApp/src/commonMain/composeResources/files/ffpm-307.txt new file mode 100644 index 0000000..f392d85 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-307.txt @@ -0,0 +1,11 @@ +M0:|t:FFPM 307 Iza no hanompo an'i Jesoa soa|a:R. Baron 1847-1907|h:J.R. Sweeney 1837-1899|c:A|m:4/4|r:11.11.11.11.11.11 +U0:zO:${x4}:222244 22228/${x0} 22222222 22228/2222(22)(22)22228/ 6244 88/(22)(22)44G +N1:#s, smmmmfmrrDr/sffffs'fmmRm/smRmdslfmfl/ssdrmdrrdtd/m-4rdls-3d/t--drDrRm-4/mmdmrl/sdtdmrd +N2:#r, ms4lsf4/fs8Fs/ msFsmmflllf/mms4llsss/s-4fmfm---m/r--mfmfFs-4/sssdlf/mss-sfm +N3:#s, d7ttTt/tttrrmrd4/d4sd6/dddtddffmrm/d5-d-d5/s4t-t-d5/#t, ddmsfd/dmrmdtd +N4:#d, d6s5/ s6d'5/d6f5/ddmsd'mffssd/d5-d-d5/s5-s-ddmsd'/d'4ff/s-s-ssd +Y1:Iza no hanompo an’i Jeso soa?/Iza no hanaiky mba ho Azy moa?/He, ny hatsarany; he, ny antra be!/Izy ta hamonjy ka meteza re!/${R=}/Je_4so Tomponay_5ô, i\ndre_3to izahay/Avy mba hanaiky, ka mandraisa anay! +Y2:Iza re no mety, iza re lazao,/Hanome ny fony mba ho Azy\ izao?/He, mi_antso mafy Jeso Tompo tia:/«Zay rehetra mety, ô avia, avia!» +Y3:Iza no mba sahy, sahy ao am-po/Ho mi_aramila fehin’i Jeso?/Iza no hiady ady tsara re,/Fa ny fahavalo dia marobe? +Y4:Iza re no homba Azy\ ankehitrio/Mba hamonjy\ ireny azon’ny manjo?/Iza no hihafy sady hanome/Andro, hery, saina? Mamali_a e! +Y5:Iza no hazoto mba hi_asa moa?/Iza no handroso mba ho hendry koa?/Iza no hanaiky, iza re lazao,/Mba ho an’i Jeso i\zao anio izao? diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-310.txt b/composeApp/src/commonMain/composeResources/files/ffpm-310.txt new file mode 100644 index 0000000..4a58a89 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-310.txt @@ -0,0 +1,9 @@ +M0:|c:Eb|m:4/4|t:FFPM 310 Misy maro ao an-tsaha|a:F.J. Crosby 1820-1915 Nad. Ramboatiana 1850-1945 (dikany malalaka)|h:W.B. Bradbury 1816-1868 +U0:z8:yyyyy8624y44444/yyyyy8624y44C/ yyy4/yyy4/y4444C/ yyy4/ yyy4/ y4444${DC}4 +N1:drm5rdmsl lsmrdmrss/ drm5rdmsl lsdrmrd/ ssl5/ d'ls5/ lsfrmdr/ ssl5/ dls5/ lssrmFs +N2:#t, drd8mff mdtddttt/drd8mf fmdddtd /d7/ d7/ ddtrddt/ d7/ d7/ ddtrddt +N3:#r mfs4fmsd4sfmssrs/ mfs4fmsd4mfsfm/ mmf5/ lfm5/ fmrs4/ mmf5/ lfm5/ fmrtlls +N4:#s, d11ffd5s3/ d11ffdllssd/ ddf5/ ffd5/ ddrtdms/ ddf5/ ffd5/ ddr4s +Y1:Misy maro ao an-tsaha mitaraina,/Ka ento ny Jiro mba hankao!/Tsy mba misy anto_andro na maraina/Fa maizina re ny ao;/Indro olo-maro be/No maniry mafy hoe:/Mba midina mankaty,/Itondray Baiboly re/Izy\ ireo fa ta handre/An'i Kristy Tompo soa !/${R=}${D:"Mandehana", hoy ny Tompo, "mandehana/Ho amin'izao tontolo i\zao!"/Mitsangàna ary, eny, mitsangàna/Fa Izy no homba\ anao!} +Y2:Mandehana mba hitarika ny jamba,/Mba ampifalio ny ory fo;/Ny mahantra ilazao fa misy lamba/Tsy miova, tsy mety lo;/Jeso Mofon'aina soa/Sady Ranon'aina koa,/Asehoy ho hitany!/Tena Andriamanitra,/Tompo tao an-danitra,/Ambarao ho fantany!${D:"Mandehana", hoy ny Tompo, "mandehana/Ho amin'izao tontolo i\zao!"/Mitsangàna ary, eny, mitsangàna/Fa Izy no homba\ anao!} +Y3:Mandehana hanatanjaka ny osa,/Omeo toky re ny ketraka;/Ny anjaranao, ataovy ho tontosa/Ka aza dia reraka!/Mandehana i_anao/Ka vitao ny asanao/Fa ny tambinao arỳ;/Mbola any\ ihany re/ny handraisan-tamby be,/Dia rehefa tsy etỳ!${D:"Mandehana", hoy ny Tompo, "mandehana/Ho amin'izao tontolo i\zao!"/Mitsangàna ary, eny, mitsangàna/Fa Izy no homba\ anao!} diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-357.txt b/composeApp/src/commonMain/composeResources/files/ffpm-357.txt new file mode 100644 index 0000000..eb8ded2 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-357.txt @@ -0,0 +1,9 @@ +M0:|c:G|m:6/4|t:FFPM 357 Efa tonga atỳ izao|a:Philip Paul Bliss 1838-1876 Nad. J.A. Houlder 1844-1932|h:Philip Paul Bliss 1838-1876|r:8.6.8.6.6.6.4.4.6 +U0:z0:84444 84C/ 44484 (CC) /84444 84C/ 44484 O/ 84(44)4 88/ 84(44)4 88/ 444C 444C/ 44484 (84C)/ O +N1:#s, mmmfmmrr/ srrmrds/ mmmfmmrr/ srrmrd/ #t, mmmfsls/ mmmfsls/ sfff/ fmmm/ mrdrtdms/ d +N2:#m, ssslssff/ fffsfm/ ssslssff/ fffsfm/ #s, dddrmfm/ dddrmfm/ mrrr/ rddd/ s6wd/ s +N3:#t, d6tt/ t5dw/ d6tt/ t5d/ d3wd3/ d3wd3/ s8/ sfmfrlwwm +N4:#s, d5s3/ s5dw/ d5s3/ s5d/ d3wd3/ d3wd3/ s4/ d4/ s5dwwd +Y1:Efa tonga atỳ izao/Teny fi_ainana:/Raiso mba ho fi_ainanao,/Teny fi_ainana./He! ny teny tsara,/Teny manan-kery:/${R=}Tenin'ny Ray,/Tsara tokoa,/Teny fi_ainana. +Y2:Io no Filazantsara soa,/Teny fi_ainana:/Teny mamy indrindra koa,/Teny fi_ainana./Raisonao ny teny,/Teny soa nomeny: +Y3:Ry mpanota! Henoy izao,/Teny fi_ainana;/Fa fi_ainana ho anao,/Teny fi_ainana./Kristy no nomena/Mba ho famonjena: diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-358.txt b/composeApp/src/commonMain/composeResources/files/ffpm-358.txt new file mode 100644 index 0000000..8972259 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-358.txt @@ -0,0 +1,10 @@ +M0:|t:FFPM 358 He, ry namako mahantra|c:A|m:3/4|r:8.7.8.7.D|a:H. Randzavola 1873-1953|h:R. Lowry 1826-1899 +U0:z8:y 6222 44/22 6222 8/y 6222 44/22 6222 8/22 6222 44/22 6222 8/22 6222 44/22 2244 8/22 6222 44/22 2244 8 +N1:#s, mmmmrdsd/dmrtdrm/mmfmrdmr/rrrltdt/lsdrdlsd/drmdfmr/mfs'mrdrd/tlsdmrm/mfs'mrdrd/tlsdmrd +N2:#m, ssssfmmm/mssssss/sslsfmss/ssFFsls/fsmfmfmm/sssmlss/ssssssfl/sfmmsss/sssdtlll/sfmssss +N3:#t, d7s/sdtrdtd/d4tddt/ttlr4/rtd6/dtd4t/drmdtdld/d5td/drmsfmff/dddmsfm +N4:#d, d8/ddsfmrd/d'4slss/ssrrrrs/ssd6/msd'4s/d'3drmff/ffs4d'/d'4slff/ffs4d +Y1:He, ry namako mahantra,/Indro Jeso Tompo tia,/I\lay Mpamonjy feno antra,/No mitady ny mania!/Olom-bery tsy mba foiny/Ka na diso aza re/Mbola tiany sy antsoiny/Hanam-pifali_am-be/Mbola tiany sy antsoiny/Hanam-pifali_am-be +Y2:He, fa tsy mba misy fetra/Ny homena lova soa/Fa ny olona rehetra/Samy tiany avokoa!/Nefa\ izay be hataka\ andro/Dia hanenina tokoa/Misy fetra ny fotoana/Azo amindrana fo/Misy fetra ny fotoana/Azo amindrana fo +Y3:Manatòna\ ankehitriny,/Ry mpanota ory fo/Mba hesoriny ny tsiny/Ka hadio indray ny fo!/Fa ny ota hosasany/Dia ho afaka\ avokoa,/I\zany re no fikasany/ka tsy maintsy to tokoa/I\zany re no fikasany/ka tsy maintsy to tokoa +Y4:Fa izay mandà ny Teny/Sy maditra, mafy fo/Hampangain’ny Teny reny/Fa tsy nety nankatò;/Jeso Tompo no hitsara/Sy hamaly ny natao,/Nefa kosa ny anjara/Dia miankina aminao/Nefa kosa ny anjara/Dia miankina aminao diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-392.txt b/composeApp/src/commonMain/composeResources/files/ffpm-392.txt new file mode 100644 index 0000000..f118709 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-392.txt @@ -0,0 +1,9 @@ +C:Bb|m:4/4 Miadanadana|t:FFPM 392 O mba raiso izao|a:F. Nibelius 1850-1897 Nad M.J. Meeg 1851-1924|r:6.6.9.6.6.9.6.6.9.6.6.9|h:(Feon-kira suédois) +U0:zC:y4y4/ y4y4 /y4y4y8${DC}z4/ y(y)y4 / yyy4/ y4y4yC/ y4y4/ y4y4/ y4y4yC +N1:#f, ssdddm/ dtlfld/ tls4ltd/ rdts4/ ltrd4/ tdrrmf'ttd/ ssdddm/ dtlfld/ tls4ltd +N2:#r, mms4/ f5l/ ffmmmrffm/ sssrrrf/ fffm4/ rmffssffm/ mms4/ f5l/ ffmmmrffm +N3:#l, ddmmmd/ lldldd/ d5ttrd/ tmrtttr/ rrtd4/ rdttdtrrd/ ddmmmd/ lldldd/ d5ttrd +N4:#d, d6/f6/ ffs6d/ s3-s3/ s3d4/ s8d/ d6/ f6/ ffs6d +Y1:O, mba raiso izao,/Misy lovanao ao,/Indro! Jeso mi_andry anao!/${D:Fa ny helokao be/Dia navelany e,/Ka fi_ainana\ omeny anao;/}Novidiny\ hi_anao,/Ka eke_o hatrizao/I\zay omen’i Jesosy anao./O, mba raiso izao,/Misy lovanao ao,/Indro! Jeso mi_andry anao! +Y2:Moa hadinonao va/Fa ny olo-mandà/Ho tra-nenina rahatrizay?/${D:I\zay ataonao atỳ/Hotsaraina arỳ/Ka tsy azo ovana indray./}Ny Mpamonjy anao/No hatò_ny izao,/Ary Izy hihaino anao./Moa hadinonao va/Fa ny olo-mandà/Ho tra-nenina rahatrizay? +Y3:I\zao tontolo izao/Dia mamitaka\ anao,/Ka afoizo fandrao manindao./${D:He, Jesosy nandao/I\zao tontolo izao/Ary Izy mi_antso anao./}Izy tonga indray/Ao an-da_pan’ny Ray,/Ka ho velona mandrakizay./I\zao tontolo izao/Dia mamitaka\ anao,/Ka afoizo fandrao manindao. diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-54.txt b/composeApp/src/commonMain/composeResources/files/ffpm-54.txt new file mode 100644 index 0000000..7696b13 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-54.txt @@ -0,0 +1,10 @@ +M0:|h:J Neander, 1650-1680|c:G|m:3/4|a:L. Stueland 1843-1930|r:14.14.4.7.8|t:FFPM 54 Jeso Mpamonjy, Ilay Tompon'ny aina +U0:z0:4444(22)4444444(444)C/444444444444(444)C/444C/4444(22)4C/444444(444)C +N1:ddsm-rdt,l,s,l,t,dr--dddsmrdt,l,s,l,t,dr--dssslmfss-fmrs,l,t,drmr----d +N2:s,l,s,dt,-l,s,f,m,f,f,s,l,s,f,m,#m, mfssfmFFsssslsfm/dtdd/ddsddtdt/sssstddt-s +N3:mmrss-mmdddrddt,-d/#t, dddttdrdtdrddt-d/mfsf/sfrmf-ss/tdrmfslsfm +N4:dl,t,ds,-l,m,f,d,f,r,m,f,s,-d,/ #d, lfmsSlrrssfmfs-d/#s,drmf/dltdr-ds/#d, ssfmrdfs-d +Y1:Jeso Mpamonjy, I\lay Tompon’ny aina, no hita/Nidina teto an-tany hamonjy antsika:/O, mba derao/Izy Mpanavotra\ anao/Ka mifali_a ry mino! +Y2:Indro ny tenin’anjely milaza ny so_a:/Teraka Jeso Mpamonjy antsika toko_a!/O, mba derao/Tonga ny andro vaovao,/Andron’ny Filazantsara! +Y3:Dia iventesonao hira vaovao re izany;/Tonga Jesosy hamonjy izay mitomany!/O, mba derao/Afaka\ isika izao;/Izy Mpisolo antsika! +Y4:Tonga ny Tompon’ny tompo hisolo ny ory,/Ka mifohaza ry olona mbola matory!/O, mba derao/Amin’ny fe_o vaovao/Jeso, I\lay Tompo mahery! diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-9.txt b/composeApp/src/commonMain/composeResources/files/ffpm-9.txt new file mode 100644 index 0000000..61acaee --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-9.txt @@ -0,0 +1,10 @@ +M0:|h:Genevan Psalter, 1551 Edition, attr. Louis Bourgeois (1510-1561)|c:G|m:4/4|a:Th. Ken 1637-1711|r:LM +U0:z8:84444888/84444888/84444888/84(22)4(22)(44)(44)8 +N1:ddt,l,s,drmmmmrdfmrdrmrdl,t,dsmd-rf-m-r-d- +N2:#m, sssmmmss/ssssmlss/ssssmffm/ss-Fsf-s-sfm +N3:#s, mmrdtdtd/dddtdddt/mrdtddrs/rdd-tltd-t-d +N4:#d, d'2slmlsd/dmdslfds/d'td'slfsd/tdl-sr-mfs-d +Y1:Ry Tompo Zanaharinay!/Manati-tsaotra izahay,/Fa efa novelominao,/Ka tratr’izao maraina\ izao. +Y2:Ny aizina\ efa lasa\ izao,/Mazava no naposakao;/Levony koa ny otanay,/Ka hazavao ny hevitray. +Y3:Ny asanay hatao anio/Atrehonao ka mba tahio,/Hatao ho voninahitrao,/Handraisanay ny antranao +Y4:Derainay Hi_anao, ry Ray!/Derainay Jeso Tomponay,/Derainay ny Fanahy koa,/Derainay fa Mpanisy soa. diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-97-1.txt b/composeApp/src/commonMain/composeResources/files/ffpm-97-1.txt new file mode 100644 index 0000000..0b268c1 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-97-1.txt @@ -0,0 +1,11 @@ +M0:|c:G|m:9/4 Miadanadana|t:FFPM 97 'Lay fonao tia tao Gologota|a:Dr Andrianandraina|h:P.P. Bliss, 1838-1876|r:10.9.10.9.10.9. +U0:z0:${x4} 444CC444CC/ 444CC444O/ ${x0} +N1:#s, sltdddrmll/ ltdrrrdrm/ #dmrmfffslls/ sfmrrrmFs/ sfmmrrmffm/ mrmsmmrdr/ s, l, t, dddrmfl/ lsfmsfmrd +N2:#m, sFfmmmfsll lsFs6/ dtTlllTd3/ m'rdtttdlt/ m'rddttdrrd/ drd4sdt/#m, sFfmmmfsld/ dtlsdssfm +N3:#s, sdrd7/ d3t3ltd/ d7ffm/ #t, s5r4/ s10/ s6fms/ tdrd6f/ d4mrdtd +N4:#f, s3d5ff/ fsls5d/ d3f5dd/ d3r5s/ s8dd/ dtdmddtds/ sssdddddff/ fffs5d +Y1:‘Lay fonao ti_a tao Gologota/No velona\ ao an-tsaiko izao,/Ny fonao ‘zay mitady mpanota/No vo_aratra indrindra tao./Ry fo malala, nihafy loatra,/Lavitra ny mpangoraka\ Anao/Ry fo malala, nihafy loatra,/Lavitra ny mpangoraka\ Anao +Y2:Indro! Ny lefona koa mamely,/Ka notrobarana Hi_anao!/He! malahelo ireo anjely,/Fa naharary re ny fonao!/Io no fitia tsy misy toa azy./Zaran’izao rehetra izao/Io no fitia tsy misy toa azy./Zaran’izao rehetra izao +Y3:Efa hisoka ny anto_andro,/Menatra\ izao tontolo izao;/Tsy ela\ intsony dia maizina\ andro/Kalvary ‘zay nihantonanao!/Fa\ izaho tsy mba hangataka\ andro/Hampi_antrano ny tenanao/Fa\ izaho tsy mba hangataka\ andro/Hampi_antrano ny tenanao +Y4:Tsy sasatra na valaka ko_a,/Ny fonao ti_a, ry Tompo ô,/Menatra\ izao i\ty foko tsy so_a/Tsy hahavaly tokoa Anao;/Nefa ampi_o aho hanaiky,/Hanatontosa ‘zay sitrakao/Nefa ampi_o aho hanaiky,/Hanatontosa ‘zay sitrakao/ +Q0:${N:new}N4:#f, s3d5ff/ fsls5d/ d3f5dd/ d3r5s/ s8dd/ dtdmddtds/ sssdddtdff/ fmfs5d diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-97-2.txt b/composeApp/src/commonMain/composeResources/files/ffpm-97-2.txt new file mode 100644 index 0000000..2653d10 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-97-2.txt @@ -0,0 +1,10 @@ +M0:|t:EWS 999 Precious Promise (FFPM 97)|a:Franck Nathaniel Niles USA 1835-1917|h:Philip Paul Bliss (1838-1876)|c:G|m:9/4|r:8.7.8.7.8.7.8.7 +U0:zO:(44)4CC(44)4CC/(44)4CC(44)4O/(44)4CC(44)4CC/(44)4CC(44)4O/(44)4CC(44)4CC/(44)4CC(44)4O/(44)4CC(44)4CC/(44)4CC(44)4O +N1:s,l,t,dddrml,l,l,t,drrrdrmmrmfffsllssfmrrrmFssfmmrrmffmmrmsmmrdrs,l,t,dddrmfllsfmsfmrd +N2:s,F,f,m,m,m,f,s,l,l,l,s,F,s,s,s,-s,s,dt,T,l,l,l,T,dddmrdt,t,t,dl,t,mrddt,t,drrddrdddd-dt,s,F,f,m,m,m,f,s,l,ddt,l,s,s,s,-f,m,f,f,m, +N3:s,drddd-dddd-dt,t,t,l,t,dd-dddd-ffms-sssr-rrs-ssss-ssss-ssssfmst,drddd-ddfd-f,dmrdt,dl,l,m +N4:s,-s,ddd-df,f,f,s,l,s,s,s,-s,dd-df,f,f,-f,ddd-drrr-rs,s,-s,s,s,s,-s,dddt,dmdd-ds,s,-s,ddd-df,f,f,-zs,s,s,-s,d,f,f,l, +E1:Pre_cious pro_mise God hath gi_ven/To the wea_ry pas_ser-_by,/All the way from earth to Hea_ven;/I will guide thee with mine eye./${R=}I will guide thee, I will guide thee,/I will guide thee with mine eye;/All the way from earth to Hea_ven,/I will guide thee with mine eye. +E2:When temp_ta_tions al_most win thee,/And thy trus_ted watch_ers fly,/Let this pro_mise ring with_in thee:/I will guide thee with mine eye. +E3:When thy sec_ret hopes have pe_rished/In the grave of years gone by,/Let this pro_mise still be che_rished:/I will guide thee with mine eye. +E4:When the shades of life are fal_ling,/And the hour has come to die,/Hear thy trus_ted lea_der cal_ling:/I will guide thee with mine eye. diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/musicXML/MusicXML.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/musicXML/MusicXML.kt index 09cf65f..ada7383 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/musicXML/MusicXML.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/musicXML/MusicXML.kt @@ -82,7 +82,7 @@ class MusicXML(private val fileRepository: FileRepository) { } } suspend fun load() { - val xmlContent = fileRepository.readFileContent("assets://13.xml") + val xmlContent = fileRepository.readFileContent("assets://17.xml") val xslContent = fileRepository.readFileContent("assets://timepart.xsl") xmlString = performXsltTransformation(xmlContent, xslContent) val solfaXML = SolfaXML() diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/ParseULine.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/ParseULine.kt index 6b21029..30ef44f 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/ParseULine.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/ParseULine.kt @@ -18,12 +18,13 @@ class ParseULine (var line: String, var measure: Int) { } fun parsed() : String { - val matchResult = Regex("^z([048CK]):(.+)$").find(line) + val matchResult = Regex("^z([048CKO]):(.+)$").find(line) if (matchResult != null) { val capturedChar = matchResult.groups[1]!!.value cursorX = when (capturedChar) { "C" -> 12 "K" -> 20 + "O" -> 24 else -> capturedChar.toInt() } line = matchResult.groups[2]!!.value diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index e95bfd8..2451794 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -16,6 +16,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository private var refrainBeginsAt = -1 private var smartLyricsType = "L" companion object { + var currentFile = "" val REGEX_SHIFT_PAREN_UPWARD = Regex("([^a-yA-Y\\(\\[]+)([\\)\\]])") val REGEX_SHIFT_PAREN_DOWNWARD = Regex("([\\(\\[])([^a-yA-y\\)\\]]+)") val REGEX_COLLAPSE_PARENS_OPEN = Regex("([\\(\\[])[\\(\\[]+") @@ -27,13 +28,14 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository val REGEX_PARSE_META = Regex("\\|(?=[a-z]:)") val REGEX_LYRICS_COMMENT = Regex("\\$\\{([^\\}]:([^\\}]*))\\}|\\$\\{R!\\}") val REGEX_LYRICS_REPETITION = Regex("_(\\d)") - val REGEX_VOWELS_STAGE1 = Regex("[aeiouyòàéỳ](?![,;\\.\\-:!\\?\\}»_]*([ aeiouyòàéỳ/]|_[1-9]))", RegexOption.IGNORE_CASE) - val REGEX_VOWELS_STAGE2 = Regex("(?<=[aeiouyòàéỳ])_([,;\\.\\-:!\\?\\}»_]+)", RegexOption.IGNORE_CASE) + val REGEX_VOWELS_STAGE1 = Regex("[aeiouyòàéỳ](?![,;\\.\\-:!\\?\\}»_\"]*([ aeiouyòàéỳ/]|_[1-9]))", RegexOption.IGNORE_CASE) + val REGEX_VOWELS_STAGE2 = Regex("(?<=[aeiouyòàéỳ])_([,;\\.\\-:!\\?\\}»_\"]+)", RegexOption.IGNORE_CASE) val REGEX_VOWELS_STAGE3 = Regex("_([\\?\\!:,;\\.»\\)]+)") val REGEX_MALAGASY_MN = Regex("([aeio])_([nm])([tdjkbp])") val REGEX_MALAGASY_MN_STAGE2 = Regex("_([mn])-") val REGEX_PAREN_RECURSIVE = Regex("(\\([^\\(\\)]*)\\(([^\\)]*)\\)") val REGEX_COMMENT = Regex("\\$\\{[^\\}]*\\}") + val REGEX_STRIP_DC = Regex("\\$\\{D:[^\\}]*\\}") } var nextTIndex: Int = -1 var nextNIndex: Int = -1 @@ -115,6 +117,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository } } fun parse(sourceFile: String) { + currentFile = sourceFile val parseScope = CoroutineScope(Dispatchers.Default) parseScope.launch { val lines = try { @@ -257,7 +260,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository result = rearrangeNote(result) loadN(voiceNumber, result) } - private fun parseOneLine(line: String) { + private suspend fun parseOneLine(line: String) { val index: Int val value: String val lineLength = line.trim().length @@ -301,10 +304,38 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository loadU(value) "O" -> loadO(index, value) - + "I" -> + loadI(value) } } + suspend fun loadI(line: String) { + val lineSplit = line.split(":") + val lastSlashInFilename = currentFile.lastIndexOf('/') + val fileNamePrefix = if (lastSlashInFilename != -1) { + currentFile.substring(0, lastSlashInFilename + 1) + } else { + "" + } + val filePath = fileNamePrefix + lineSplit[0] + val lines = try { + fileRepository.readFileLines(filePath) + } catch (e: Exception) { + println("Opening $filePath raised exception {${e.message}") + emptyList() + } + try { + val ignoredLines = Regex(lineSplit[1]) + lines.forEach { + val match = ignoredLines.find(it) + if (match == null) { + parseOneLine(it) + } + } + } catch(e: Exception) { + + } + } private fun loadN(voiceNumber: Int, line: String) { val newN = POneVoiceNote() val lineRepeated = REGEX_REPETITION.replace(line) { matchResult -> @@ -457,10 +488,10 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository private fun loadLyrics(stanzaNumber: Int, lyrics: String) { val overrideIterator: MutableMap> = mutableMapOf() try { - getLyricsComments(lyrics) + val lyrics = getLyricsComments(lyrics) val arrayLyrics = lyrics.split(Regex("[/_]")) arrayLyrics.forEachIndexed { i, lyricsItem -> - val originalLyrics = REGEX_COMMENT.replace(lyricsItem, "") + val originalLyrics = REGEX_STRIP_DC.replace(lyricsItem, "") if (lyricsItem.length > 4 && lyricsItem.substring(0, 4) == $$"${O:") { val overrideNumber = lyricsItem.replace(Regex("\\D"), "").toIntOrNull() ?: -1 val override = O.getOrElse(overrideNumber) { null } @@ -495,11 +526,17 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository if (lyricsComment.isNotEmpty()) { val lyricsIterator = lyricsComment.iterator() while (lyricsIterator.hasNext()) { - val item = lyricsIterator.next() + var item = lyricsIterator.next() // @todo: if item == ${O:...} // ${D:xxx} lyrics of DC and DSs if (item.substring(0, 4) == $$"${D:") { - item.replace(REGEX_LYRICS_COMMENT, "$2") + item = item.replace(REGEX_LYRICS_COMMENT, "$2") + val item = when (smartLyricsType) { + "E" -> smartELyrics(item) + "Y" -> smartYLyrics(item) + else -> item + } + item .addHyphens() .split(Regex("[_/]")) .forEachIndexed { i, xval -> @@ -551,7 +588,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository .replace("_\\", "") .replace("_/", "/") .replace("_0", "") - getLyricsComments(loadedLyrics) + //getLyricsComments(loadedLyrics) return unpackLyrics(loadedLyrics) } // loadE is a smart Lyrics parser for English language @@ -560,12 +597,13 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository val smartLyrics = smartELyrics(lyrics) loadL(intKey, smartLyrics) } - private fun getLyricsComments(lyrics: String) { + private fun getLyricsComments(lyrics: String): String { val matchResult = REGEX_LYRICS_COMMENT.findAll(lyrics) .map { it.value }.toList() if (matchResult.isNotEmpty()) { lyricsComment.addAll(matchResult) } + return REGEX_STRIP_DC.replace(lyrics, "") } private fun defineRefrainFrom(tuoNumber: Int) { refrainBeginsAt = tuoNumber