From ba9bba203074005cf108382ac370de31c33e0dcc Mon Sep 17 00:00:00 2001 From: meowarex Date: Tue, 11 Aug 2026 07:57:30 +0000 Subject: [PATCH] WIP | Syllable AI [RL API] --- .../app/src/main/assets/patches-manifest.json | 9 ++++++ .../ui/screens/patchopts/PatchOptionsModel.kt | 4 ++- patches/data.json | 2 +- .../extension/radiant/RLAPILyricsWorker.smali | 11 ++++++++ patches/extension/radiant/WordLyrics.smali | 28 ++++++++++++------- patches/manifest.json | 9 ++++++ 6 files changed, 51 insertions(+), 12 deletions(-) diff --git a/Manager/app/src/main/assets/patches-manifest.json b/Manager/app/src/main/assets/patches-manifest.json index cf15ffa..333c5f4 100644 --- a/Manager/app/src/main/assets/patches-manifest.json +++ b/Manager/app/src/main/assets/patches-manifest.json @@ -76,6 +76,15 @@ "token": "RL_ROMANIZE", "inline": true }, + { + "type": "toggle", + "key": "synthesize", + "title": "WIP | AI Generate Syllables", + "description": "[Only works with API results] - Generates Syllable timings from Line timings using a self trained AI model ", + "default": false, + "inline": true, + "token": "RL_SYNTHESIZE" + }, { "type": "toggle", "key": "context_aware", diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/PatchOptionsModel.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/PatchOptionsModel.kt index 294d933..ae1d19e 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/PatchOptionsModel.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/PatchOptionsModel.kt @@ -190,7 +190,9 @@ class PatchOptionsModel( fun isAdvancedModified(spec: PatchSpec): Boolean = spec.advancedOptions.any { option -> when (option) { - is OptionSpec.Toggle -> toggleValue(spec, option) != option.default + // inline toggles sit next to the variant picker, not in the sheet, so they + // must not light up the sheet's "modified" dot + is OptionSpec.Toggle -> !option.inline && toggleValue(spec, option) != option.default is OptionSpec.Slider -> sliderValue(spec, option) != option.default is OptionSpec.Choice -> choiceValue(spec, option) != option.defaultIndex is OptionSpec.Color -> colorValue(spec, option) != option.default diff --git a/patches/data.json b/patches/data.json index 218530a..28ae557 100644 --- a/patches/data.json +++ b/patches/data.json @@ -1,5 +1,5 @@ { "tidalVersionCode": 10004, "tidalApkUrl": "https://github.com/meowarex/rl-mobile/releases/download/latest/tidal-stock.apk", - "patchesVersion": "1.0.0" + "patchesVersion": "1.1.2" } diff --git a/patches/extension/radiant/RLAPILyricsWorker.smali b/patches/extension/radiant/RLAPILyricsWorker.smali index ef1dde5..183cc85 100644 --- a/patches/extension/radiant/RLAPILyricsWorker.smali +++ b/patches/extension/radiant/RLAPILyricsWorker.smali @@ -690,6 +690,17 @@ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {}, Lradiant/WordLyrics;->synthesizeOn()Z + + move-result v0 + + if-eqz v0, :no_synthesize + + const-string v0, "&synthesize=true" + + invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + :no_synthesize invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 diff --git a/patches/extension/radiant/WordLyrics.smali b/patches/extension/radiant/WordLyrics.smali index 079db85..c8f707e 100644 --- a/patches/extension/radiant/WordLyrics.smali +++ b/patches/extension/radiant/WordLyrics.smali @@ -1010,11 +1010,7 @@ new-array v9, v8, [Ljava/lang/String; - const-string v10, "text" - - const-string v11, "" - - invoke-virtual {v6, v10, v11}, Lorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + invoke-static {v6}, Lradiant/WordLyrics;->lineText(Lorg/json/JSONObject;)Ljava/lang/String; move-result-object v10 @@ -1238,11 +1234,7 @@ :bs_single # Treat the line as one syllable - const-string v8, "text" - - const-string v9, "" - - invoke-virtual {v5, v8, v9}, Lorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + invoke-static {v5}, Lradiant/WordLyrics;->lineText(Lorg/json/JSONObject;)Ljava/lang/String; move-result-object v8 @@ -1350,6 +1342,22 @@ # Baked in by the Manager's options # CTX bits: 0x1 adlibs, 0x2 singers +# Ask the API to invent syllable timings +.method public static synthesizeOn()Z + .locals 2 + + const v0, __RL_SYNTHESIZE__ + + const/4 v1, 0x0 + + if-eqz v0, :off + + const/4 v1, 0x1 + + :off + return v1 +.end method + # Is context aware switched on # The mode bits alone can't say "off" .method static ctxOn()Z diff --git a/patches/manifest.json b/patches/manifest.json index cf15ffa..333c5f4 100644 --- a/patches/manifest.json +++ b/patches/manifest.json @@ -76,6 +76,15 @@ "token": "RL_ROMANIZE", "inline": true }, + { + "type": "toggle", + "key": "synthesize", + "title": "WIP | AI Generate Syllables", + "description": "[Only works with API results] - Generates Syllable timings from Line timings using a self trained AI model ", + "default": false, + "inline": true, + "token": "RL_SYNTHESIZE" + }, { "type": "toggle", "key": "context_aware",