Skip to content

Add AceFlow UI with chord progression workflow and LoRA integration#799

Draft
robustini wants to merge 26 commits intoace-step:mainfrom
robustini:aceflow
Draft

Add AceFlow UI with chord progression workflow and LoRA integration#799
robustini wants to merge 26 commits intoace-step:mainfrom
robustini:aceflow

Conversation

@robustini
Copy link
Contributor

Introduce the AceFlow UI.

This commit adds:

  • AceFlow web UI integration
  • chord progression planning and section-aware harmonic workflow
  • harmonic reference WAV generation for conditioning
  • Custom mode conditioning through audio codes
  • Cover mode conditioning through raw reference WAV
  • project/export support for chord-tagged lyrics
  • runtime stripping of chord tags from model input lyrics
  • per-job CLI log file generation
  • launcher scripts for AceFlow UI
  • LoRA integration in the AceFlow workflow

The LoRA catalog includes entries for:

  • LoRAs created by Marco Robustini (aka Marcopter)
  • LoRAs shared by the ACE-Step Discord community

Note:
LoRA weight files are not bundled in this commit.
To use them, create a lora directory in the ACE-Step root, place the LoRA folders there, and update lora_catalog.json accordingly.

Introduce the AceFlow UI.

This commit adds:
- AceFlow web UI integration
- chord progression planning and section-aware harmonic workflow
- harmonic reference WAV generation for conditioning
- Custom mode conditioning through audio codes
- Cover mode conditioning through raw reference WAV
- project/export support for chord-tagged lyrics
- runtime stripping of chord tags from model input lyrics
- per-job CLI log file generation
- launcher scripts for AceFlow UI
- LoRA integration in the AceFlow workflow

The LoRA catalog includes entries for:
- LoRAs created by Marco Robustini (aka Marcopter)
- LoRAs shared by the ACE-Step Discord community

Note:
LoRA weight files are not bundled in this commit.
To use them, create a `lora` directory in the ACE-Step root, place the LoRA folders there, and update `lora_catalog.json` accordingly.
Introduce the AceFlow UI.

This commit adds:
- AceFlow web UI integration
- chord progression planning and section-aware harmonic workflow
- harmonic reference WAV generation for conditioning
- Custom mode conditioning through audio codes
- Cover mode conditioning through raw reference WAV
- project/export support for chord-tagged lyrics
- runtime stripping of chord tags from model input lyrics
- per-job CLI log file generation
- launcher scripts for AceFlow UI
- LoRA integration in the AceFlow workflow

The LoRA catalog includes entries for:
- LoRAs created by Marco Robustini (aka Marcopter)
- LoRAs shared by the ACE-Step Discord community

Note:
LoRA weight files are not bundled in this commit.
To use them, create a `lora` directory in the ACE-Step root, place the LoRA folders there, and update `lora_catalog.json` accordingly.
@robustini robustini marked this pull request as draft March 9, 2026 15:05
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 9, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c08e451d-0eaf-417a-b40b-af397f217d5d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@robustini
Copy link
Contributor Author

Please do not merge yet.

…rols

This commit introduces SoundFont-based rendering for generated chord/reference audio and improves Cover-mode conditioning behavior.

Changes included:
- added renderer selection for generated chord/reference audio:
  - SoundFont (.sf2)
  - internal synth fallback
- exposed renderer choice in Advanced Settings
- added a Cover-only conditioning balance slider
- updated Cover conditioning balance semantics:
  - 0.00 = audio codes only
  - 0.50 = hybrid
  - 1.00 = source WAV only
- preserved hybrid payload routing in Cover mode when both audio_codes and src_audio are available
- added backend defaults for cover_conditioning_balance and chord_reference_renderer
…nd UI label/i18n issues

Fix the real AceFlow results UI to show per-audio metadata directly in the visible player, without requiring users to open the JSON/details panel.

Changes included:
- show readable filename next to each generated audio
- show real resolved seed next to each generated audio
- wire metadata through the actual results render path used by the main UI
- persist per-audio metadata in result payloads/metadata JSON
- fix SFT model selection so it auto-sets Inference steps only, without touching Guidance scale
- fix player metadata labels so they react correctly to UI language changes after generation
- fix/trim long parameter labels and avoid ugly truncation/ellipsis issues in the relevant UI row

This addresses the previous failed attempt where changes were made in a non-effective or non-visible branch of the UI, resulting in no metadata appearing near the real player.
Introduces an optional A/B compare mode for LoRA generation.

When enabled, AceFlow generates two outputs with the same seed and same settings:
- Audio 1 without LoRA
- Audio 2 with the selected LoRA

The goal is to make LoRA comparison immediate and reliable without changing the normal player workflow.

This implementation keeps the standard players and their normal save/download behavior, while adding synchronized comparison controls below them for:
- shared play/pause
- shared stop
- crossfade between Audio 1 and Audio 2

In A/B mode, batch generation is constrained to 1 so the comparison always produces exactly two outputs.
- fix A/B compare flow to avoid internal rate-limit collisions on the second /api/jobs submit
- preserve normal anti-double-click protection while allowing the legitimate compare pair to complete cleanly
- prevent empty second audio in compare runs by stabilizing the paired submit path
- normalize Custom mode payloads for LM/audio-code flows so text2music requests do not carry inconsistent cover-style conditioning
- fix LM-enabled generation path regression that could lead to tensor size mismatch during conditioning/hints preparation
- ensure imported JSON configs with an explicit seed disable auto-seed mode both in UI state and in generated jobs
- widen the seed input field to properly display full manual seed values
- clean up redundant README wording around frontend auto-fill versus backend fallback/clamp behavior
- keep all changes scoped to the custom UI package only
Move updateLang to the comparison bridge used by dual generation
Update the Remix-facing UI text and documentation to match the actual source-audio workflow used by Gradio.

Changes include:
- clarify that Remix uses uploaded source audio
- relabel the start/end controls as source window controls for Remix
- remove repaint-style wording that was misleading users
- update bilingual UI copy
- update README wording for Remix behavior
…nd turbo step runtime overrides

Remix migration and cleanup
- finalized the Remix terminology migration across the UI
- standardized public wiring on `source_start` / `source_end`
- removed misleading Remix/Repaint UI wording and stale references where safe
- kept backend compatibility bridges only where required by the current ACE-Step core
- verified Cover behavior was not altered by the Remix changes
- cleaned up legacy/refactor leftovers, dead wiring, and inconsistent frontend/backend naming

Authentication and admin
- added configurable email/password authentication
- added admin bootstrap via environment variables
- added session/auth status endpoints and protected flows
- added admin user management and recent auth event views
- fixed related frontend loading/rendering issues
- improved user deletion handling and UI refresh consistency

LoRA handling
- added runtime patching for safer single-LoRA lifecycle handling
- improved LoRA load/unload logging and state visibility
- sorted `lora_catalog.json` alphabetically for deterministic ordering while keeping the “no LoRA” option first

Cleanup / retention
- replaced hardcoded 60-minute cleanup values with centralized configuration
- introduced `ACEFLOW_CLEANUP_TTL_SECONDS`
- default remains 3600 seconds for backward-compatible behavior
- `0` disables cleanup entirely
- applied the TTL consistently to outputs, uploads, and logs
- exposed cleanup TTL in health/system reporting
- updated documentation accordingly

Turbo inference steps: UI + backend alignment
- fixed Turbo model defaults in the UI
- Turbo now defaults to 8 inference steps
- Turbo UI max is capped at 20
- non-Turbo models keep their higher limits
- synchronized slider/input behavior with the actual model constraints

Turbo step clamp bypass (runtime patching only)
- identified the ACE-Step core Turbo clamp path and documented it
- added process-local runtime patching to bypass the core Turbo infer-step clamp when explicitly enabled
- introduced `ACEFLOW_BYPASS_CORE_TURBO_STEP_CLAMP=1`
- when enabled, the runtime bypasses the core Turbo clamp logic without modifying ACE-Step core files on disk
- added explicit runtime logging so the patch status is visible at startup and generation time

Turbo explicit timestep schedule override
- implemented a second runtime patch to avoid the Turbo backend silently falling back to its fixed 8-step schedule
- when Turbo is used with requested steps > 8, the runtime now maps the request to an explicit valid timestep schedule (up to 20)
- this makes requested Turbo steps above 8 actually take effect in practice, instead of only bypassing the first clamp
- logging shows both requested steps and the generated timestep schedule for traceability

Docs and consistency
- updated README to reflect:
  - Remix/source window terminology
  - auth/admin environment variables
  - cleanup TTL configuration
  - Turbo UI defaults and limits
  - Turbo clamp bypass and explicit timestep schedule behavior

Notes
- all Turbo step overrides are scoped to the local process only
- no ACE-Step core source files are modified by these runtime patches
- compatibility shims for legacy core field names are preserved only where strictly necessary
robustini and others added 8 commits March 15, 2026 12:07
Set Turbo to 8 steps by default with a max of 20, while restoring the 200-step range for SFT/Base models and reapplying the correct step cap whenever the active model changes or is synced from the backend.
Also sync the frontend model selector with the backend current model, centralize cleanup TTL defaults, make health/options report the real runtime patch installation state instead of only the env-requested state, and keep the runtime monkey patch unchanged.
Use SFT-based step rules instead of Turbo-vs-non-Turbo rules across the AceFlow UI and backend.
SFT and SFT Turbo now default to 50 steps with a 200-step max, while all other DiT models default to 8 steps with a 20-step max.
Restore native number spinners and keep locale-aware decimal display while preserving robust parsing and slider sync for LoRA weight.
Pause and reset active media players when generation starts, covering both registered custom players and native audio/video elements.
Keep the Generate button tied to the current request state instead of re-enabling it based on the cooldown window.
When a request is still queued, pressing the already-active Generate button cancels that reservation and clears the queued state. Once processing starts, the button remains busy and no longer acts as a cancel control.
Also removes UI wording related to the cooldown/rate-limit mechanism and keeps queue messaging focused on the actual request state.
Added the option to select Kbps and KHz for MP3 format.
Cleaned up some obsolete logs.
Replaced the default model for lower VRAM consumption.
- renamed song catalog
- updated batch and readme.ms for various service initialization configurations regarding available VRAM
Use the same default inference steps and shift for DiT Base as DiT SFT.
Also align the step limit logic so Base follows the quality/default path instead of the turbo clamp.
robustini and others added 2 commits March 18, 2026 21:46
…leanup

- make LoRA root dynamic with env-first resolution and local project fallback
- keep lora_catalog.json as primary source, with disk scan only as merge/fallback
- preserve static catalog instead of removing it
- add env-driven AceFlow runtime options for startup/model behavior
- refine runtime LoRA unload monkey patch without touching Ace-Step core
- make Turbo / Base / SFT inference step handling more explicit in backend and frontend
- improve launcher compatibility with both .venv and venv
- keep launcher behavior aligned with the fast LM backend path
- update ignore rules for local outputs/state files
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants