XML parsing enchanced

This commit is contained in:
dotmg 2025-07-23 18:19:44 +02:00
parent 9c5e15663e
commit df1f846f59
24 changed files with 141 additions and 42 deletions

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<container>
<rootfiles>
<rootfile full-path="14.xml" media-type="application/vnd.recordare.musicxml+xml"/>
</rootfiles>
</container>

View file

@ -2,9 +2,15 @@
"themeMode": "DARK", "themeMode": "DARK",
"fontSize": 18.5, "fontSize": 18.5,
"playlist": [ "playlist": [
"assets://ffpm-6.txt",
"assets://ffpm-444-2.txt",
"assets://ews-13.txt",
"assets://ffpm-194.txt",
"assets://ffpm-57.txt",
"assets://ffpm-191.txt",
"assets://ff-7.txt",
"assets://ffpm-33.txt", "assets://ffpm-33.txt",
"assets://ff-8.txt", "assets://ff-8.txt",
"assets://ffpm-444-2.txt",
"assets://ffpm-760.txt", "assets://ffpm-760.txt",
"assets://ews-456.txt", "assets://ews-456.txt",
"assets://ffpm-51.txt", "assets://ffpm-51.txt",

View file

@ -1,16 +1,16 @@
M0:|t:EWS 13 O for a thousand tongues to sing|a:Charles Wesley (1739: 1707-1788)|h:Thomas Jarman (1776-1861)|c:G|m:4/4 M0:|t:EWS 13 O for a thousand tongues to sing|a:Charles Wesley (1739: 1707-1788)|h:Thomas Jarman (1776-1861)|c:G|m:4/4
U0:z0:862(31224)4(44)(44)C/44444C/4(3121113)1388G84462444444C444444444444444222244444444844G U0:z0:862(31224)4(44)(44)C/44444C/4(31224)488G/844(624)4(444)4C/444444444444444(22)(22)44444444844G
N1:dmfslsfmfmdrt,dmfmrdrrmrmf-s-l-sfissssmrdmfmrdrs,d-ddffffm--mrrrmfrs--slsfmr-rd N1:dmfslsfmfmdrt,dmfmrdrrmrmfslsfissssmrdmfmrdrz4dffffm--mrrrmfrs--s(lsf)mr-rd
N2:s,s,s,s,----l,s,-s,-s,dt,drl,t,t,d------d-t,l,t,dddd--dt,drl,t,zz-zdl,l,l,l,s,--s,s,t,t,drt,dt,ddd-t,ddt,-d N2:s,s,s,s,----l,s,-s,-s,dt,drl,t,t,d----dt,l,t,dddd--dt,drl,t,z4dl,l,l,l,s,--s,s,t,t,drt,(dt,d)d(d-t,)ddt,-d
N3:mdrmfmrdddmfrmssssfisss--f-m-m-rrrmmmsfmss--fissdrmdd--ddsmdt,rs-f-mrmmfssss-fm N3:mdrmfmrdddmfrmssssfisss--fmmrrrmmmsfmss--fissdrmdd--ddsmdt,rs-f-mrmmfssss-fm
N4:dddd----f,s,-s,-ddrdt,l,s,s,d------l,-rr,s,dddd--drdt,l,s,s,drddf,--f,dddds,---s,-drddfmrds,-s,d, N4:dddd----m,s,-s,-ddrdt,l,s,s,d----l,rr,s,dddd--drdt,l,s,s,drmdf,--f,dddds,---s,-drddfmrds,-s,d,
E1:O for a thou_sand tongues to sing/my great Re_dee_mer's praise,/the glo_ries of my God and King,/the tri_umphs of his grace! E1:O for a thou_sand tongues to sing/my great Re_dee_mer's praise,/my great Re_dee_mer's praise,/the glo_ries of my God and King,/_4the tri_umphs of his grace,/_2the tri_umphs of his grace,/_2the tri_3umphs of_2his grace!
E2:My gra_cious Mas_ter and my God,/as_sist me to pro_claim,/to spread thro' all the earth a_broad/the ho_nors of your name. E2:My gra_cious Mas_ter and my God,/as_sist me to pro_claim,/as_sist me to pro_claim,/to spread thro' all the earth a_broad/the ho_nors of your name.
E3:Je_sus! the name that charms our fears,/that bids our sor_rows cease,/'tis mu_sic in the sin_ner's ears,/'tis life and health and peace. E3:Je_sus! the name that charms our fears,/that bids our sor_rows cease,/that bids our sor_rows cease,/'tis mu_sic in the sin_ner's ears,/'tis life and health and peace.
E4:He speaks; and, listen_ing to his voice,/New life the dead re_ceive,/The mourn_ful bro_ken hearts re_joice,/The humble poor re_lieve. E4:He speaks; and, listen_ing to his voice,/New life the dead re_ceive,/New life the dead re_ceive,/The mourn_ful bro_ken hearts re_joice,/The humble poor re_lieve.
E5:Hear him, ye deaf; his praise, ye dumb,/Your loo_sened tongues em_ploy;/Ye blind, be_hold the Sa_viour come;/And leap, ye lame, for joy! E5:Hear him, ye deaf; his praise, ye dumb,/Your loo_sened tongues em_ploy;/Your loo_sened tongues em_ploy;/Ye blind, be_hold the Sa_viour come;/And leap, ye lame, for joy!
E6:He breaks the power of can_celled sin,/he sets the pri_soner free;/his blood can make the foul_est clean;/his blood a_vailed for me. E6:He breaks the power of can_celled sin,/he sets the pri_soner free;/he sets the pri_soner free;/his blood can make the foul_est clean;/his blood a_vailed for me.
E7:To God all glo_ry, praise, and love/be now and e_ver given/by saints be_low and saints a_bove,/the Church in earth and heaven. E7:To God all glo_ry, praise, and love/be now and e_ver given/be now and e_ver given/by saints be_low and saints a_bove,/the Church in earth and heaven.
E8:I felt my Lords a_ton_ing blood/Close to my soul ap_plied;/Me, me He loved, the Son of God,/For me, for me He died! E8:I felt my Lords a_ton_ing blood/Close to my soul ap_plied;/Close to my soul ap_plied;/Me, me He loved, the Son of God,/For me, for me He died!
E9:Look un_to Him, ye na_tions, Own/Your God, ye fal_len race;/Look, and be saved through faith a_lone,/Be jus_ti_fied by grace. E9:Look un_to Him, ye na_tions, Own/Your God, ye fal_len race;/Your God, ye fal_len race;/Look, and be saved through faith a_lone,/Be jus_ti_fied by grace.
E10:See all your sins on Je_sus laid:/The Lamb of God was slain,/His soul was once an of_fer_ing/For e_ver soul of man./ E10:See all your sins on Je_sus laid:/The Lamb of God was slain,/The Lamb of God was slain,/His soul was once an of_fer_ing/For e_ver soul of man.

View file

@ -0,0 +1,7 @@
M0:|c:D|m:3/4|t:EWS 14 Holy, Holy, Holy, Lord God of Hosts|h:John Camidge 1 (1734-1803)
U0:z0:848484/444(48)/8(31)8444(22)48/(44)(22)(21122)48/4(224)4CCC
N1:ddrrmmltd'd'td'sfmsd'tl-sssls-f-ls-fmslr'd'td'ls
N2:s,s,t,t,dddfmmrmr-drmrrdssmfm-r-fm-rdddfmrmdd
N3:mmssssfsss-ss-ssssfi-sss-d'tlr-mfsssl-sssfm
N4:dds,s,ddfrds,-dt,-dt,l,rr-s,s,d-d-f,--s,-s,dmf-ss,df,d
E1:Ho_ly, ho_ly, ho_ly, Lord God of Hosts,/Heaven and earth are full of Thy glo_ry:/Glo_ry be to Thee,/O Lord Most High./A_men.

View file

@ -0,0 +1,10 @@
M0:|c:Ab|m:4/4|t:EWS 15 With Hearts In Love Abounding|a:Harriet Auber (1773-1862)|h:George James Webb (1837: 1803:1887)
U0:zC:4624484/44444C/4624484/44444C/4624484/44444(84)/4624484/44444C
N1:s,ddmddl,ds,drmrs,ddmddl,ds,dmrds,rrdrmmmfml,rdt,s,ddmddl,ds,dmrd
N2:m,m,m,s,s,l,f,l,s,s,s,s,s,s,m,m,s,s,l,f,l,s,m,s,f,m,s,s,s,s,s,s,s,s,f,s,l,l,s,-s,m,m,s,s,l,f,l,s,m,s,f,m,
N3:ddddddddddt,dt,t,ddddddddddt,s,s,t,t,l,t,ddddddfmrt,ddddddddddt,d
N4:d,d,d,d,m,f,f,f,m,m,r,d,s,s,d,d,d,m,f,f,f,m,d,s,s,d,s,s,s,s,s,dddl,s,f,r,s,-s,d,d,d,m,f,f,f,m,d,s,s,d,
E1:With hearts in love a_boun_ding,/Pre_pare we now to sing/A lof_ty theme, re_soun_ding/Thy praise, al_migh_ty King;/Whose love, rich gifts be_stow_ing,/Re_deemed the hu_man race;/Whose lips with zeal oer_flow_ing,/Breathe words of truth and grace.
E2:In ma_jes_ty trans_cen_dent,/Gird on Thy con_quering sword;/In right_eous_ness res_plen_dent,/Ride on, in_car_nate Word!/Ride on, O King Mes_si_ah,/To glo_ry and re_nown;/Pierced by Thy darts of fi_re,/Be e_very foe oer_thrown!
E3:So reign, O God in hea_ven,/E_ter_nal_ly the same;/And end_less praise be gi_ven/To Thy al_migh_ty name./Cloth'd in Thy dazz_ling bright_ness,/Thy church on earth be_hold,/In robes of pur_est white_ness,/In rai_ment wrought with gold.
E4:And let each Gen_tile na_tion/Come glad_ly in her train,/To share Thy great sal_va_tion,/And join her grate_ful strain:/Then neer shall note of sad_ness/A_wake the tremb_ling string;/One song of joy and glad_ness/The ran_somed world shall sing.

View file

@ -0,0 +1,10 @@
M0:|c:Ab|m:4/4|t:EWS 15 With Hearts In Love Abounding|a:Harriet Auber (1773-1862)|h:George James Webb (1837: 1803:1887)
U0:zC:4624484/44444C/4624484/44444C/4624484/(22)4444(84)/4624484/44444C
N1:s,ddmddl,ds,drmrs,ddmddl,ds,dmrds,rrdrmmm-fml,rdt,s,ddmddl,ds,dmrd
N2:m,m,m,s,s,l,f,l,s,s,s,s,s,s,m,m,s,s,l,f,l,s,m,s,f,m,s,s,s,s,s,s,s,s,-f,s,l,l,s,-s,m,m,s,s,l,f,l,s,m,s,f,m,
N3:#s,dssdddddddtdtsssddddddddtdtttltddd-dddfmrsssddddddddtd
N4:#d,ddddmfffmmrdssdddmfffmdssdsssssdddtlsfrs-sdddmfffmdssd
Y1:Mi_ely lavitra\ any/Ny olo-marobe;/Koa Iza no hankany;/Hamonjy azy re,/Hanorina sekoly,/Hitory teny koa./Hamaky ny Baiboly,/Milaza zava-tsoa?
Y2:Indreny olona\ ory/Tsinjovy, ry zareo!/Tsy misy ny mpitory,/Ka moa hafoinareo?/Tsarovy Jeso Tompo/Nandao ny lapa soa,/Ka tonga mba hanompo,/Nanolotra\ aina koa.
Y3:Ry Lohanny mpi_andry!/Tendreo ny irakao,/Fa reraka ka mandry/Ny ondrikelinao;/Iraho ny mpitory/Hande\ha ankehitrio,/Ka tsy handà akory/Hanao veloma\ anio.
Y4:Ny ti_a famonjena/Mi_aramila soa;/Izay manolo-tena/No iraka tokoa;/Na lavitra ny tany,/Hanendry tena hoe:/«Izaho no hankany,/Iraho aho e!»

View file

@ -1,5 +1,5 @@
M0:|c:D|m:4/4|r:7.6.7.6.D|t:FFPM 6 - Avia Miondreha|a:Ramahandry|h:R. Whately, 1787-1863 M0:|c:D|m:4/4|r:7.6.7.6.D|t:FFPM 6 - Avia Miondreha|a:Ramahandry|h:R. Whately, 1787-1863
U0:zC:4 6244 44z4/4 624(22) C/4 6244 44z4/4 4444 C/4 ${Do dia A}6244 44z4/4 4444 C/4 ${Do dia D}6244 44z4/4 4444 C U0:zC:4 6244 44z4/4 624(22) C/4 6244 44z4/4 4444 C/${c:A}4 6244 44z4/4 4444 C/${c:D}4 6244 44z4/4 4444 C
N1:smfsd'tl/smmmd-r/smfsd'tl/lsd'r'td'/sdrmfmr/rfrl,t,d/smfsd'tl/lsd'r'td' N1:smfsd'tl/smmmd-r/smfsd'tl/lsd'r'td'/sdrmfmr/rfrl,t,d/smfsd'tl/lsd'r'td'
N2:mdrmmff/mdddd-t, /rdrmmff/fmmfrm/dm, f, s, l, s, s, /s, t, s, f, s, s, /mdrmmff/fmmfrm N2:mdrmmff/mdddd-t, /rdrmmff/fmmfrm/dm, f, s, l, s, s, /s, t, s, f, s, s, /mdrmmff/fmmfrm
N3:sssssfd'/ssssmfs/sssssfd'/d'd'd'lss/mdddddt, /t, rt, drm/d'ssssfd'/d'd'd'tss N3:sssssfd'/ssssmfs/sssssfd'/d'd'd'lss/mdddddt, /t, rt, drm/d'ssssfd'/d'd'd'tss

View file

@ -20,6 +20,8 @@
</xsl:copy> </xsl:copy>
</xsl:template> </xsl:template>
<xsl:template match="appearance"/>
<xsl:template match="text()"> <xsl:template match="text()">
<xsl:value-of select="." /> <xsl:value-of select="." />
</xsl:template> </xsl:template>

View file

@ -1,4 +1,30 @@
package mg.dot.feufaro.musicXML package mg.dot.feufaro.musicXML
class MXAppearance { import kotlinx.serialization.Serializable
} import nl.adaptivity.xmlutil.serialization.XML
import nl.adaptivity.xmlutil.serialization.XmlElement
import nl.adaptivity.xmlutil.serialization.XmlSerialName
import nl.adaptivity.xmlutil.serialization.XmlValue
@Serializable
@XmlSerialName("appearance", "", "")
data class MXAppearance (
@Serializable
@XmlElement
@XmlSerialName("line-width", "", "")
var lineWidth: List<MXAppearanceChild> = listOf(),
@Serializable
@XmlElement
@XmlSerialName("note-size", "", "")
var noteSize: List<MXAppearanceChild> = listOf(),
@Serializable
@XmlElement
var distance: List<MXAppearanceChild> = listOf(),
@Serializable
@XmlElement
var glyph: List<MXOtherAppearance> = listOf(),
@Serializable
@XmlElement
@XmlSerialName("other-appearance", "", "")
var otherAppearance: List<MXOtherAppearance> = listOf(),
)

View file

@ -1,4 +1,17 @@
package mg.dot.feufaro.musicXML package mg.dot.feufaro.musicXML
class MXAppearanceChild { import kotlinx.serialization.Serializable
} import nl.adaptivity.xmlutil.serialization.XML
import nl.adaptivity.xmlutil.serialization.XmlSerialName
import nl.adaptivity.xmlutil.serialization.XmlValue
@Serializable
@XmlSerialName("line-width", "", "")
data class MXAppearanceChild (
@Serializable
var type: String? = null,
@Serializable
@XmlValue
@XmlSerialName("content", "", "")
var content: Float? = null
)

View file

@ -13,16 +13,16 @@ data class MXCreditWords (
var fontWeight: String? = null, var fontWeight: String? = null,
@Serializable @Serializable
@XmlSerialName("font-size", "", "") @XmlSerialName("font-size", "", "")
var fontSize: Int? = null, var fontSize: Float? = null,
@Serializable @Serializable
@XmlSerialName("font-family", "", "") @XmlSerialName("font-family", "", "")
var fontFamily: String? = null, var fontFamily: String? = null,
@Serializable @Serializable
@XmlSerialName("default-y", "", "") @XmlSerialName("default-y", "", "")
var defaultY: Int? = null, var defaultY: Float? = null,
@Serializable @Serializable
@XmlSerialName("default-x", "", "") @XmlSerialName("default-x", "", "")
var defaultX: Int? = null, var defaultX: Float? = null,
@Serializable @Serializable
@XmlValue @XmlValue
@XmlSerialName("content", "", "") @XmlSerialName("content", "", "")

View file

@ -19,4 +19,7 @@ data class MXDefaults (
@XmlElement @XmlElement
@XmlSerialName("lyric-font", "", "") @XmlSerialName("lyric-font", "", "")
var lyricFont: MXLyricFont? = null, var lyricFont: MXLyricFont? = null,
@Serializable
@XmlElement
var appearance: MXAppearance? = null,
) )

View file

@ -16,7 +16,10 @@ data class MXLyric (
var syllabic: String? = null, var syllabic: String? = null,
@Serializable @Serializable
@XmlSerialName("default-y", "", "") @XmlSerialName("default-y", "", "")
var defaultY: Int? = null, var defaultY: Float? = null,
@Serializable
@XmlSerialName("default-x", "", "")
var defaultX: Float? = null,
@Serializable @Serializable
@XmlSerialName("placement", "", "") @XmlSerialName("placement", "", "")
var placement: String? = null, var placement: String? = null,

View file

@ -20,7 +20,7 @@ data class MXMeasure (
var print: MXPrint? = null, var print: MXPrint? = null,
@Serializable @Serializable
@XmlSerialName("width", "", "") @XmlSerialName("width", "", "")
var width: Int? = null, var width: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("attributes", "", "") @XmlSerialName("attributes", "", "")

View file

@ -10,7 +10,7 @@ data class MXMidiInstrument (
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("volume", "", "") @XmlSerialName("volume", "", "")
var volume: Int? = null, var volume: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("midi-channel", "", "") @XmlSerialName("midi-channel", "", "")

View file

@ -21,7 +21,7 @@ data class MXNote (
var lyric: List<MXLyric> = listOf(), var lyric: List<MXLyric> = listOf(),
@Serializable @Serializable
@XmlSerialName("default-x", "", "") @XmlSerialName("default-x", "", "")
var defaultX: Int? = null, var defaultX: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("pitch", "", "") @XmlSerialName("pitch", "", "")

View file

@ -1,4 +1,17 @@
package mg.dot.feufaro.musicXML package mg.dot.feufaro.musicXML
class MXOtherAppearance { import kotlinx.serialization.Serializable
} import nl.adaptivity.xmlutil.serialization.XML
import nl.adaptivity.xmlutil.serialization.XmlSerialName
import nl.adaptivity.xmlutil.serialization.XmlValue
@Serializable
@XmlSerialName("other-appearance", "", "")
data class MXOtherAppearance (
@Serializable
var type: String? = null,
@Serializable
@XmlValue
@XmlSerialName("content", "", "")
var content: String? = null
)

View file

@ -14,9 +14,9 @@ data class MXPageLayout (
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("page-height", "", "") @XmlSerialName("page-height", "", "")
var pageHeight: Int? = null, var pageHeight: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("page-width", "", "") @XmlSerialName("page-width", "", "")
var pageWidth: Int? = null var pageWidth: Float? = null
) )

View file

@ -10,20 +10,20 @@ data class MXPageMargins (
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("right-margin", "", "") @XmlSerialName("right-margin", "", "")
var rightMargin: Int? = null, var rightMargin: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("left-margin", "", "") @XmlSerialName("left-margin", "", "")
var leftMargin: Int? = null, var leftMargin: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("bottom-margin", "", "") @XmlSerialName("bottom-margin", "", "")
var bottomMargin: Int? = null, var bottomMargin: Float? = null,
@Serializable @Serializable
@XmlSerialName("type", "", "") @XmlSerialName("type", "", "")
var type: String? = null, var type: String? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("top-margin", "", "") @XmlSerialName("top-margin", "", "")
var topMargin: Int? = null var topMargin: Float? = null
) )

View file

@ -13,5 +13,5 @@ data class MXStaffLayout (
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("staff-distance", "", "") @XmlSerialName("staff-distance", "", "")
var staffDistance: Int? = null, var staffDistance: Float? = null,
) )

View file

@ -14,9 +14,9 @@ data class MXSystemLayout (
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("top-system-distance", "", "") @XmlSerialName("top-system-distance", "", "")
var topSystemDistance: Int? = null, var topSystemDistance: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("system-distance", "", "") @XmlSerialName("system-distance", "", "")
var systemDistance: Int? = null, var systemDistance: Float? = null,
) )

View file

@ -10,9 +10,9 @@ data class MXSystemMargins (
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("right-margin", "", "") @XmlSerialName("right-margin", "", "")
var rightMargin: Int? = null, var rightMargin: Float? = null,
@Serializable @Serializable
@XmlElement @XmlElement
@XmlSerialName("left-margin", "", "") @XmlSerialName("left-margin", "", "")
var leftMargin: Int? = null, var leftMargin: Float? = null,
) )

View file

@ -82,7 +82,7 @@ class MusicXML(private val fileRepository: FileRepository) {
} }
} }
suspend fun load() { suspend fun load() {
val xmlContent = fileRepository.readFileContent("assets://14.xml") val xmlContent = fileRepository.readFileContent("assets://13.musicxml")
val xslContent = fileRepository.readFileContent("assets://timepart.xsl") val xslContent = fileRepository.readFileContent("assets://timepart.xsl")
xmlString = performXsltTransformation(xmlContent, xslContent) xmlString = performXsltTransformation(xmlContent, xslContent)
val solfaXML = SolfaXML() val solfaXML = SolfaXML()