diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 81d5919..5658626 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -55,7 +55,6 @@ kotlin { implementation(libs.koin.compose.viewmodel.navigation) implementation(libs.bundles.voyager) implementation(libs.cafe.voyager.koin) - } commonTest.dependencies { implementation(libs.kotlin.test) diff --git a/composeApp/src/commonMain/composeResources/files/config.json b/composeApp/src/commonMain/composeResources/files/config.json index 9071c80..0d5bedd 100644 --- a/composeApp/src/commonMain/composeResources/files/config.json +++ b/composeApp/src/commonMain/composeResources/files/config.json @@ -2,6 +2,7 @@ "themeMode": "DARK", "fontSize": 18.5, "playlist": [ + "assets://ffpm-38.txt", "assets://ews-456.txt", "assets://ews-1.txt", "assets://ews-2.txt", diff --git a/composeApp/src/commonMain/composeResources/files/ff-43.txt b/composeApp/src/commonMain/composeResources/files/ff-43.txt new file mode 100644 index 0000000..bc3bbad --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ff-43.txt @@ -0,0 +1,10 @@ +M0:|c:Eb|m:4/4|r:P.M.|t:FF 43. Aiza Moa Ianao?|a:Heritsimba A.R.|h: +U0:z0:242422242422242(22)222428/242422242422242(22)222422222242222224222222422222(24)222222422222242222224222222428 +N1:mmrmmsssfmmsssfm-dmmmrd/mmrmmsssfmmsssfm-dmmmrd---/z14/sslsmdmmrmr-/z16/sslsmdmmrmd +N2:#s,ddtddmmmrddmmmrdlsdddtd/ddtddmmmrddmmmrdlsdddtd---/m4-zzd4-zz/mmfmdsddtdt-3/m4-zzd4-zz/mmfmdsddttd-3 +N3:#mssFssdddlssdddlsd,msssfm/ssFssdddlssdddlsd,msssfm---/ddddsmfssls---/d4sms5-3/ddddsmfssls---/d4smssffm-3/ +N4:#m,d16smdsssd/d16smdsssdslt/dz9-sltd4smds5lt/dz9-sltd4smds3d +Y1:Jesosy Tompo mi_antso anao/Manontany izao:/«Aiza moa i_anao?»/Ny ondrikeliko noana indreo/Miandry\ anao re ireo/«Aiza moa i_anao?»/${R=}‘Ty a\ho, Je'Ty a\ho Jeso, (ekeo mba) ho irakao/Raiso ha Raiso hanao ny sitrakao tokoa/Jesosy Jesosy ô! (omeko) mba ho Anao/Ny foko, Ny foko, tenako sy fanahiko +Y2:E! làlan-tsarotra\ ilàna anao/Ady mafy no ao:/«Aiza moa i_anao?»/Reseonao ’zao tontolo izao/Mba ho Ahy re izao/«Aiza moa i_anao?»/ +Y3:Ny hery, aina sy fanananao/No ilaiko izao:/«Aiza moa i_anao»/Ny tenanao sy ny fanahinao/No takiako izao/«Aiza moa i_anao»?/ +Y4:Ny sandriko no hi_aro anao/Hisakambina\ anao/«Aiza moa i_anao?»/Ra\ha ny Fana\hy no hitantana\ anao/Vonona ve ianao?/«Aiza moa i_anao?»/ diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-35.txt b/composeApp/src/commonMain/composeResources/files/ffpm-35.txt new file mode 100644 index 0000000..7b251a2 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-35.txt @@ -0,0 +1,10 @@ +M0:|c:F|m:4/4|r:7.6.7.6.D.|t:FFPM 35 : Isaoranay, Ry Ray|a:S. Rahamefy 1880-1961|h:S. Rahamefy 1880-1961 +U0:zC:4624(22)4846244C462444846244C44444(444)4624446(222)6244C4624448(22)6244C +N1:s,#t,mdtr-ddmsrfsmmlsflssmmltdrs,ts,rmfmrsmdtrdddms#rddtlsmmRmfmm#ddrmfmrd +N2:#f,sdssstssdmdrtdd7lF4sz8tds5-s-#t,mmsfmd8-ddtts, +N3:#t,msmrf-mms7fmlfmmddrrdtz8ssmrfmm-m-ssmfsssFslssmfslsfm +N4:#d,dd'd'ss-ddd#r,ddssdd7llrrrsz8sddssd,2-d,-d12l-s4d +Y1:Isaoranay, ry Ra_y,/Ny fiti_avanao;/Fa indro, azona_y/Ny ta_om-ba_ovao Ny ta_om-ba_ovao/Ry Tompo ô! Ambeno/‘Zao fifaliana\ izao/Ka aoka re ho feno/Ny haso_avanao. +Y2:Ny taona va_o lasa/Nipaoka olon-tsoa/Ireny mba nikasa/Mba ho tafita koa mba ho tafita koa/Ny fitondrana\ anefa/Afeninao, ry Ray!/Ka nony mi_antefa/Vao sina izahay. +Y3:Fanahy ô, avi_a/Hitari-dalana\ e!/Mandroso\ izao ny di_a,/Hamaky rano be Hamaky rano be/Ny herinao tsy lefy/No tanjaky ny fo;/Ka ampy mba ho fefy,/Ra\ha avy ny manjo. +Y4:Itoero, Jeso ti_a,/Ny sambona_y re!/Na tony na mari_a,/'Ty ranomasim-be 'ty ranomasim-be/Ra\ha Hi_anao no hita/Tsy fefika\ izahay/Ambara-pi_ampita/Arỳ an-tratran-dRay. diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-38.txt b/composeApp/src/commonMain/composeResources/files/ffpm-38.txt new file mode 100644 index 0000000..91bd587 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-38.txt @@ -0,0 +1,9 @@ +M0:|c:C|m:4/4|r:7.6.7.6.D.|t:FFPM 38 : He, Hosana|a:Valborg Andersen, 1851-1935|h:E. Hoff, 1832-1894 +U0:z0:44422442222224z4/2242222/222222448z4/224222222444224222222444/22422222242222/222222448z4/${ff}${rit}22222244Cz4 +N1:d'#msmd,l5dls3/ddtddrr/#sffmmfrdtd/#rmfs(mf)s-(mf)smzrmf(rm)f-(rm)frz/t#frds-zztrds-zzssllrrdtm/ssllrrdtd +N2:d'smd#rf7m3/s7/ttddllsfm/#t,drm(dr)m-(dr)mdztdr(td)r-tdrtz/rfmm-zzrfmm-zz/z9/mmf4mrm +N3:d'smd#sd10/mmrddtt/rrddrfmrd/z3d7sz4s8z/zzzs4z3s4/z9/d4lls3 +N4:d'smd#t,f5lfd3/ddfmmss/ssllfrs#s,sd/z7d5z7s5/z3ddttz3d4/z9/ddf4s'sd +Y1:He, hosana! Isaoran’ani_e ny Mesi_a,/I\zay nalefan’ny Tompo,/Ka hosana no asandratray./I\lay nirahi_2nao _ry _Tompo_2/I\lay nirahi_2nao _ry _Tompo_2/No derainay,_4/No derainay,_4/Ka hosana no asandratray!/Ka hosana no asandratray!/ +O1:3:24:_3I\lay nirahinao, ry Tompo,_4I\lay nirahinao, ry Tompo,_4No derainay,_3No derainay;_9 +O1:4:24:_7I\lay nirahinao,_7I\lay nirahinao,_3No derainay,_3No derainay_9 \ No newline at end of file diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-501.txt b/composeApp/src/commonMain/composeResources/files/ffpm-501.txt new file mode 100644 index 0000000..98beed5 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-501.txt @@ -0,0 +1,11 @@ +M0:|c:E|m:3/4|r:L.M.|t:FFPM 501. Namely Mafy Loatra|a:W.E. Cousins 1840-1939|h:H.P. Smith, 1825-1898 +U0:z0:4448484C/44484(44)4C/44484(44)4(44)/48484(44)4C +N1:#rmmmfmrrr/ssfmddtls/slsdttlsf-/mrd, fmrltd, +N2:#s,d5llt/tdrdmmrdt/rrrddd-ddt/dtlrdl-ss +N3:ssslslrs/s5F-Fs/tltssf-ss-/sfmssf-rm +N4:#f,d5fFs/sltdlr-rs/#dfffmmf-mr-/d#d,sltdfrsd' +Y1:Namely mafy lo_atra/Ny henatra\ aman-tahotra,/Tsy afaka ny haizim-po/Fa mbola tao ny heloko +Y2:Nandroso a\ho nivavaka/Ry Jeso ô, Mpanavotra,/Izao no angatahiko:/Mba mamelà ny heloko! +Y3:Izaho tsy hi_ahotra,/Ny tenako atolotro,/Izay rehetra\ ananako/Anao, Mpamela heloka! +Y4:Ny tahotra dia levona,/Ari_ako ny henatra,/Satria mandre ny feonao hoe:/«Voavelako ny helokao!» +Y5:Endrey ny hafali_ako/I\zay velona\ ao anatiko!/Ka sahiko ny hanao hoe:/«Voavelanao ny heloko!» diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/App.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/App.kt index f45ab46..a412009 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/App.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/App.kt @@ -12,7 +12,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.koin.compose.koinInject -import androidx.compose.ui.geometry.Offset import cafe.adriel.voyager.navigator.CurrentScreen import cafe.adriel.voyager.navigator.Navigator import mg.dot.feufaro.viewmodel.SolfaScreenModel 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 6f7d8d4..483a116 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/ParseULine.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/ParseULine.kt @@ -26,6 +26,12 @@ class ParseULine (var line: String, var measure: Int) { } line = matchResult.groups[2]!!.value parsedString = ":" + if (capturedChar == "0") { + parsedString = "|" + } + if (capturedChar == "8") { + parsedString = "!" + } } parseUStage1() parseUStage3() 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 a07d8d8..b20eb4b 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -22,14 +22,16 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository val REGEX_SINGLETON_PAREN = Regex("[\\(\\[](.[¹²³₁₂₃]?)?[\\)\\]]") // @todo val REGEX_SHIFT_COMMA_UPWARD = Regex("([^a-zA-Z]+)([',])") val REGEX_TEMPLATE_COMMENT = Regex("(\\$[A-Z]|\\$\\{[^\\}]*\\})") - val REGEX_REPETITION = Regex("([zdrmfslt-](?>[',]*))([1-9][0-9]*)") + val REGEX_REPETITION = Regex("([zdrmfslt-](?>[',]*))([1-9][0-9]*)", RegexOption.IGNORE_CASE) val REGEX_PARSE_META = Regex("\\|(?=[a-z]:)") val REGEX_LYRICS_COMMENT = Regex("\\$\\{([^\\}]:[^\\}]*)\\}") val REGEX_LYRICS_REPETITION = Regex("_(\\d)") - val REGEX_VOWELS_STAGE1 = Regex("[aeiouyàéỳ,;\\.\\-:!](?![ aeiouyàéỳ,;\\.\\-:!])", RegexOption.IGNORE_CASE) + val REGEX_VOWELS_STAGE1 = Regex("[aeiouyàéỳ,;\\.\\-:!\\)](?![ aeiouyàéỳ,;\\.\\-:!\\)])", 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_DASHED = Regex("([aeio][nm])\\-([tdjkbp])") + val REGEX_MALAGASY_MN_STAGE2 = Regex("_([mn])-") } var nextTIndex: Int = -1 var nextNIndex: Int = -1 @@ -72,7 +74,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository } '.', ',', -> unitObject.addMarker(it) - '-', 'Z' -> + '-', 'Z', 'z' -> N.indices.forEach { voiceNumber -> unitObject.addBlank(voiceNumber, it) } @@ -426,7 +428,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository return this .replace("_/", "/") //.also { println ("1 $it")} - .replace("_", "-_") + .replace(Regex("(?