FileRepository

This commit is contained in:
dotmg 2025-07-04 16:51:17 +02:00
commit a2e6070f95
71 changed files with 22496 additions and 0 deletions

11
README.md Normal file
View file

@ -0,0 +1,11 @@
This is a Kotlin Multiplatform project targeting Android, Desktop.
* `/composeApp` is for code that will be shared across your Compose Multiplatform applications.
It contains several subfolders:
- `commonMain` is for code thats common for all targets.
- Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name.
For example, if you want to use Apples CoreCrypto for the iOS part of your Kotlin app,
`iosMain` would be the right folder for such calls.
Learn more about [Kotlin Multiplatform](https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html)…

10
build.gradle.kts Normal file
View file

@ -0,0 +1,10 @@
plugins {
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.androidLibrary) apply false
alias(libs.plugins.composeHotReload) apply false
alias(libs.plugins.composeMultiplatform) apply false
alias(libs.plugins.composeCompiler) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
}

View file

@ -0,0 +1,99 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidApplication)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
alias(libs.plugins.composeHotReload)
}
kotlin {
androidTarget {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
jvmTarget.set(JvmTarget.JVM_11)
}
}
jvm("desktop")
sourceSets {
val desktopMain by getting
androidMain.dependencies {
implementation(compose.preview)
implementation(libs.androidx.activity.compose)
implementation(libs.koin.android) // Koin Android-specific extensions
}
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.lifecycle.runtimeCompose)
implementation(libs.koin.core) // Koin core for shared logic
implementation(libs.koin.compose) // Koin for Compose Multiplatform UI
implementation(libs.koin.core.viewmodel) // Koin for KMP ViewModels
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
desktopMain.dependencies {
implementation(compose.desktop.currentOs)
implementation(libs.kotlinx.coroutinesSwing)
}
//androidMain.dependsOn(androidAndJvmMain)
}
}
android {
namespace = "mg.dot.feufaro"
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
applicationId = "mg.dot.feufaro"
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 1
versionName = "1.0"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}
dependencies {
debugImplementation(compose.uiTooling)
}
compose.desktop {
application {
mainClass = "mg.dot.feufaro.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "mg.dot.feufaro"
packageVersion = "1.0.0"
}
}
}

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@android:style/Theme.Material.Light.NoActionBar">
<activity
android:exported="true"
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

View file

@ -0,0 +1,27 @@
package mg.dot.feufaro
import android.app.Application
import org.koin.core.context.GlobalContext.startKoin
import mg.dot.feufaro.di.commonModule // Importez votre module commun
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.logger.Level
import mg.dot.feufaro.di.androidModule
class AndroidApp: Application {
override fun onCreate() {
super.onCreate()
startKoin {
// Log Koin messages (INFO pour le développement, ERROR pour la production)
androidLogger(Level.INFO)
// Fournit le Context Android à Koin pour l'injection
androidContext(this@AndroidApp)
// Incluez votre module Koin commun (et d'autres modules Android spécifiques si vous en avez)
modules(commonModule, androidModule)
}
// Optionnel : Vous pouvez ajouter un log ou un petit test ici pour vérifier que Koin démarre bien
// val fileRepository = org.koin.core.context.GlobalContext.get().get<FileRepository>()
// println("Koin et FileRepository initialisés dans AndroidApp: $fileRepository")
}
}

View file

@ -0,0 +1,46 @@
package mg.dot.feufaro
import android.content.Context
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.io.BufferedReader
import java.io.File
import java.io.IOException
import java.io.InputStreamReader
// This is just a regular class that implements the common 'FileRepository' interface.
// It is NOT an 'actual' declaration of 'FileRepository'.
class AndroidFileRepository(private val context: Context) : FileRepository { // IMPORTS AND IMPLEMENTS THE commonMain 'FileRepository' interface
override suspend fun readFileLines(filePath: String): List<String> = withContext(Dispatchers.IO) {
try {
when {
filePath.startsWith("assets://") -> {
readAssetFileLines(filePath)
}
else -> {
File(filePath).readLines()
}
}
} catch (e: IOException) {
throw IOException("Failed to read file or asset '$filePath'")
}
}
override suspend fun readFileContent(filePath: String): String = withContext(Dispatchers.IO) { "" }
private fun readAssetFileLines(assetFileName: String): List<String> {
return context.assets.open(assetFileName).use { inputStream ->
BufferedReader(InputStreamReader(inputStream)).useLines { it.toList() }
}
}
private fun readAssetFileContent(assetFileName: String): String {
return context.assets.open(assetFileName).use { inputStream ->
// BufferedReader(InputStreamReader(inputStream)) permet de lire le texte ligne par ligne.
BufferedReader(InputStreamReader(inputStream)).use { reader ->
reader.readText() // Lit tout le contenu en une seule chaîne.
}
}
}
}

View file

@ -0,0 +1,25 @@
package mg.dot.feufaro
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContent {
App()
}
}
}
@Preview
@Composable
fun AppAndroidPreview() {
App()
}

View file

@ -0,0 +1,9 @@
package mg.dot.feufaro
import android.os.Build
class AndroidPlatform : Platform {
override val name: String = "Android ${Build.VERSION.SDK_INT}"
}
actual fun getPlatform(): Platform = AndroidPlatform()

View file

@ -0,0 +1,14 @@
package mg.dot.feufaro.di
import android.content.Context
import mg.dot.feufaro.AndroidFileRepository // Import the actual Android implementation
import org.koin.core.module.dsl.singleOf // Import for Koin DSL
import org.koin.core.module.dsl.bind // Import for Koin DSL
import org.koin.dsl.module
import org.koin.android.ext.koin.androidContext // Import for androidContext()
val androidModule = module {
// Koin will automatically provide the Android Context because you called androidContext() in AndroidApp.
// It then uses this Context to construct AndroidFileRepository.
singleOf(::AndroidFileRepository) { bind<FileRepository>() }
}

View file

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View file

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,3 @@
<resources>
<string name="app_name">Feufaro</string>
</resources>

View file

@ -0,0 +1,44 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="450dp"
android:height="450dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M56.25,18V46L32,60 7.75,46V18L32,4Z"
android:fillColor="#6075f2"/>
<path
android:pathData="m41.5,26.5v11L32,43V60L56.25,46V18Z"
android:fillColor="#6b57ff"/>
<path
android:pathData="m32,43 l-9.5,-5.5v-11L7.75,18V46L32,60Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="23.131"
android:centerY="18.441"
android:gradientRadius="42.132"
android:type="radial">
<item android:offset="0" android:color="#FF5383EC"/>
<item android:offset="0.867" android:color="#FF7F52FF"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M22.5,26.5 L32,21 41.5,26.5 56.25,18 32,4 7.75,18Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="44.172"
android:startY="4.377"
android:endX="17.973"
android:endY="34.035"
android:type="linear">
<item android:offset="0" android:color="#FF33C3FF"/>
<item android:offset="0.878" android:color="#FF5383EC"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="m32,21 l9.526,5.5v11L32,43 22.474,37.5v-11z"
android:fillColor="#000000"/>
</vector>

View file

@ -0,0 +1,44 @@
package mg.dot.feufaro
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.safeContentPadding
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import feufaro.composeapp.generated.resources.Res
import feufaro.composeapp.generated.resources.compose_multiplatform
@Composable
@Preview
fun App() {
MaterialTheme {
var showContent by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.safeContentPadding()
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Button(onClick = { showContent = !showContent }) {
Text("Click me!")
}
AnimatedVisibility(showContent) {
val greeting = remember { Greeting().greet() }
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
Image(painterResource(Res.drawable.compose_multiplatform), null)
Text("Compose: $greeting")
}
}
}
}
}

View file

@ -0,0 +1,13 @@
package mg.dot.feufaro
import java.io.IOException // Java.io.IOException est généralement partagée sur JVM/Android
// Définissez une expect interface. Elle spécifie le contrat de votre repository.
// Utilisez 'expect interface' car l'implémentation (actual) variera selon la plateforme.
expect interface FileRepository {
// Lecture de fichier ligne par ligne
suspend fun readFileLines(filePath: String): List<String>
// Lecture de fichier entier en tant que String
suspend fun readFileContent(filePath: String): String
}

View file

@ -0,0 +1,9 @@
package mg.dot.feufaro
class Greeting {
private val platform = getPlatform()
fun greet(): String {
return "Hello, ${platform.name}!"
}
}

View file

@ -0,0 +1,7 @@
package mg.dot.feufaro
interface Platform {
val name: String
}
expect fun getPlatform(): Platform

View file

@ -0,0 +1,10 @@
package mg.dot.feufaro.di
import org.koin.dsl.module
val commonModule = module {
// Déclarez FileRepository comme un singleton.
// L'implémentation concrète (actual) sera résolue par Koin en fonction de la plateforme.
// Pour Android, Koin injectera le Context que vous avez fourni via androidContext().
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,823 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0.2 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise version="4.0.2">
<identification>
<encoding>
<software>Audiveris 5.3.1</software>
<supports type="yes" element="print" attribute="new-system" value="yes"></supports>
<supports type="yes" element="print" attribute="new-page" value="yes"></supports>
<software>ProxyMusic 4.0.2</software>
<encoding-date>2025-06-28</encoding-date>
</encoding>
<source>/home/mahefa/Images/10-2.jpg</source>
<miscellaneous>
<miscellaneous-field name="source-file">/home/mahefa/Images/10-2.jpg</miscellaneous-field>
<miscellaneous-field name="source-sheet-1">1</miscellaneous-field>
</miscellaneous>
</identification>
<defaults>
<scaling>
<millimeters>5.7573</millimeters>
<tenths>40</tenths>
</scaling>
<page-layout>
<page-height>344</page-height>
<page-width>1059</page-width>
<page-margins type="both">
<left-margin>80</left-margin>
<right-margin>80</right-margin>
<top-margin>80</top-margin>
<bottom-margin>80</bottom-margin>
</page-margins>
</page-layout>
<lyric-font font-family="Sans Serif" font-size="10"></lyric-font>
</defaults>
<part-list>
<score-part id="P1">
<part-name>Voice</part-name>
<part-abbreviation>Voice</part-abbreviation>
<score-instrument id="P1-I1">
<instrument-name>Voice Oohs</instrument-name>
</score-instrument>
<midi-instrument id="P1-I1">
<midi-channel>1</midi-channel>
<midi-program>54</midi-program>
<volume>78</volume>
</midi-instrument>
</score-part>
<score-part id="P2">
<part-name>Voice</part-name>
<part-abbreviation>Voice</part-abbreviation>
<score-instrument id="P2-I1">
<instrument-name>Voice Oohs</instrument-name>
</score-instrument>
<midi-instrument id="P2-I1">
<midi-channel>2</midi-channel>
<midi-program>54</midi-program>
<volume>78</volume>
</midi-instrument>
</score-part>
</part-list>
<!--= = = = = = = = = = = = = = = = = = = = = = = = = = = = =-->
<part id="P1">
<!--=======================================================-->
<measure number="1" width="328">
<print>
<system-layout>
<system-margins>
<left-margin>8</left-margin>
<right-margin>-19</right-margin>
</system-margins>
<top-system-distance>-22</top-system-distance>
</system-layout>
<measure-numbering>system</measure-numbering>
</print>
<attributes>
<divisions>1</divisions>
<key>
<fifths>2</fifths>
</key>
<clef>
<sign>G</sign>
<line>2</line>
</clef>
<staff-details print-object="yes"></staff-details>
</attributes>
<direction placement="above">
<direction-type>
<words></words>
</direction-type>
<sound tempo="120"></sound>
</direction>
<note default-x="92">
<pitch>
<step>B</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="12">up</stem>
</note>
<note default-x="178">
<pitch>
<step>C</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="8">up</stem>
</note>
<note default-x="177">
<chord/>
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="8">up</stem>
</note>
<note default-x="243">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="19">up</stem>
</note>
<note default-x="242">
<chord/>
<pitch>
<step>D</step>
<octave>5</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="19">up</stem>
</note>
<note default-x="286">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="15">up</stem>
</note>
<note default-x="286">
<chord/>
<pitch>
<step>C</step>
<alter>1</alter>
<octave>5</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="15">up</stem>
</note>
<backup>
<duration>6</duration>
</backup>
<note default-x="91">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-62">down</stem>
<notations>
<articulations>
<staccato default-y="-24" placement="above"></staccato>
</articulations>
<slur type="start" number="1" default-x="5" default-y="-50" placement="below" bezier-x="9" bezier-y="-8"></slur>
</notations>
</note>
<note default-x="134">
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-68">down</stem>
<notations>
<slur type="stop" number="1" default-x="-5" default-y="-55" bezier-x="-11" bezier-y="-5"></slur>
</notations>
</note>
</measure>
<!--=======================================================-->
<measure number="2" width="275">
<note default-x="18">
<pitch>
<step>B</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="12">up</stem>
</note>
<note default-x="103">
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="8">up</stem>
</note>
<note default-x="189">
<pitch>
<step>B</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="4">up</stem>
<lyric number="1" default-y="-108" placement="below">
<syllabic>single</syllabic>
<text>al</text>
</lyric>
</note>
<note default-x="189">
<chord/>
<pitch>
<step>G</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="4">up</stem>
</note>
<note default-x="233">
<pitch>
<step>D</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="1">up</stem>
<lyric number="1" default-y="-108" placement="below">
<syllabic>single</syllabic>
<text>le</text>
</lyric>
</note>
<note default-x="233">
<chord/>
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="1">up</stem>
</note>
<backup>
<duration>6</duration>
</backup>
<note default-x="16">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-62">down</stem>
<notations>
<articulations>
<staccato default-y="-24" placement="above"></staccato>
</articulations>
<slur type="start" number="1" default-x="4" default-y="-50" placement="below" bezier-x="9" bezier-y="-8"></slur>
</notations>
</note>
<note default-x="59">
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-68">down</stem>
<notations>
<slur type="stop" number="1" default-x="-5" default-y="-56" bezier-x="-11" bezier-y="-5"></slur>
</notations>
</note>
<note default-x="102">
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-68">down</stem>
<notations>
<articulations>
<staccato default-y="-94" placement="below"></staccato>
</articulations>
<slur type="start" number="1" default-x="5" default-y="-55" placement="below" bezier-x="7" bezier-y="-11"></slur>
</notations>
</note>
<note default-x="146">
<pitch>
<step>B</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-82">down</stem>
<notations>
<slur type="stop" number="1" default-x="-5" default-y="-70" bezier-x="-13" bezier-y="-2"></slur>
</notations>
</note>
</measure>
<!--=======================================================-->
<measure number="3" width="198">
<note default-x="17">
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>6</duration>
<voice>1</voice>
<type>whole</type>
<dot/>
</note>
<note default-x="89">
<pitch>
<step>C</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>4</duration>
<voice>1</voice>
<type>whole</type>
<notations>
<slur type="stop" number="1" default-x="8" default-y="-61" bezier-x="-16" bezier-y="-7"></slur>
</notations>
</note>
<backup>
<duration>10</duration>
</backup>
<note default-x="43">
<pitch>
<step>D</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>2</voice>
<type>half</type>
<stem default-y="-72">down</stem>
<notations>
<slur type="start" number="1" default-x="4" default-y="-60" placement="below" bezier-x="16" bezier-y="-8"></slur>
</notations>
<lyric number="1" default-y="-109" placement="below">
<syllabic>single</syllabic>
<text>lu</text>
</lyric>
</note>
</measure>
<!--=======================================================-->
<measure number="4" width="109">
<note default-x="21">
<pitch>
<step>D</step>
<octave>4</octave>
</pitch>
<duration>4</duration>
<voice>1</voice>
<type>whole</type>
<lyric number="1" default-y="-108" placement="below">
<syllabic>single</syllabic>
<text>ia!</text>
</lyric>
</note>
<backup>
<duration>4</duration>
</backup>
<note default-x="39">
<pitch>
<step>D</step>
<octave>4</octave>
</pitch>
<duration>4</duration>
<voice>2</voice>
<type>whole</type>
</note>
<barline location="right">
<bar-style>light-heavy</bar-style>
</barline>
</measure>
</part>
<!--= = = = = = = = = = = = = = = = = = = = = = = = = = = = =-->
<part id="P2">
<!--=======================================================-->
<measure number="1" width="328">
<print>
<system-layout>
<system-margins>
<left-margin>8</left-margin>
<right-margin>-19</right-margin>
</system-margins>
<top-system-distance>-22</top-system-distance>
</system-layout>
<staff-layout number="1">
<staff-distance>124</staff-distance>
</staff-layout>
<measure-numbering>none</measure-numbering>
</print>
<attributes>
<divisions>1</divisions>
<key>
<fifths>2</fifths>
</key>
<clef>
<sign>F</sign>
<line>4</line>
</clef>
<staff-details print-object="yes"></staff-details>
</attributes>
<note default-x="90">
<pitch>
<step>D</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-51">down</stem>
</note>
<note default-x="90">
<chord/>
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-51">down</stem>
<notations>
<slur type="start" number="1" default-x="6" default-y="12" placement="above" bezier-x="14" bezier-y="8"></slur>
</notations>
</note>
<note default-x="134">
<pitch>
<step>E</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-47">down</stem>
</note>
<note default-x="134">
<chord/>
<pitch>
<step>G</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<accidental>sharp</accidental>
<stem default-y="-47">down</stem>
<notations>
<slur type="stop" number="1" default-x="6" default-y="9" bezier-x="-13" bezier-y="9"></slur>
</notations>
</note>
<note default-x="177">
<pitch>
<step>A</step>
<octave>2</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-63">down</stem>
</note>
<note default-x="177">
<chord/>
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-63">down</stem>
</note>
<note default-x="241">
<pitch>
<step>B</step>
<octave>2</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-59">down</stem>
</note>
<note default-x="241">
<chord/>
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-59">down</stem>
</note>
<note default-x="285">
<pitch>
<step>C</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-55">down</stem>
</note>
<note default-x="284">
<chord/>
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-55">down</stem>
</note>
</measure>
<!--=======================================================-->
<measure number="2" width="275">
<note default-x="14">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-44">down</stem>
<notations>
<slur type="start" number="1" default-x="17" default-y="6" placement="above" bezier-x="6" bezier-y="11"></slur>
</notations>
</note>
<note default-x="59">
<pitch>
<step>E</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-47">down</stem>
</note>
<note default-x="59">
<chord/>
<pitch>
<step>G</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-47">down</stem>
<notations>
<slur type="stop" number="1" default-x="4" default-y="6" bezier-x="-6" bezier-y="11"></slur>
</notations>
</note>
<note default-x="144">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-44">down</stem>
<notations>
<slur type="stop" number="1" default-x="1" default-y="-1" bezier-x="-6" bezier-y="11"></slur>
</notations>
</note>
<note default-x="189">
<pitch>
<step>E</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-47">down</stem>
</note>
<note default-x="189">
<chord/>
<pitch>
<step>G</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-47">down</stem>
</note>
<note default-x="232">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-44">down</stem>
</note>
<note default-x="231">
<chord/>
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem default-y="-44">down</stem>
</note>
<backup>
<duration>5</duration>
</backup>
<note default-x="14">
<pitch>
<step>D</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-54">down</stem>
</note>
<note default-x="102">
<pitch>
<step>C</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-55">down</stem>
</note>
<note default-x="102">
<chord/>
<pitch>
<step>E</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-55">down</stem>
<notations>
<slur type="start" number="1" default-x="11" default-y="-1" placement="above" bezier-x="6" bezier-y="11"></slur>
</notations>
</note>
<note default-x="146">
<pitch>
<step>D</step>
<octave>3</octave>
</pitch>
<duration>1</duration>
<voice>2</voice>
<type>quarter</type>
<stem default-y="-54">down</stem>
</note>
</measure>
<!--=======================================================-->
<measure number="3" width="198">
<note default-x="17">
<pitch>
<step>G</step>
<octave>3</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-40">down</stem>
<notations>
<slur type="start" number="1" default-x="6" default-y="-29" placement="below" bezier-x="32" bezier-y="-19"></slur>
</notations>
</note>
<note default-x="17">
<chord/>
<pitch>
<step>B</step>
<octave>3</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-40">down</stem>
<notations>
<slur type="start" number="2" default-x="6" default-y="17" placement="above" bezier-x="32" bezier-y="24"></slur>
</notations>
</note>
<note default-x="87">
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-35">down</stem>
</note>
<note default-x="145">
<pitch>
<step>A</step>
<octave>2</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-63">down</stem>
<notations>
<slur type="stop" number="1" default-x="-6" default-y="-50" bezier-x="-36" bezier-y="-8"></slur>
</notations>
</note>
<note default-x="145">
<chord/>
<pitch>
<step>G</step>
<octave>3</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>half</type>
<stem default-y="-63">down</stem>
<notations>
<slur type="stop" number="2" default-x="6" default-y="14" bezier-x="-31" bezier-y="26"></slur>
</notations>
</note>
<backup>
<duration>6</duration>
</backup>
<forward>
<duration>2</duration>
<voice>2</voice>
</forward>
<note default-x="87">
<pitch>
<step>A</step>
<octave>3</octave>
</pitch>
<duration>2</duration>
<voice>2</voice>
<type>half</type>
<stem default-y="28">up</stem>
<notations>
<slur type="continue" number="1" default-x="-18" default-y="21" placement="above" bezier-x2="6" bezier-y2="11"></slur>
<slur type="stop" number="1" default-x="14" default-y="21" bezier-x="-6" bezier-y="11"></slur>
</notations>
</note>
</measure>
<!--=======================================================-->
<measure number="4" width="109">
<note default-x="20">
<pitch>
<step>F</step>
<alter>1</alter>
<octave>3</octave>
</pitch>
<duration>4</duration>
<voice>1</voice>
<type>whole</type>
</note>
<backup>
<duration>4</duration>
</backup>
<note default-x="20">
<pitch>
<step>D</step>
<octave>3</octave>
</pitch>
<duration>4</duration>
<voice>2</voice>
<type>whole</type>
</note>
<barline location="right">
<bar-style>light-heavy</bar-style>
</barline>
</measure>
</part>
</score-partwise>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,10 @@
M0:|c:D|m:9/4|r:9.9.9.9.D.|t:FFPM-480 - Mamin'ny foko, ry Jeso ô!|a:Razafimahefa, 1867-1961|h:Phoebe P. Knapp, 1839-1908|n:15|l:12
S0:/|:!
T0:{!M:R:D|S:-:-!S:-:-!F:S:L|S:-:-!-:-:-/S:M:S|D:-:-!T:-:-!L:S:F|S:-:-!-:-:-/M:R:D|S:-:-!S:-:-!F:S:L|S:-:-!-:-:-/D:R:M|F:-:-!R:-:-!D:R:T|D:-:-!-:-:-/S:S:S|D:-:-!S:-:--!L:L:L|S:-:-!-:-:-/S:S:S|L:-:-!D:-:-!T:T:L|T:-:-!--/T:D:R|D:-:-!S:-:-!L:S:L|S:-:-!-:-:-/D:R:M|F:-:-!R:-:-!D:R:T|D:-:-!-:-:-}
N1:mrdssfsls/smsd'tlsFs/mrdssfsls/drmfrdrt,d/sssd'sllls/sssld'ttlt/td'r'd'slsls/drmfrdrt,d
N2:dddmmdddd/mdmmrrrrr/dddmmdddd/dddrl,dt,s,s,/mmmmmfffm/mmmfsssFs/fffmmfmfm/dtdrl,dt,s,s,
N3:sfmsslmfm/sssssd'tlt/sfmsslmfm/mfslfmffm/d'd'd'sd'd'd'd'd'/d'd'd'd'd'r'r'r'r'/sltd'd'd'd'd'd'/sslfmfrm
N4:d9/ddddrrrrs,/d9/dddf,f,s,s,s,d/d5fffd/dddfmrrrs/sssd6/mrdf,f,s,s,s,d
L1:Ma_min'_ny _fo_ko _ry _Je_so _ô!/Ny _fa_mon_je_na i_zay _vi_ta_nao/Ny _ha_di_soa_ko _na_ve_la_nao/Te_na a_fa_ka a_ho _man_dra_ki_zay./Je_soa _ma_la_la ô! _Mpa_mon_jy _soa/I_ndro _ny _ai_ko _rai_so ho _A_nao/Ve_lon-_ka_nom_po, _ve_lon-_ka_noa,/Vo_non-_ka_nao i_zay _si_tra_kao./
L2:Ta_no _ny _fo_ko, _ry _Je_soa _tia,/Za_za _tsy _ma_ha_sa_ra_kaA_nao;/Mbo_la _ma_le_my _mo_ra _ma_nia,/Ta_no _hi_fi_ki_traao _A_mi_nao!
Y3:Aoka ny foko sy ny fonao/Hiara-mitempo tena iray;/Aoka ny saiko sy ny sainao/Hiray safidy mandrakizay!

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
M0:|c:D|m:4/4|r:8.8 L.M.|t:1 - From all that dwell below the sky|n:15|l:10|a:John Warrington Hatton (1793: 1710-1793)|h:Isaac Watts (1719)|x:https://hymnary.org/tune/duke_street_hatton
T0:{|D:-!M:F|S:-!(L:T)|D:-!(T:L)|S:-!-:-/S:-!S:S|L:-!(S:S)|(F:T)!M:-|R:-!-:-/M:-!M:R|(D:M)!(S:D)|(L:R)!(F:M)|R:-!-:-/S:-!L:T|(D:-.F!S):D|D:-!T:-|D:-!-:-}
N1:dmfsltd'tls/sssls-f-mr/mmrdmsd'lsfmr/sltd'--fmrd
N2:ddt,ddfmrdt,/d5s,l,t,dt,/ddt,s,dd-d-t,dt,/ddrmrdrdt,d
N3:msssf-ssFs/mmsfsmf-ss/ssfmsd'sfss-s/sffmfslsfm
N4:ddrmfrdr-s,/ddmfm-r-ds,/dds,d-m-fmrds,/mfrdrmfss,d
E1:From all that dwell be_low the Skies/Let the Cre_a_tor's Praise a_rise;/Let the Re_deem_er's Name be sung/Thro' ev'_ry Land, by ev'_ry Tongue,
E2:E_ter_nal are Thy mer_cies Lord;/E_ter_nal truth a_ttends Thy Word;/Thy praise shall sound from shore to shore/Till suns shall rise and set no more.
E3:Your lof_ty themes, ye mor_tals, bring;/In songs of praise di_vine_ly sing./The great sal_va_tion loud pro_claim,/And shout for joy the Sa_viors name.
E4:In ev_ry land be_gin the song;/To ev_ry land the strains be_long./In cheer_ful sounds all voi_ces raise/And fill the world with lou_dest praise.

View file

@ -0,0 +1,15 @@
M0:|c:Eb|m:4/4|r:8.6.8.6 C.M.|t:2 - My God how wonderful Thy are|n:12|l:8|a:Thomas Ravenscroft (1621)|h:Frederick William Faber (1848: 1814-1863)|x:https://hymnary.org/tune/dundee_ravenscroft|b:DUNDEE
T0:{!D:-|M:F!S:D|R:M!F:-|-:-/M:-|R:D!D:T|D:-/S:-|D:T!L:S|S:F!S:-|-:-/M:-|R:(D.T)!D:T|D:-!}
N1:dmfsdrmf/mrddt,d/sd'tlssFs/mrd-dt,d
N2:s,dddl,t,dddt,l,l,s,s,/dmrdt,l,l,t,/s,l,m,f,s,s,s,
N3:mslsmssl/ssmfrm/mssmrmrr/mfd-rrm
N4:ddl,m,l,s,df,/ds,l,f,s,d/dds,l,t,drs,/df,l,-s,s,d
E1:My God, how won_der_ful Thy are,/Thy ma_jes_ty how bright,/How beau_ti_ful Thy mer_cy seat,/in depths of burn_ing light!
E2:How dread are Thine e_ter_nal years,/O e_ver_last_ing LORD;/by pros_trate spi_rits, day and night,/in_cess_ant_ly a_dored.
E3:How beau_ti_ful, how beau_ti_ful,/the sight of Thee must be,/Thine end_less wis_dom, bound_less pow'r,/and aw_ful pu_ri_ty.
E4:O how I fear Thee, Li_ving God,/with deep_est, tend'_rest fears,/and wor_ship Thee with trem_bling hope,/and pe_ni_ten_tial tears.
E5:Yet I may love Thee too, O LORD,/Al_migh_ty as Thou art;/for Thou hast stooped to ask of me/the love of my poor heart.
E6:Oh then this worse than worth_less heart/In pi_ty deign to take,/And make it love Thee, for Thy_self/And for Thy glo_rys sake.
E7:No earth_ly fa_ther loves like Thee,/no mo_ther eer so mild,/bears and for_bears, as Thou hast done/with me, Thy sin_ful child.
E8:On_ly to sit and think of God/O what a joy it is!/To think the thought, to breathe the Name/Earth has no high_er bliss!.
E9:Fa_ther of Je_sus, love's re_ward,/what rap_ture will it be,/pros_trate be_fore Thy throne to lie,/and e_ver gaze on Thee!/

View file

@ -0,0 +1,19 @@
M0:|c:G|m:4/4|r:8.8|t:3 - Thee, God, we praise|n:15|l:11.5|a:Niceta of Remesiana (1867-1937)|h:Genevan Psalter, 1551 Edition, attr. Louis Bourgeois (1510-1561)|x:https://hymnary.org/hymn/ELH1996/page/258|b:OLD 100TH
T0:{:D|M:F!S:D|R:F!M/M|R:M!(D.D):T|D:M!R/L|R:F!(S.D):D|L:T!D/D|M:D!R:(F.R)|(M.R):(R.R)!D:}
N1:ddt,l,s,drm/mmmr-dfmr/drmr-dl,t,d/smdrf-m-r-d
N2:s,l,s,f,m,m,s,s,/s,s,s,s,f,m,l,s,s,/m,s,s,s,-s,s,f,m,/s,s,F,s,l,-s,-s,f,m,
N3:mmmdddt,d/dddt,-dddt,/dt,dt,-ddrs,/rddt,l,t,d-t,-d
N4:dl,m,f,d,l,s,d/d,m,d,s,-l,f,d,s,/l,s,ds,f,m,f,r,d,/t,d,l,s,r,-m,f,s,-d,
E1:Thee, God, we praise, Thy name we bless,/Thee, Lord, of all we do con_fess;/The whole cre_a_tion wor_ships Thee,/The Fa_ther of e_ter_ni_ty.
E2:To Thee a_loud all an_gels cry,/The heav'ns and all the pow'rs on high,/The che_rubs and the se_raphs join,/And thus they hymn Thy praise di_vine.
E3:O ho_ly, ho_ly, ho_ly Lord,/Thou, God, of hosts, by all a_dored;/Earth and the heav'ns are full of Thee,/Thy light, thy pow'r, Thy ma_jes_ty.
E4:The a_postles join the glo_rious throng,/The pro_phets swell the\ im_mor_tal song,/The white-_robed hosts of mar_tyrs bright/All serve and praise Thee day and night.
E5:The ho_ly Church in ev'_ry place/Through_out the world e_xalts Thy praise,/And e_ver doth ack_now_ledge Thee,/Fa_ther of bound_less ma_jes_ty.
E6:O God e_ter_nal, migh_ty King,/We un_to Thee our prai_ses bring;/And to Thy true and on_ly Son,/And Ho_ly Spi_rit, Three in One.
E7:O King of glo_ry, Christ the Lord,/God's e_ver_las_ting Son_the Word,/To res_cue man_kind from its doom,/Thou didst our ve_ry flesh as_sume.
E8:Thou o_ver_cam_st death's sharp sting,/Be_lie_vers un_to heav'n to bring;/At God's right hand, e_xal_ted there,/Thou dost the Fa_ther's glo_ry share.
E9:And we be_lieve Thou wilt des_cend/To be our judge, when comes the end;/Thy ser_vants help, whom Thou, O God,/Hast ran_somed with Thy pre_cious blood.
E10:A_mong Thy saints let us be found/With glo_ry e_ver_las_ting crowned;/Thy peo_ple save from age to age,/And bless Thy cho_sen he_ri_tage.
E11:O guide them, lift them up for aye:/We mag_ni_fy Thee day by day,/Thy name we wor_ship and a_dore,/World with_out end, for e_ver_more.
E12:Vouch_safe, O Lord, we hum_bly pray,/To keep us safe from sin this day:/O Lord, have mer_cy on us all,/Have mer_cy on us when we call.
E13:Thy mer_cy, Lord, to us ex_tend,/As on Thy mer_cy we de_pend:/Lord, I have put my trust in Thee,/Con_found_ed let me ne_ver be.

View file

@ -0,0 +1,9 @@
M0:|c:C|m:4/4|r:13.13.8.8.11|t:4 - Join the song of saints in glory|n:15|l:11.5|a:Josie Wallace (1914)|h:Isaac Hickman Meredith (1872-1962)|x:https://hymnary.org/page/fetch/SSM1914/49|b:OLD 100TH
T0:{|D:-.L!S:M|D:R!M:S/D:-.D!D:D|D:-!-:Z/M:-.R!D:R|M:R!D:M/R:-.R!R:R|R:-!-:Z/(S.S):(S.S)!(S.L):(S.T)|(S.S):(S.S)!(S.S)!(S.S)/(S.S):(S.S)!(S.S):(S.S)|(S.S):(S.S)!(S.S):(S.S)/D:-.D!R:R|M:D!D:L/(S:M)!(R:F)|D:-!-:Z/D:-.D!D:D|D/D.M!S.D:M.S|D:-.D!D:D|D:-!-:Z/R:-.R!R:R|R/R.S!T.R:S.T|R:-.R!R:R|R:-!-:Z/R:-!R:-|R:-!T:-|L:-!S:-|F:-/M:R|S:-!M:D|T:-!S:-|S:-!-:Z/}
N1:d'lsmdrms|d'd'd'd'd'|m'r'd'r'm'r'd'm'|r'r'r'r'r'|z16|t--td'-d'-m'-r'-t-s-|d'd'r'r'm'd'd'ls-r'-d'|d'd'd'd'd'|dmsd'm's'd''d''d''d''d''|r'r'r'r'r'|rstr's't'r''r''r''r''r''|m'r'd'tlsf|mr(s---)ss-
N2:d'lsmdrms|mmffm |ssssssss |ssFFf |z16|r--rm-m-s-f-r-f- |msssssffmmffm |mmffm |z6 d'd'd'd'd' |ssFFs |-6 r'r'r'r'r' |sfmrdmr |---ddt,rd-
N3:d'lsmdrms|sslls |d'td'td'td'd' |r'r'd'd't |s-s-l-t-l-s-m-s- |z16|sd'ttd'Tld'd'd'TTd' |sslls |z6 s - l l s |ttld't |-6 t - l d't |d'td'SlTl |---mmrfm
N4:d'lsmdrms|ddffd |drmrdrmd |ssrrs |s,ss,ss,ss,ss,ss,ss,ss,s|s,ss,ss,ss,ss,ss,ss,ss,s|dmssd'mffssssd|ddffd|z6 m-ffm |ssrrs |-6 s-Fls |d'slmfDr |---s,s,s,s,d
E1:Join the song of saints in glo_ry,/Praise Je_ho_vahs Name,/Sing a_gain re_demp_tions sto_ry,/Praise Je_ho_vahs Name,/Come, His won_drous works de_cla_ring/Come, His lo_ving-_kind_ness sha_ring,/To the throne of grace re_pair_ing,/Praise His Name./Praise Je_ho_vahs Name./_9_2/Praise Je_ho_vahs Name.//_9_Join we now in glad ac_claim,/Praise His Name, (Praise Je_ho_vah's Name)/
E2:Join the throng that bows be_fore Him,/Praise Je_ho_vahs Name,/Men and saints a_like a_dore Him,/Praise Je_ho_vahs Name,/On_ly He is all-_pre_vail_ing,/On_ly He is ne_ver-_fail_ing,/By His grace all sin as_sail_ing,/Praise His Name.
E3:Join the song that ne_ver cea_ses,/Praise Je_ho_vahs Name,/With the years its powr in_crea_ses,/Praise Je_ho_vahs Name,/Sun and stars of heavn u_ni_ted,/Earth and sky in u_nion pligh_ted,/With e_ter_nal glo_ry light_ed,/Praise His Name./

View file

@ -0,0 +1,9 @@
M0:|c:G|m:3/4|r:11.11.11.11.12.12.11.11|t:456 - To God Be The Glory|n:15|l:10|a:Fanny Crosby (1875)|h:William Howard Doane (1875: 1832-1915)|x:https://hymnary.org/tune/duke_street_hatton
T0:{:D|(D:D):D.D|D:D:D|D:D:D|D:-/D|D:D:D|D:D:D|D:D:(D.D)|D:-/D|(D:D):D.D|D:D:D|D:D:D|D:-/D|D:D:D|D:D:D|D:D:D|D:-/D.,D|D:-:D.,D|D:-:D.,D|D:D:D|D:-/D.,D|D:-:D.,D|D:-:D.D|D:D:D|D:-/D|(D:D):D.D|D:D:D|D:D:D|D:-/D|D:D:D|D:D:D|D:D:D|D:-}
N1:s,s,-l,t,ds,drs,rm/mfl,fmdmmrl,-r/s,s,-l,t,ds,drs,rm/msfrdt,dmmrd/mfsmfssmdrmr/rmfrmffrssfm/s,s,-l,t,ds,drs,rm/msfrdt,dmmrd
N2:m,m,s,f,f,m,m,s,s,s,s,s,/s,l,f,l,s,s,s,F,F,l,-s,/f,m,s,f,f,m,m,s,s,s,s,s,/T,l,l,l,s,s,s,s,s,f,m,/s,s,ds,s,ds,s,s,s,s,s,/s,dt,t,dt,s,s,s,s,s,s,/m,m,s,f,f,m,m,s,s,s,s,s,/T,l,l,l,s,s,s,s,s,f,m,
N3:ss-frrssfffs/s7mmlsf/fs-frrssfffs/ssld'tltssfs/sltslttssfsf/fsllsllfssfs/ss-frrssfffs/ssld'tltssfs
N4:s,s,t,rrs,s,t,rrrs/sddds,t,s,l,l,D-r/rs,t,rrs,s,t,rrrs/sdddr6s,/s7s,t,l,s,r/r7dt,t,l,s,/s,s,t,rrs,s,t,rrrs/sdddrrrrrrs,
E1:To God be the glo_ry, great things He has done,/so loved He the world that He gave us His Son,/who yield_ed His life an a_tone_ment for sin,/and o_pened the life gate that all may go in./Praise the Lord, praise the Lord, let the earth hear His voice!/Praise the Lord, praise the Lord, let the peo_ple re_joice!/O come to the Fa_ther through Je_sus the Son, and give Him the glo_ry, great things He has done.
E2:O per_fect re_demp_tion, the pur_chase of blood,/to ev'_ry be_lie_ver the pro_mise of God;/the vi_lest of_fen_der who tru_ly be_lieves,/that mo_ment from Je_sus a par_don re_ceives.
E3:Great things He has taught us, great things He has done,/and great our re_joi_cing through Je_sus the Son;/but pu_rer, and high_er, and great_er will be/our won_der, our rap_ture, when Je_sus we see.

View file

@ -0,0 +1,11 @@
M0:|c:D|m:3/4|r:8.7.8.7.4.7|t:5 - Praise, My Soul, The King Of Heaven|n:15|l:11.5|a:Thomas Hastings (1830: 1784-1872)|h:Henry Francis Lyte (1834: 1793-1847)|x:https://hymnary.org/page/fetch/OLOF2018/345/high|b:ZION
T0:{:S.,S|S:M:D.,S|L:S/D.,D|R.,R:D:T|D:-/S.,S|S:M:D.,S|L:S/D.,D|R.,R:D:T|D:-/M.,M|M:D/M.,M|R.,R:D:T|D:-/S.,S|S:M/S.,S|F.,F:M:R|M:-/}
N1:sssmd'sls/d'd'r'r'd'td'/sssmd'sls/d'd'r'r'd'td'/mmmd/mmrrdt,d/sssm/ssffmrm
N2:mmmdmmfm/ssffmrm/mmmdmmfm/ssffmrm/dddd/ddl,l,s,s,s,/mmmd/ddrrdt,d
N3:d'd'd'ssd'd'd'/ssllsss/d'd'd'ssd'd'd'/ssllsss/sssm/ssffmrm/d'd'd's/d'd'llsss
N4:ddddddfd/mmffss,d/ddddddfd/mmffss,d/dddd/ddf,f,s,s,d/dddd/mmffss,d
E1:Praise, my soul, the King of hea_ven;/to his feet your tri_bute bring./Ran_somed, healed, res_tored, for_gi_ven,/e_ver_more his prai_ses sing./Al_le_lu_ia,/Praise the e_ver_las_ting King!/al_le_lu_ia!/Praise the e_ver_las_ting King!/
E2:Praise him for his grace and fa_vor/to his peo_ple in dis_tress./Praise him, still the same as e_ver,/slow to chide, and swift to bless./Al_le_lu_ia,/Glo_rious in his faith_ful_ness!/al_le_lu_ia!/Glo_rious in his faith_ful_ness!/
E3:Fa_ther_like he tends and spares us;/well our fee_ble frame he knows./In his hand he gent_ly bears us,/res_cues us from all our foes./Al_le_lu_ia,/Wide_ly yet his mer_cy flows!/al_le_lu_ia!/Wide_ly yet his mer_cy flows!/
E4:Frail as sum_mer's flow'r we flou_rish;/blows the wind and it is gone;/but, while mor_tals rise and pe_rish,/God en_dures un_chan_ging on:/Al_le_lu_ia,/praise the high e_ter_nal One./al_le_lu_ia,/praise the high e_ter_nal One./
E5:An_gels, help us to a_dore him;/you be_hold him face to face./Sun and moon, bow down be_fore him,/dwel_lers all in time and space./Al_le_lu_ia,/Praise with us the God of grace!/al_le_lu_ia!/Praise with us the God of grace!/

View file

@ -0,0 +1,10 @@
M0:|c:E|m:4/4|r:12.13.11.11.|t:6 - Holy, Holy, Holy|n:15|l:12.5|a:John B. Dykes, 1823-1876|h:Reginald Heber, 1783-1826
T0:{|D:R!M:F|(D:R)!(M:F)/[D:S.L]!M:F|(D:R)!M:-/D:(S.L)!M:F|D:R!M:F|D:R!M:-.F|(D:-!F):-/D:R!M:F|(D:R)!(M:F)/D:(S.L)!M:F|(D:R)!M:-/(D:R)!M:F|D:-!(M:F)/D:R!M:-.F|D:-!-:}
N1:ddmms-s-/l-llls-m/s-sssd'd'tsrslss-/ddmms-s-/l-llls-s/d'-sslm-/frrdd
N2:s,s,ddt,rdt,/l,t,-drm-d/rr-mrdrrmrt,dt,t,-/s,s,ddt,rdt,/l,t,-drm-d/d-ddddT,l,l,t,dd
N3:mmddrfms/fs-ltd'ss/ss-ssmFsstsFssf/mmddrfms/fs-ltd'sm/mfsTls-/fffmm
N4:ddl,l,s,-d-/f,-f,ffd-d/t,-t,dt,l,l,t,drrrs,s,-/ddl,l,s,-d-/f,-f,ffd-d/l,-m,m,f,d-/f,f,s,ddf,f,-s,f,m,m,f,s,l,l,l,r,t,,/t,,t,,m,m,r,f,m,r,/d,r,-m,f,
E1:Ho_ly, ho_ly, ho_ly! /Lord God Al_mi_ghty!/Ear_ly in the morn_ing our 2song shall rise to thee /Ho_ly, ho_ly, ho_ly, /mer_ci_ful and mi_ghty! /God in three per_sons, /ble_ssed Tri_ni_ty!
E2:Ho_ly, ho_ly, ho_ly! /All\ the saints a_dore thee,/cast_ing down their gol_den crowns a_round the gla_ssy sea;/che_ru_bim and sera_phim /fall_ing down be_fore thee,/which wert and art and /e_ver_more shalt be.
E3:Ho_ly, ho_ly, ho_ly! /Though\ the dark_ness hide thee,/though the eye of sin_ful man thy glo_ry may not see,/on_ly thou art ho_ly;/there is none be_side thee,/per_fect in powr, in /love, and pu_ri_ty.
E4:Ho_ly, ho_ly, ho_ly! /Lord God Al_mi_ghty!/All thy works shall praise thy name in earth, and sky and sea./Ho_ly, ho_ly, ho_ly, /mer_ci_ful and mi_ghty! /God in three per_sons,/ble_ssed Tri_ni_ty!

View file

@ -0,0 +1,10 @@
M0:|c:G|m:6/4|r:7.8.7.8.7.6.7.6.7.6.7.6|t:7 - My Soul Now Praise Your Maker|n:15|l:11.5|a:Johann Poliander (1540); tr: Catherine Winkworth (1863: 1827-1878)|h:Johann Hans Kugelmann (1495-1542)|x:https://hymnary.org/page/fetch/LBoW1978/862/high|b:NUN LOB MEIN SEEL
T0:{:D|D:-:T!L:-:S|(D:-:R)!M:-/M|M:-:M!M:-:R|(D:R):T!D:-/D|D:-:T!L:-:S|(D:-:R)!M:-/M|M:-:M!M:-:R|(D:R):T!D:-/D|D:-:M!R:-:M|(D:-:T)!L:-/L|R:-:T!D:(L:T)|(S:-:D!D):Z/S|D:-:D!(R:T):R|(M:-.L:T)!D:-/D|F:-:F!M:-:M|(R:-:M!F):Z/R|M:-:M!F:-:F|(S:-:S)!D:-/M|R:-:T!D:(L:T)|(S:-:R!R):Z/S|D:-:T!L:-:S|(R:-:D)!R:-/M|F:-:R!(D:M):R|D:-:-!-:Z}
N1:ddt,l,s,drm/mmmmrd-t,d/ddt,l,s,drm/mmmmrd-t,d/ddmrmdt,l,/l,rt,dl,-s,--/s,ddr-rm--d/dffmmr--/rmmffs-d/mrt,dl,-s,--/sdt,l,s,r-r/mfmdmrd
N2:s,l,s,f,r,s,l,d/s,dt,l,rs,-t,s,/s,l,s,f,r,s,l,d/s,dt,l,rs,-t,s,/l,s,dt,ml,s,m,/l,l,s,s,s,F,r,--/m,m,s,l,-s,s,--l,/s,f,l,t,l,l,--/t,ddl,drt,d/s,l,s,s,-F,r,--/m,m,s,f,m,s,F,s,/s,f,s,l,d,t,s,
N3:mmrdt,dfs/mlmdfm-rm/mmrdt,dfs/mlmdfm-rm/frsssfrd/dfmmr-l,t,d/t,dddl,t,d--d/dl,rrDrmf/sslffrsm/dl,rmr-rl,t,/t,dmddrl,t,/dl,dfssm
N4:dl,m,f,s,m,r,d,/dl,s,l,r,m,f,s,d,/dl,m,f,s,m,r,d,/dl,s,l,r,m,f,s,d,/f,m,d,s,m,f,s,l,/f,r,m,d,r,-s,--/m,l,m,f,-s,d,r,m,f,/m,r,f,s,l,r,--/s,dl,rl,t,s,l,/m,f,s,d,r,-s,--/m,l,m,f,d,t,r,s,/d,r,m,f,m,s,d,
E1:My soul, now praise your Ma_ker!/Let all with_in me bless His name/Who makes you full par_ta_ker/Of mer_cies more than you dare claim./For_get Him not whose meek_ness/Still bears with all your sin,/Who heals your e_v'ry weak_ness,/Re_news your life with_in;/Whose grace and care are end_less/And saved you through the past;/Who leaves no suf_f'rer friend_less/But rights the wronged at last.
E2:He of_fers all His trea_sure/Of jus_tice, truth, and right_eous_ness,/His love bey_ond all mea_sure,/His year_ning pi_ty o'er dis_tress,/Nor treats us as we me_rit/But sets His an_ger by./The poor and cont_rite spi_rit/Finds His com_pas_sion nigh;/And high as heav'n a_bove us,/As dawn from close of day,/So far, since He has loved us,/He puts our sins a_way./
E3:For as a ten_der fa_ther/Has pi_ty on His chil_dren here,/God in His arms will ga_ther/All who are His in child_like fear./He knows how frail our pow_ers,/Who but from dust are made./We flou_rish like the flo_wers,/And e_ven so we fade;/The wind but through them pas_ses,/And all their bloom is o'er./We wi_ther like the gras_ses;/Our place knows us no more./
E4:His grace re_mains for_e_ver,/And chil_dren's chil_dren yet shall prove/That God for_sakes them ne_ver/Who in true fear shall seek His love./In heav'n is fixed His dwel_ling,/His rule is o_ver all;/O hosts with might ex_cel_ling,/With praise be_fore Him fall./Praise Him for_e_ver reig_ning,/All you who hear His Word/Our life and all sus_tain_ing./My soul, O praise the Lord!/

View file

@ -0,0 +1,9 @@
M0:|c:F|m:4/4|r:6.7.6.7.6.6.6.6|t:8 - Now thank we all our God|n:15|l:11.5|b:NUN DANKET|a:Johann Crüger, 1598-1662; harm. Felix Mendelssohn, 1809-1847|h:Martin Rinkart, 1586-1649; tr. Catherine Winkworth, 1827-1878|x:https://hymnary.org/tune/nun_danket_cruger_555665
T0:{:S|S:S!S:(D.R)|S:-!Z/(D.M)|(D.F):(D.S)!R:M|(D:L)!$QD/S|S:S!(D.T):L|S:-!Z/(R.D)|(R.M):M!(R.F):(R.S)|(R.L:T.D)!$QD/R|R:(R.T)!(M.D):(M.R)|R:-!Z/R|(M.F):S!(M.S):(M.L)|S:-!Z/(M.T)|L:(F.D)!F:M|F:-!Z/(F.R)|R:(F.M)!R:(F.F)|D:-|}
N1:sssll-s/s-f-m-rmr-d/sssl-ls/s-f-mr-m-r---d/rrr-m-m-r/rmFsl-f-s/s-ls-fmf/m-rd-dt,-d
N2:drddl,t,d/dt,l,t,d-t,ddt,d/drdd-dd/r-rdrrdt,T,t,-l,s,f,/s,l,t,l,s,-d-t,/rd-rd-t,-t,/t,-l,l,-l,Dr/dt,l,m,f,s,s,f,m,
N3:mrmfdrm/m-f-s-ssf-m/mrmf-fm/m-f-sr-t,-rdt,-d/t,rsfm-s-s/ss-ssfmRm/s-mrmfll/s-fdrmr-m
N4:dt,dff-d/d-r-mfsds,-d,/dT,T,l,s,f,d,/dt,l,-s,f,-m,-f,-s,-d,/s,f,s,-d,r,m,f,s,/t,d-t,l,-t,-m,/mrdt,drl,r,/m,-f,l,-s,s,-d,
E1:Now thank we all our God/with heart and hands and voi_ces,/who won_drous things has done,/in whom his world re_joi_ces;/who from our mo_thers' arms/has blessed us on our way/with count_less gifts of love,/and still is ours to_day./
E2:O may this boun_teous God/through all our life be near us,/with e_ver joy_ful hearts/and bles_sed peace to cheer us,/to keep us in his grace,/and guide us when per_plexed,/and free us from all ills/of this world in the next./
E3:All praise and thanks to God/the Fa_ther now be gi_ven,/the Son and Spi_rit blest,/who reign in high_est hea_ven/the one e_ter_nal God,/whom heaven and earth a_dore;/for thus it was, is now,/and shall be e_ver_more./

View file

@ -0,0 +1,12 @@
M0:|c:E|m:4/4|t:FFPM 1 - Andriananahary Masina indrindra|r:12.13.12.11|n:19|l:15|h:J.B.Dykes 1823-1876|a:R. Heber, 1783-1826. Nad. J.A. Houlder, 1844-1932
S0:/|:!
T0:{/D:D!M:M|(S:R)!(S:T)/L:(L.D)!L:L|(S:S)!M:-/S:(S.R)!S:S|D:D!T:S|R:S!L:-.S|S:-!-:-/D:D!M:M|[S:R]![S:R]/L:(L.R)!L:L|(S:S)!S:-/D:D!S:S|L:-!(M:R)/F:R!R:-.D|D:-!-:-}
N1:ddmms-s-/l-llls-m/s-sssd'd'tsrslss/ddmms-s-/l-llls-s/d'd'sslm-/frrdd
N2:s,s,ddt,rdt,/l,t,-drm-d/rr-mrdrrmrt,dt,t,/s,s,ddt,rdt,/l,t,-drm-d/ddddddT,/l,l,t,dd
N3:mmddrfms/fs-ltd'ss/ss-ssmFsstsFss/mmddrfms/fs-ltd'sm/mfsTls-/fffmm
N4:ddl,l,s,-d-/f,-f,ffd-d/t,-t,dt,l,l,t,drrrs,s,/ddl,l,s,-d-/f,-f,ffd-d/l,l,m,m,f,d-/f,f,s,dd
Y1:Andriananahary /masina indrindra!/Ny anjelinao izay mitoetra\ eo aminao/Mifamaly hoe_:/Masina indrindra/Andriananahary,/Telo\ Izay Iray.
Y2:Andriananahary/masina indrindra!/Na tsy hita aza\ izao ny voninahitrao!/Masina indrindra Hi_anao irery,/Andriananahary, Telo\ Izay Iray.
Y3:Zava-manana\ aina samy mankalaza/Sady manambara\ Anao\ izay Tompony izao;/Hianao irery _no mitahy azy,/Andriananahary, Telo\ Izay Iray.
Y4:Andriananahary feno hatsarana!/He ny fitahi_anao izay mpanomponao;/Tsara di_a tsara ny omenao azy,/Andriananahary, Telo\ Izay Iray.
Y5:Andriananahary masina indrindra/Izahay mpanomponao ta-hankalaza\ Anao;/Feno fahendrena, feno fi_antrana,/Andriananahary, Telo\ Izay Iray.

View file

@ -0,0 +1,9 @@
M0:|c:D|m:3/4|r:P.M.|t:FFPM 14 - O, Ry Tany Rehetra Avia Izao|a:Stef. Ramaka, 1874-1957|h:(Pilgrimssonger 1859)
U0:z8:2z114444444448/4 444 444 444 8/(2z11) 444 444 444 8/2z11(22)(22)(22) 44(22) 444 8/2z11 442z11 6z2/2z11 442z11 8/2z11 442z11 442z11 84 8
N1:sssmfsmdrdrm/mfflssmrfmr/mfsmfsd'slfls/mmrmfsltd'dsfmmrd/sssmmmf/fffrrrm/sd'tlflsmdrmrd
N2:mmmdrmddt,l,t,d/dddfmmdt,rdt,/drmdrmmmfffm/ddt,drmfrdddrddt,d/mmmdddr/rrrt,t,t,d/mmffdfmddddt,d
N3:sssssssmfmss/slld'd'd'sssss/sssssssd'd'd'd'd'/sss-s-s-mml-ssfm/sssssss/s7/d,7smlsfm
N4:d8s,3d/df,3d3s,t,ds,/d8flfd3s,-s,-s,-l,2f,-s,3d/d6t,/t,l,s,s,d3/ddfflfdddf,s,s,d
Y1:O ry tany rehetra, avi_a izao/Hidera ny Tompo Mpanavotra\ anao/Ny Tompo mi_antso antsika hankao/Anatrehany mba hohasoaviny ao!/Dera, laza ani_e, voninahi-dehibe/Ho Anao, ry Tomponay Tsitoha ô! Ame\n/
Y2:He, Jehova\h mi_antra antsika izao/Ka di_a manolotra\ antsika indray/Ny endriny mbaminny aina vaovao;/Eny, Izy manaiky toko_a ho Ray!
Y3:Asandrato ny fe_o hihoby ho_e:/Isaorana mandrakizay I_anao,/Ry Tompo mahery Izay manome/Ho anay olom-bery ny aina vaovao!

View file

@ -0,0 +1,11 @@
M0:|c:G|m:4/4|r:L.M. miadanadana|t:FFPM 17 - Haja Sy Voninahitra|a:Maintimolaly|h:
U0:z0:42244 4(22)8 4224(22) 4(22)8 422(222)2 (222)28 422(222)2 (22)(22)$Q(4$Q4) 42(11)44 4(22)8
N1:#t,ddrmsfmrm/mmmfmrdrtd/ddrmrdtdrmdr/mmfsfmslsfmmr/sssfmdrdtd
N2:m,#f,sssTls-s/ssllslss-s/sssstdss--m,s/ddrmrdmf'mrddt/sst-slls-s
N3:#s,ddtddddtd/dddddfmfrm/mdtds-fmrddt/z13/mdr-dmrmfm
N4:#d,dmsd'mfs-d/d'd'lrmfss-d/dms#s,drmrdtdd,s/z13/#d,dms-d'lfs-d
Y1:Haja sy voninahitra/Omena\ an'Andriamanitra,/Fa\ Izy\ ihany no mahefa/Izay sitraky ny fony/Izay sitraky ny fony
Y2:Masina, tsy\ azo\ haratsiana;/Mahery, tsy\ azo resena;/Marina, tsy\ azo laingaina;/Hendry tsy\ azo fitahina/Hendry tsy\ azo fitahina
Y3:Ny am-po toy ny am-bava;/Ny maizina toy\ ny mazava;/Ny takona toy ny mise\ho;/Tsy misy àry tsy\ hitany./Tsy misy àry tsy\ hitany.
Y4:Tsy mi_ova ny fombany;/Le\hibe ka tsy oharina;/Ti_a, tsy azo\ arovana;/Miantra tsy azo ferana/Miantra tsy azo ferana
Y5:Saotra\ amam-bavaka atao/Dera sy laza ho Azy;/Izy no ivavahana,/Fa\ anton'izao tontolo\ izao/Fa\ anton'izao tontolo\ izao

View file

@ -0,0 +1,9 @@
M0:|c:G|m:4/4|t:FFPM 191 - Ny Teny Sy Fanahinao|r:8.6.8.6.6.6.8.6|n:19|l:15|h:H.A. Brorson 1694-1764 Nad. C. Borchgrevink 1841-1919|a:P. Nilsen-Lund 1842-1914
T0:{:(S.F)|D:D!(R.S):(R.R)|M:M!F/(S.F)|M:M!F:(R.F)|D:-!${D.C.}-/(T.D)|R:(R.M)!(F.M):(R.D)|T:-!-/(R.M)|(F.M):(R.D)!T:L|S:-!-/(S.F)|D:D!(R.S):(R.T)|M:M!F/(S.F)|M:M!F:(R.F)|D:-!-}
N1:s,-ddr-r-mmfsfmmfr-d/t,drrmfmrdt,/rmfmrdt,l,s,/s,-ddr-r-mmfsfmmfr-d
N2:s,-s,s,l,s,f-s,dt,s,-s,drt,-d/s,-s,fms,dl,-s,/s,drdt,l,s,F,s,/s,-s,s,l,s,f,-s,dt,s,-s,drt,-d
N3:s,-s,mr-r-ddrr-mmlsfm/rdt,t,drmf,mr/rdt,drmrdt,/s,-s,mr-r-ddrr-mmlsfm
N4:s,f,mdf,s,l,t,dds,/t,-dl,f,s,-d/s,-s,s,-s,-r,-s,/s,-s,l,t,drr,s,/s,f,mdf,s,l,t,dds,/t,-dl,f,s,-d
Y1:Ny teny sy Fanahinao,/Ry Ray, mba avelao${D:Handroso tsara, hanavao Izao tontolo\ izao.}Mitombo, mihabe/Ny ratsy\ izao odre!/Fa vitsy ny mpanomponao/I\zay ifali_anao.
Y2:Vonje_o, ry Jesosy ô!/Ny fi_angonanao,${D:Fa misy marobe izao I\zay mody olonao.}Anefa tsy manao/I\zay tena sitrakao./O, ry Mpanjaka lehibe!/Mba mamonje anie.
Y3:Fanahy ô! Mba raisonao/I\zao vavakay izao;${D:Ny fonay mba havaozinao, Ny maso hazavao,}Hahafantaranay/Izay alehanay,/Mba hamo_azanay Izao/I\zay vo_a ti_anao.

View file

@ -0,0 +1,7 @@
M0:a:P Nilsen-Lund,1842-1914|h:P Nilsen-Lund,1842-1914|c:Bb|m:3/4 Miadanadana
T0:{:.,S|S.,S:S.,S:S.,S|M/D:D.,D|R:F:T.,T|D:${D.C.}-/D|T.,D:R:(D.,T)|D.,R:M/D|T.,D:R:(D.,T)|D.,R:${D.C.}M.:}
N1:s,s,s,s,s,s,s,mdddrft,t,ddt,drdt,drmdt,drdt,drm
N2:s,s,s,s,s,s,s,s,s,l,l,l,l,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,
N3:mmmmmmmdmmmrrrrmmrmfmrmrdmrmfmrmrd
N4:dddddddddl,l,f,r,s,s,dds,s,s,s,dddds,s,s,s,ddd
Y1:Andri_ananahary ô, Endrey ny voninahitrao!${D:Ny tany sy ny lanitra Mamelatra ny lazanao}/Ny asanao rehetra, e!Ny famonjena lehibe, ${D:Mitari-dalana anay, Hidera ny Anaranao}

View file

@ -0,0 +1,11 @@
M0:|c:A|m:4/4|r:C.M.|t:FFPM 440. Ry Kristy ô, Mpanjakako|n:19|l:15|a:Ralaikera|h:
S0:/:|!
T0:{|s:d.,r!m:-.m|(r.r):(r.t)!d:-.s|l:s!s:(f.d)|s:-!-:-/s:d.,r!m:-.m|(f.r):(r.t)!d:-.s|(s.f):-.(m,r)!d:(t.f)|d:-!-:-}
N1:s,drmmfrrt,ds,l,s,s,F,-s,/s,drmmfrrt,ds,l,fmrdt,-d
N2:m,m,f,s,s,s,-s,-s,s,f,s,s,r,-r,/s,s,s,s,s,s,-s,-s,s,f,l,dl,s,-f,m,
N3:dddddrt,t,fmdddt,l,dr,/mdt,ddrt,frmddrs,fmr-d
N4:d,d,d,d,d,s,-s,-d,m,f,m,r,r,-s,/d,m,r,d,d,s,-s,-d,m,f,r,m,f,s,s,-d,
Y1:Ry Kristy ô, Mpanjakako! Ny foko ho Anao/Ny fe_oko hasandratro Hihira ho Anao;
Y2:Mba raiso ny fanahiko Hanao ny sitrakao;/Ny tenako, ny heriko, Dia ento ho Anao.
Y3:Ny tongotro, ny tanako, Hiasa ho Anao;/Ny androko, ny volako, Omeko ho Anao
Y4:Izaho dia tsy mendrika Anao, ry Tompo ô!/Kanefa re, mba raisonao Ny foko ho Anao

View file

@ -0,0 +1,8 @@
M0:|c:E|m:6/4|r:Faingana|t:FFPM 539 - Faly dia faly izahay mpanomponao|n:15|l:11|a:J.A. Houlder 1844-192|h:(Plaistow, 67)
S0:/|:!
T0:{|M:-:M!(F:M):F|(S:-:D)!D:-:-|D:-:D!(R:D):R|(M:F):M!R:-:-/M:-:M!(F:M):F|(S:-:D)!D:-:-|M:-:M!(R:D):R|D:-:-!-:-:/S|S:-:F!(R:M):F|S:-:M!D:-:S|S:-:F!(R:M):F|S:-:M!D:-/S|L:-:F!D:-:L|S:-:M!D:-:S|(S:L):S!(S:F):M|(M:-:-!R):-:-/M:-:M!(F:M):F|(S:-:D)!D:-:-|D:-:D!(R:D):R|(M:F):M!R:-:-|M:-:M!(F:M):F|(S:-:D)!D:-:-|M:-:M!(R:D):R|D:-:-!-
N1:mmfmfsd'd'ddrdrmfmr/mmfmfsd'd'mmrdrd/ssfrmfsmdssfrmfsmd/slfd'lsmdsslssfmmr/mmfmfsd'd'ddrdrmfmr/mmfmfsd'd'mmrdrd
N2:ddrdrm-mddt,l,t,drdt,/ddrdrm-mddt,l,t,d/dt,t,t,drmds,dt,t,t,drms,s,/dddl,ddddmmfmr-ddt,/ddrdrm-mddt,l,t,drdt,/ddrdrm-mddt,l,t,d
N3:sss-sd'ssmms-ss-ss/sss-sd'sssss-fm/mrrfmrdsmmrrfmrdsm/mflffmsmsd'-ss-ss-/sss-sd'ssmms-ss-ss/sss-sd'sssss-fm
N4:ddd-dd-ddds,-s,-d-ds,/ddd-dd-ds,s,s,-s,d/ds,s,s,-s,dddds,s,s,-s,ddd/dddddddddd-dt,-ds,-/ddd-dd-ddds,-s,-d-ds,/ddd-dd-ds,s,s,-s,d
L1:Fa_ly _di__a _fa__ly _i_za_hay __mpa_no__mpo _nao,/Izay _mi_hi__ra _e__to _a_na_tre__ha_nao. _/Fa _be _fi_a__ntra _Hi_a_nao, _ry _Je_so _To__mpo _ti_a_nay!/Ka _fe_no _ha_ra_vo_a_na _to_ko__a _i__za_hay;

View file

@ -0,0 +1,12 @@
M0:|c:F|m:4/4 Faingampaingana|r:8 (im-10)|t:549. Jesosy no asandratro|n:19|l:15|a:Rajaobelona 1868-1938|h:P. Nilsen-Lund
S0:/|:!
T0:{:(D.R)|M:M!M.,R:M.,F|S:-!-/(D.R)|M:M!M.,S:F.,M|R:-!-/(D.R)|M:M!M.,R:M.,S|L:-!-/L|S.,M:D.,R!M:R|D:-!-/(R.M)|F:F!M.,M:R.,R|D:-!-/R|M:L!S.,S:F.,F|S:-!-/(D.R)|M:M!M.,R:M.,S|L:-!-/L|S.,M:D.,R!M:R|D:-!-/(R.M)|F:-!-:R|S.,L:S.,F!M/S|L.,L:S.,F!M:R|D:-!-}
N1:drmmmrmfs/drmmmsfmr/drmmmrmsl/lsmdrmrd/ rmffmmrrd/rmlssFFs/drmmmrmsl/lsmdrmrd/ rmfrslsfm/sllsfmrd
N2:d-dddt,drm/dt,drddrdt,/d-dds,s,ddd/ddddddt,d/ t,-d,ss,s,S,S,l,/t,dmrrddt,/d-dds,s,ddd/ddddddt,d/ t,drt,dddt,d/ddddrdt,d
N3:mfsssssss/mfsSllsss/mfssdrdmf/fssmlsfm/ s-frddmmm/ssd'ttlls/mfssdrdmf/fssmlsfm/ s-sssfsss/mffslsfm
N4:d-dmsfmrd/mrdt,l,l,t,ds,/d-dddt,l,s,f,/f,m,s,l,f,s,s,d,/ s,-l,t,ddt,t,l,/s,dl,rrrrs,/d-dddt,l,s,f,/f,m,s,l,f,s,s,d,/ s,-s,fmfmrd/dffmfss,d,
L1:Je_so_sy _no _a_san_dra_tro/Fa _I_zy _no _Mpa_na_vo_tro !/Ny _tà_na_ny _na_na_fa_ka/Ny _ai_ko _tao _an-_da_va_ka ;/Ny _ra_fi_ko _ho _ke_tra_ka,/I_za_ho _a_fa-_ke_na_tra/Fa _ma_na_na _ny _Tom_po_ko/'zay _man_da_ko _sy _a_ro_ko! /Ry _fo_ko _ô, _an_ka_la_zao/Je_so_sy, _'zay _Mpa_mon_ji_nao !/
L2:Ny _tsi_ron_ny _fi_ai_na_na/A_na_na_ko _sa_ha_dy _re,/Fa _e_fa _mby _an-_tà_na_na/Ny _fa_mon_je_na _le_hi_be !/Ny _ra_no_nai_na _a_zo_ko,/Ny _mo_fo_nai_na _ha_ni_ko,/Sa_ka_fo _ma_ha_tan_ja_ka/Ma_me_lo_na _ny _re_ra_ka !
L3:Ny _ra_ny _no _an_ja_ra_ko,/Ny _ai_ny _no _fa_na_na_ko ;/Ny _la_ni_tra _ho _lo_va_ko,/Ny _ta_ny _dia _hi_lao_za_ko; /Ny _o ta _tsy _ha na ra ka/Ny _a dy _dia _ho _ta pa ka,/Ny _a lo ka _ho _ta pi tra/Fa _ao _ny _te na _za va tra!
L4:Ny _ha_ni_try _ny _la_ni_tra/Ma_me_ro_ve_ro _fa_tra_tra,/Ny _ka_lo_nny _vo_a_vo_tra/Ma_na_tsi_ka a_hy hi_a_ka_tra !/Ny _ta_va_nny _Mpa_mon_ji_ko/No _tsin_jo_nny _fa_na_hi_ko,/Ny _ta_va_ny _ma_na_fa_ka/Ny _hai_zi_na ao _a_na_ti_ko !
L5:Ny _ma_so_ko _mi_ban_ji_na/Ta_ha_ka _ny _mpi_a_mbi_na/Ma_ni_ry _ny _Mpa_mon_ji_ko/Ho _ta_fa_hao_na _a_mi_ko !/I_za_ho _ho_vim_bi_ni_ny/Hi_pe_tra_ka eo _a_ni_la_ny,/Ha_nao _ny _hi_ran-_da_ni_tra/Sy _ho_ni_na _fi_na_ri_tra !/

View file

@ -0,0 +1,11 @@
M0:|c:C|m:4/4|r:9.8.9.8.9.8|t:FFPM 55 - Ny Andron'ny Fahasoavana|a:N.F.S. Grundtvig, 1783-1872, Nad. I G. Torvik, 1871-1954|h:C.E.F. Weyese, 1774-1842
T0:{:d|m:m.m!s:s.s|d:l!s/m|l:s.s!f:r|m:-!r/s|s:s.s!l:l|t:d!r/r|s:s.s!t:d|(l:f)!s/s|m:m.m!f:s|l:l!s/s|d:d.d!t:d|(r:t)!$Qd}
N1:dmmmsssd'ls/mlssfrmr/sssslltd'r'/r'ssstd'l-s/smmmfslls/sd'd'd'td'r'-d'
N2:ddt,ddt,t,ddd/dddddrdt,/rmmrddt,ss/FssmsssFs/rrddddddd/rmmmrsf-m
N3:m(ssd)rffsfm/sffmdsss/ttd'ssFsst/lr'td'r'd'd'-t/sssssfffm/sld'd'sslts
N4:dds,l,s,rrmfd/df,s,s,l,t,ds,/smdt,l,rs,mr/dt,mdt,l,r-s,/t,ddT,l,s,f,l,d/t,l,lsfmfsd
Y1:Ny andron'ny fahaso_avana/Miposaka ho antsika/Manerana\ izao tontolo\ izao/Ny tarany efa hita/Ka ravo ny olombelona,/Fa lasa ny alintsika
Y2:Niova tery ny alina/Fa teraka ny Mpamonjy,/Mamiratra be ny lanitra/Miseho izao re ny vonjy,/Ka lasa tokoa ny aizina,/Mihoby ny vo_avonjy
Y3:Na dia ho nahay nihira re/Ny hazo an'ala rehetra,/Ka afa-mikalo ny ravina/Hidera ny Avo Indrindra,/Tsy ampy ho fanandratana/Ny Tompon'ny ain-drehetra.
Y4:Ny fe_on'ny olonao izao/Misandratra, ry Jehovah/Hidera ny fiti_avanao/Sy ny indrafonao so_a/Ni_aro ny fi_angonanao/Hatramin'ny fahagola.
Y5:Ho any an-tanindrazanay/I\zahay re, ry Ray Tsitoha,/Ka hiditra ao an-tranon-dRay/Nomanin'Ilay Mpialoha;/Ny olonao dia ho tafaray/Hidera Anao tokoa!

View file

@ -0,0 +1,9 @@
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
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
N3:sssssfd'/ssssmfs/sssssfd'/d'd'd'lss/mdddddt, /t, rt, drm/d'ssssfd'/d'd'd'tss
N4:dddddff/ddddd-s, /t,ddddff/fdlfsd/d, d, d, d, d, s, s, /s, s, s, s, s, d, /dddddff/fddssd
Y1:Avi_a, mi_ondreha,/Ry vazan-tany ô!/Fa lehibe Jehova\h,/Sy masina tokoa;/Mi_ankohofa tsara,/Manatona\ Azy zao/Haneho fanajana/Ilay Mpanao anao./
Y2:Andri_ananahary,/Manaiky izahay/Fa Aminao ny hery/Tsy hay toherina./Tsy misy maharara/Ny ti_anao hatao,/Fa Hi_anao Mpitondra/Izao rehetra\ izao./
Y3:Re any lavitra\ any/Izao ny herinao,/Ka isam-bazan-tany/Hi_ondrika\ Aminao;/Mpanjaka sy Mpitsara/Mahery Hi_anao;/Mi_adana ny tany/Mi_ankina\ aminao./

View file

@ -0,0 +1,8 @@
M0:|c:E|m:4/4|r:8.7.8.7.DP|t:FFPM 8 - Dera Laza, Hery, Haja|a:R.G. Hartley 1836-1870|h:(Union Harmonist, p95)
U0:z0:${x3}62446244/6262448/${x0}6244624(22)/6262444/z22 ${m:2/4}422(2z11)4 422(2z11)4/ 422(22)(22)(22)2z11(44) 2z1122 211 22 2z112221122 (22)(22)(22)4 (22)(22)(22)4 (22)(22)(22)4 (22)(22)(22)22/(2z11)2244(2z11)2244 (2z11)22(22)(22)42z116
N1:drmdrmfr/mfsslrr/drmdrmfr/mfsfmrd/mrddfmrr/sfld'tls/mrddfmrr-/sslr'd'td'/sd'd'd'tls lllsfm/fmrmsd'tlsfmmrrmfrmm-zz rmfrmm-zz d'ltslFs lfsmfrm d'ltslFs lfsmfrms/sfmd'lsfmrsfm/sfmd'tlsfmrrd
N2:s,tds,t,drt,/dt,ddddt,/s,t,ds,t,drt,/dt,drdt,d/dt,l,l,rdt,t,/mrdrrdt,/dt,l,l,rdt,t,-/dddfmrm/dmmmrdt,dddd-s,/ddt,d-d- d-t,ddt,t,drt,dd-zz t,drt,dd-zzmdrt,dl,t,frmdrt,d mdrt,dl,t, frmdrt,ddddddddd-t,rrdd-ddd-drdt,t,d
N3:mssmssss/srsmfls/mssmssss/srslsfm/sslllltt/ttd'lsFs/sslllltt-/ssflsss/mssss-rfffmrd/lsssms- fssss- s-zzzsssms- zzzsssm zzzzzzzzzzzzzzzzzzzzzzzzzzzz/mmfssfm l-ttssmfsmf-sls-fm
N4:ds,dds,s,s,s,/drmdf,F,s,/ds,dds,s,s,s,/drmfss,d/ddffrrss/mmlFsrs,/ddffrrssf/mmfrss,d/ddmds-s,f,l,f,d-d/f,s,s,d-m- fmrds,-s-zzzssmds-zzzssmd z28/dd-dmfdr-s,s,ddd-dmf-mfss,s,d
Y1:Dera, laza, hery, haja,/Ho anAndriamanitra/Tomponaina, Zanahary,/Rainny voninahitra!/Izy no mpanao antsika/Sady ivelomana;/Fototraina, foto-tso_a,/Izy ivavahana/Hihira isika hoe: Halelo_ia,/Dera ho anAndriamanitra!/Di_a Halelo_ia,_4Di_a Halelo_ia_4Halelo_ia Halelo_ia Halelo_ia Halelo_ia_/Hihira isika hoe: Halelo_ia,/Dera ho anAndriamanitra!/
Y2:Ray Tsitoha, tsy mi_ova,/Ti_a sy mamindra fo,/Mahaso_a isanandro,/Izy no isaorana!/Vatolampy tsy mifindra,/Tokinolombelona;/Fi_arova-mahavonjy,/Izy itoki_ana/

View file

@ -0,0 +1,12 @@
package mg.dot.feufaro
import kotlin.test.Test
import kotlin.test.assertEquals
class ComposeAppCommonTest {
@Test
fun example() {
assertEquals(3, 1 + 2)
}
}

View file

@ -0,0 +1,46 @@
package mg.dot.feufaro
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import mg.dot.feufaro.FileRepository
import java.io.File
import java.io.IOException
// This is just a regular class that implements the common 'FileRepository' interface.
// It is NOT an 'actual' declaration of 'FileRepository'.
class DesktopFileRepository : FileRepository { // IMPORTS AND IMPLEMENTS THE commonMain 'FileRepository' interface
override suspend fun readFileLines(filePath: String): List<String> = withContext(Dispatchers.IO) {
try {
when {
filePath.startsWith("assets://") -> {
readAssetFileLines(filePath)
}
else -> {
File(filePath).readLines()
}
}
} catch (e: IOException) {
throw IOException("Failed to read file or asset '$filePath'")
}
}
override suspend fun readFileContent(filePath: String): String = withContext(Dispatchers.IO) { "" }
private fun readAssetFileLines(assetFileName: String): List<String> {
return try {
//myApplicationContext.assets.open(filename.removePrefix("assets://")).bufferedReader().use {
object {}.javaClass.getResource("/"+assetFileName.removePrefix("assets://")).readText().split("\n")
} catch (e: IOException) {
throw IOException("Could not read asset file: $assetFileName", e)
}
}
private fun readAssetFileContent(assetFileName: String): String {
return try {
//myApplicationContext.assets.open(filename.removePrefix("assets://")).bufferedReader().use {
object {}.javaClass.getResource("/"+assetFileName.removePrefix("assets://")).readText()
} catch (e: IOException) {
throw IOException("Could not read asset file: $assetFileName", e)
}
}
}

View file

@ -0,0 +1,11 @@
package mg.dot.feufaro
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import mg.dot.feufaro.FileRepository
actual interface FileRepository {
actual suspend fun readFileLines(filePath: String): List<String>
actual suspend fun readFileContent(filePath: String): String
}

View file

@ -0,0 +1,7 @@
package mg.dot.feufaro
class JVMPlatform: Platform {
override val name: String = "Java ${System.getProperty("java.version")}"
}
actual fun getPlatform(): Platform = JVMPlatform()

View file

@ -0,0 +1,13 @@
package mg.dot.feufaro.di
import mg.dot.feufaro.DesktopFileRepository // Import the actual desktop implementation
import org.koin.core.module.dsl.singleOf // Import for Koin DSL
import org.koin.core.module.dsl.bind // Import for Koin DSL
import org.koin.dsl.module
import mg.dot.feufaro.FileRepository
val desktopModule = module {
// When Koin is initialized on Desktop, it will use DesktopFileRepository
// as the implementation for the FileRepository interface.
singleOf(::DesktopFileRepository) { bind<FileRepository>() }
}

View file

@ -0,0 +1,26 @@
package mg.dot.feufaro
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import mg.dot.feufaro.di.commonModule
import mg.dot.feufaro.di.desktopModule
import org.koin.core.context.GlobalContext.startKoin
import org.koin.core.logger.Level
fun main() = application {
startKoin {
printLogger(Level.INFO) // Mettez Level.INFO pour voir les logs de Koin
modules(commonModule, desktopModule) // Incluez seulement le module commun
}
// Testez l'injection
val fileRepository = org.koin.core.context.GlobalContext.get().get<FileRepository>()
println("FileRepository initialized for Desktop: $fileRepository")
Window(
onCloseRequest = ::exitApplication,
title = "Feufaro",
) {
App()
}
}

12
gradle.properties Normal file
View file

@ -0,0 +1,12 @@
#Kotlin
kotlin.code.style=official
kotlin.daemon.jvmargs=-Xmx3072M
#Gradle
org.gradle.jvmargs=-Xmx3072M -Dfile.encoding=UTF-8
org.gradle.configuration-cache=true
org.gradle.caching=true
#Android
android.nonTransitiveRClass=true
android.useAndroidX=true

46
gradle/libs.versions.toml Normal file
View file

@ -0,0 +1,46 @@
[versions]
agp = "8.7.3"
android-compileSdk = "35"
android-minSdk = "24"
android-targetSdk = "35"
androidx-activity = "1.10.1"
androidx-appcompat = "1.7.1"
androidx-constraintlayout = "2.2.1"
androidx-core = "1.16.0"
androidx-espresso = "3.6.1"
androidx-lifecycle = "2.9.1"
androidx-testExt = "1.2.1"
composeHotReload = "1.0.0-alpha11"
composeMultiplatform = "1.8.2"
junit = "4.13.2"
kotlin = "2.2.0"
kotlinx-coroutines = "1.10.2"
#20250704
koin = "4.0.4"
[libraries]
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
kotlin-testJunit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" }
junit = { module = "junit:junit", version.ref = "junit" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
androidx-testExt-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-testExt" }
androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-espresso" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
androidx-lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
kotlinx-coroutinesSwing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }
#20250704
koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin" }
koin-core-viewmodel = { module = "io.insert-koin:koin-core-viewmodel", version.ref = "koin" }
koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" }
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
androidLibrary = { id = "com.android.library", version.ref = "agp" }
composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload" }
composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" }
composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View file

@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

252
gradlew vendored Normal file
View file

@ -0,0 +1,252 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

94
gradlew.bat vendored Normal file
View file

@ -0,0 +1,94 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

35
settings.gradle.kts Normal file
View file

@ -0,0 +1,35 @@
rootProject.name = "Feufaro"
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
pluginManagement {
repositories {
google {
mavenContent {
includeGroupAndSubgroups("androidx")
includeGroupAndSubgroups("com.android")
includeGroupAndSubgroups("com.google")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositories {
google {
mavenContent {
includeGroupAndSubgroups("androidx")
includeGroupAndSubgroups("com.android")
includeGroupAndSubgroups("com.google")
}
}
mavenCentral()
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}
include(":composeApp")