Skip to content

Commit

Permalink
Merge pull request #153 from sdercolin/develop
Browse files Browse the repository at this point in the history
Release v3.20
  • Loading branch information
sdercolin authored Dec 19, 2023
2 parents 4f6e157 + 0e34b8f commit 549f256
Show file tree
Hide file tree
Showing 151 changed files with 1,905 additions and 1,632 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ jobs:
with:
ref: master

- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 11
java-version: 17

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:
steps:
- uses: actions/[email protected]

- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 11
java-version: 17

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
23 changes: 12 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

UtaFormatix is an application for converting projects among singing voice synthesizer softwares.

The current version `3.x` is built with [Kotlin for JavaScript](https://kotlinlang.org/docs/reference/js-overview.html)
The current version `3.x` is built with [Kotlin for JavaScript](https://kotlinlang.org/docs/js-overview.html)
and [React](https://github.com/facebook/react).

## Features
Expand All @@ -20,6 +20,9 @@ and [React](https://github.com/facebook/react).
- between CV and VCV
- between Kana and Romaji
- Find/Replace texts in the lyrics
- Lyrics mapping with customized dictionaries
- Project zooming, changing tempo and time signatures without changing the actual time duration of the contents
- Project splitting with a max track count in each project for SVP export
- Convert pitch for the following supported formats

| Format | Pitch import | Vibrato import | Pitch export |
Expand Down Expand Up @@ -54,8 +57,9 @@ If you are developing OSS projects related to singing voice synthesis, you may f

1. Install [IntelliJ IDEA](https://www.jetbrains.com/idea/)
2. Clone and import as a Gradle project
3. Configure IDEA's Gradle settings with `JDK 11` and `Use Gradle from: gradle-wrapper.properties file`
4. Run by `./gradlew run` or Gradle Task `other/run`
3. Configure IDEA's Gradle settings with `JDK 17` and `Use Gradle Wrapper`
4. Run by `./gradlew jsRun` or Gradle Task `other/jsRun`
5. Optionally, run by `./gradlew jsRun --continuous` with live reloading enabled

## Contribution

Expand All @@ -64,17 +68,15 @@ branch.

#### Adding a format support

Please check [Format.kt](https://github.com/sdercolin/utaformatix3/blob/master/src/main/kotlin/model/Format.kt) and its
usages.
Please check [Format.kt](src/jsMain/kotlin/model/Format.kt) and its usages.

#### Adding a Language

Please check [Strings.kt](https://github.com/sdercolin/utaformatix3/blob/master/src/main/kotlin/ui/strings/Strings.kt).
Please check [Strings.kt](src/jsMain/kotlin/ui/strings/Strings.kt).

#### Adding a configurable process

Please
check [ConfigurationEditor.kt](https://github.com/sdercolin/utaformatix3/blob/master/src/main/kotlin/ui/ConfigurationEditor.kt)
Please check [ConfigurationEditor.kt](src/jsMain/kotlin/ui/ConfigurationEditor.kt)
about how the existing processes work.

#### Build/Format check
Expand All @@ -85,9 +87,8 @@ Please confirm that the `build` and `ktlintCheck` Gradle tasks pass before submi
You may find `ktlintFormat` task helpful, which helps fix most format problems.

If your IDE's formatter is conflicting with `ktlint`, please import format settings
from [.editorconfig](https://github.com/sdercolin/utaformatix3/blob/master/.editorconfig) (IntelliJ IDEA uses it by
default).
from [.editorconfig](.editorconfig) (IntelliJ IDEA uses it by default).

## License

[Apache License, Version 2.0](https://github.com/sdercolin/utaformatix3/blob/master/LICENSE.md)
[Apache License, Version 2.0](LICENSE.md)
127 changes: 71 additions & 56 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
plugins {
kotlin("js") version "1.6.21"
kotlin("plugin.serialization") version "1.6.21"
kotlin("multiplatform") version "1.8.22"
kotlin("plugin.serialization") version "1.8.22"
id("org.jlleitschuh.gradle.ktlint") version "10.3.0"
id("io.github.turansky.kfc.legacy-union") version "5.8.0"
}

group = "com.sdercolin.utaformatix"
Expand All @@ -19,68 +18,84 @@ configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {
fun kotlinw(target: String): String =
"org.jetbrains.kotlin-wrappers:kotlin-$target"

val kotlinWrappersVersion = "1.0.0-pre.343"

dependencies {
// Model
implementation("com.sdercolin.utaformatix:utaformatix-data:1.0.0")

// Kotlin
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.6.2")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3")

// React, React DOM + Wrappers
implementation(enforcedPlatform(kotlinw("wrappers-bom:$kotlinWrappersVersion")))
implementation(kotlinw("emotion"))
implementation(kotlinw("react"))
implementation(kotlinw("react-dom"))
implementation(kotlinw("mui"))
implementation(kotlinw("mui-icons"))
implementation(kotlinw("react-css:17.0.2-pre.298-kotlin-1.6.10"))

// React components
implementation(npm("react-file-drop", "3.1.2"))
implementation(npm("react-markdown", "5.0.3"))

// Localization
implementation(npm("i18next", "19.8.7"))
implementation(npm("react-i18next", "11.8.5"))
implementation(npm("i18next-browser-languagedetector", "6.0.1"))

// Others
implementation(npm("jszip", "3.5.0"))
implementation(npm("stream-browserify", "3.0.0"))
implementation(npm("buffer", "6.0.3"))
implementation(npm("file-saver", "2.0.5"))
implementation(npm("raw-loader", "4.0.2"))
implementation(npm("file-loader", "6.2.0"))
implementation(npm("encoding-japanese", "1.0.30"))
implementation(npm("uuid", "8.3.2"))
implementation(npm("midi-parser-js", "4.0.4"))
implementation(npm("js-cookie", "2.2.1"))
implementation(npm("js-yaml", "4.1.0"))

// Testing
testImplementation(kotlin("test"))
}

kotlin {
js(LEGACY) {
js {
binaries.executable()
browser {
binaries.executable()
commonWebpackConfig {
cssSupport.enabled = true
}
runTask {
cssSupport.enabled = true
devServer = devServer?.copy(port = 33221)
}
testTask {
useKarma {
enabled = true
useChromeHeadless()
webpackConfig.cssSupport.enabled = true
}
}
}
}
sourceSets {
val jsMain by getting {
dependencies {
// Model
implementation("com.sdercolin.utaformatix:utaformatix-data:1.0.0")

// Kotlin
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.6.4")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0")

// React, React DOM + Wrappers
implementation(enforcedPlatform("org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom:1.0.0-pre.430"))
implementation(kotlinw("emotion"))
implementation(kotlinw("extensions"))
implementation(kotlinw("react"))
implementation(kotlinw("react-dom"))
implementation(kotlinw("mui"))
implementation(kotlinw("mui-icons"))

// React components
implementation(npm("react-file-drop", "3.1.2"))
implementation(npm("react-markdown", "5.0.3"))

// Localization
implementation(npm("i18next", "19.8.7"))
implementation(npm("react-i18next", "11.8.5"))
implementation(npm("i18next-browser-languagedetector", "6.0.1"))

// Others
implementation(npm("jszip", "3.5.0"))
implementation(npm("stream-browserify", "3.0.0"))
implementation(npm("buffer", "6.0.3"))
implementation(npm("file-saver", "2.0.5"))
implementation(npm("raw-loader", "4.0.2"))
implementation(npm("file-loader", "6.2.0"))
implementation(npm("encoding-japanese", "1.0.30"))
implementation(npm("uuid", "8.3.2"))
implementation(npm("midi-parser-js", "4.0.4"))
implementation(npm("js-cookie", "2.2.1"))
implementation(npm("js-yaml", "4.1.0"))
}
}
val jsTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
}
}

val copyJsResources by tasks.register<Copy>("copyJsResources") {
from("src/jsMain/resources")
into("build/js/packages/utaformatix-test/kotlin")
mustRunAfter("jsTestTestDevelopmentExecutableCompileSync")
}
tasks.named("jsBrowserTest") {
dependsOn(copyJsResources)
}
val cleanDistributedResources by tasks.register<Delete>("cleanDistributedResources") {
listOf("format_templates", "images", "texts").forEach {
delete("build/distributions/$it")
}
mustRunAfter("jsBrowserDistribution")
}
tasks.named("build") {
dependsOn(cleanDistributedResources)
}
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
kotlin.code.style=official
kotlin.js.compiler=ir
kotlin.daemon.jvmargs=-Xmx4G
Loading

0 comments on commit 549f256

Please sign in to comment.