Advanced Generation Parameters in ACE-Step UI: A Technical Deep Dive
ACE-Step UI exposes 19 advanced generation parameters—including custom diffusion timesteps, CFG interval scheduling, score scaling, and chain-of-thought toggles—that map directly to the backend GenerationParams interface in server/src/services/acestep.ts and are controlled via the Advanced Settings panel in main/components/CreatePanel.tsx.
The fspecii/ace-step-ui repository provides a React-based interface for the ACE-Step audio generation model, offering power users fine-grained control over the diffusion pipeline through its Advanced Settings section. These parameters are forwarded from the frontend to a Gradio-powered backend, allowing precise manipulation of sampling behavior, classifier-free guidance, and language model inference.
Core Advanced Parameters
The advanced generation parameters are defined in the GenerationParams interface at server/src/services/acestep.ts (lines 94-242) and surfaced in the UI through dedicated controls in CreatePanel.tsx. Below is the complete parameter reference organized by functional category.
Diffusion and Sampling Controls
These parameters directly modify the diffusion sampling schedule and noise injection strategy:
-
Custom Timesteps (
customTimesteps): Accepts a comma-separated string of integer timesteps (e.g.,"0,10,20,30,40,50") that overrides the default linear schedule. Implemented in [CreatePanel.tsxlines 2315-2319](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2315-L2319). -
Shift (
shift): Adjusts the diffusion schedule for the base model; higher values create more aggressive noise schedules. Defaults to3.0as a number. Source: [CreatePanel.tsxlines 2082-2088](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2082-L2088). -
Inference Method (
inferMethod): Selects between deterministic ODE ("ode") or stochastic SDE ("sde") sampling. Defaults to"ode". Found in [CreatePanel.tsxlines 1998-2005](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L1998-L2005). -
Score Scale (
scoreScale): Scales the influence of the quality-score term in the diffusion loss function. Defaults to0.5. See [CreatePanel.tsxlines 2325-2331](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2325-L2331).
Classifier-Free Guidance (CFG) Configuration
These controls fine-tune when and how classifier-free guidance applies during the diffusion process:
-
CFG Interval Start (
cfgIntervalStart): Fraction of total steps (0.0 to 1.0) at which CFG begins. Defaults to0.0. Located at [CreatePanel.tsxlines 2289-2295](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2289-L2295). -
CFG Interval End (
cfgIntervalEnd): Fraction of total steps at which CFG stops. Defaults to1.0. See [CreatePanel.tsxlines 2297-2303](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2297-L2303). -
Adaptive Dual Guidance (
useAdg): Boolean flag that enables dynamic CFG adjustment for higher quality at the cost of slower inference. Defaults tofalse. Source: [CreatePanel.tsxlines 2292-2299](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2292-L2299).
Audio Output and Metadata
Control the format and auxiliary data returned with generated audio:
-
Audio Format (
audioFormat): Output container selection, either"mp3"(compressed) or"flac"(lossless). Defaults to"mp3". Found in [CreatePanel.tsxlines 1902-1910](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L1902-L1910). -
Get Scores (
getScores): Whentrue, requests a quality-score vector from the backend generation wrapper. Defaults tofalse. See [CreatePanel.tsxlines 2028-2032](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2028-L2032). -
Get LRC (
getLrc): Requests timestamped lyrics in LRC format alongside the audio file. Defaults tofalse. Source: [CreatePanel.tsxlines 2034-2038](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2034-L2038).
Language Model and Chain-of-Thought
These parameters configure the behavior of the internal language model (LM) responsible for lyric and metadata generation:
-
Chain-of-Thought – Metas (
useCotMetas): Enables meta-information generation for Chain-of-Thought reasoning. Defaults totrue. Located at [CreatePanel.tsxlines 2024-2030](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2024-L2030). -
Chain-of-Thought – Caption (
useCotCaption): Allows the LM to rewrite captions for enhanced lyric consistency. Defaults totrue. See [CreatePanel.tsxlines 2032-2038](https://github.com/fspecii/ace-step-ui/blob/main/components/CreatePanel.tsx#L2032-L2038). -
Chain-of-Thought – Language (
useCotLanguage): Enables language-level reasoning in the LM. Defaults totrue. Source: [CreatePanel.tsxlines 2040-2046](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2040-L2046). -
Allow LM Batch (
allowLmBatch): Permits larger batch processing in the language model (requires additional VRAM). Defaults totrue. Found in [CreatePanel.tsxlines 2020-2023](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2020-L2023). -
LM Batch Chunk Size (
lmBatchChunkSize): Controls the number of LM tokens processed per chunk, affecting latency and memory usage. Defaults to8. See [CreatePanel.tsxlines 2240-2246](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2240-L2246).
Experimental and Debug Features
Parameters for automated generation loops and debugging:
-
Auto-generation (
autogen): Experimental flag that loops generation until a stopping condition is met. Defaults tofalse. Source: [CreatePanel.tsxlines 2060-2066](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2060-L2066). -
Constrained Decoding Debug (
constrainedDecodingDebug): Emits additional debug information for constrained decoding processes. Defaults tofalse. Found at [CreatePanel.tsxlines 2068-2074](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2068-2074). -
Track Name (
trackName): Optional label used for downstream classification tasks. Defaults tonull. See [CreatePanel.tsxlines 2525-2532](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2525-L2532). -
Complete Track Classes (
completeTrackClasses): Array of track class tags (e.g.,["ambient", "drone"]) for precise conditioning. Defaults to[]. Source: [CreatePanel.tsxlines 2665-2674](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L2665-L2674).
Data Flow: From UI to Backend
When a user modifies these settings in the Advanced Settings section of the Create Panel, the React state variables (e.g., customTimesteps, scoreScale) are collected into a single payload object. This object is typed as GenerationParams in server/src/services/acestep.ts and sent via the frontend API wrapper at main/services/api.ts (lines 36-79) to the /generation_wrapper Gradio endpoint.
The complete JSON payload structure sent to the backend includes both basic and advanced fields:
{
"customMode": false,
"instrumental": false,
"vocalLanguage": "en",
"duration": -1,
"bpm": 0,
"keyScale": "",
"timeSignature": "",
"inferenceSteps": 20,
"guidanceScale": 7.0,
"batchSize": 1,
"randomSeed": true,
"seed": -1,
"audioFormat": "mp3",
"inferMethod": "ode",
"shift": 3.0,
"customTimesteps": "",
"scoreScale": 0.5,
"cfgIntervalStart": 0.0,
"cfgIntervalEnd": 1.0,
"useAdg": false,
"useCotMetas": true,
"useCotCaption": true,
"useCotLanguage": true,
"autogen": false,
"constrainedDecodingDebug": false,
"allowLmBatch": true,
"getScores": false,
"getLrc": false,
"lmBatchChunkSize": 8,
"trackName": null,
"completeTrackClasses": []
}
Programmatic Usage Example
To invoke the generation API with advanced parameters programmatically, construct a payload matching the GenerationParams interface and pass it to the songsApi.createSong method:
import { songsApi } from './services/api';
const generationPayload = {
// Basic parameters
customMode: true,
songDescription: '',
lyrics: '',
style: '',
title: 'My Experimental Track',
ditModel: 'acestep-v15-turbo-shift3',
instrumental: false,
vocalLanguage: 'en',
duration: 120,
bpm: 120,
keyScale: 'C',
timeSignature: '4/4',
// Advanced generation parameters
customTimesteps: '0,10,20,30,40,50',
scoreScale: 0.8,
cfgIntervalStart: 0.2,
cfgIntervalEnd: 0.9,
shift: 4.0,
inferMethod: 'sde',
audioFormat: 'flac',
useAdg: true,
useCotMetas: true,
useCotCaption: false,
useCotLanguage: true,
autogen: false,
allowLmBatch: true,
lmBatchChunkSize: 12,
trackName: 'ambient',
completeTrackClasses: ['ambient', 'drone'],
};
async function runGeneration() {
const { song } = await songsApi.createSong(generationPayload, '<YOUR_JWT>');
console.log('Generated song ID:', song.id);
}
runGeneration();
Each key in the payload corresponds one-to-one with the fields defined in server/src/services/acestep.ts, ensuring type-safe transmission from the React frontend to the Python Gradio backend.
Summary
- 19 advanced parameters are available in ACE-Step UI, exposing deep control over the diffusion pipeline.
- Diffusion controls include
customTimesteps,shift,inferMethod(ODE/SDE), andscoreScale. - CFG tuning is handled via
cfgIntervalStart,cfgIntervalEnd, and theuseAdgadaptive flag. - Chain-of-Thought settings (
useCotMetas,useCotCaption,useCotLanguage) configure the internal language model's reasoning capabilities. - Implementation follows a clear path:
CreatePanel.tsx(UI state) →api.ts(HTTP client) →acestep.ts(backend typing) → Gradio wrapper.
Frequently Asked Questions
What is the difference between ODE and SDE inference methods in ACE-Step UI?
ODE (Ordinary Differential Equation) sampling is deterministic, producing the same output given identical seeds and parameters, which is ideal for reproducible results. SDE (Stochastic Differential Equation) sampling introduces randomness during the diffusion process, which can increase audio variety and perceived "creativity" at the cost of deterministic output.
How do the CFG Interval Start and End parameters work?
These parameters control when classifier-free guidance is active during the diffusion timeline. CFG Interval Start (default 0.0) specifies the fraction of total steps at which guidance begins, while CFG Interval End (default 1.0) determines when it stops. Setting these to values like 0.2 and 0.9 restricts guidance to the middle portion of generation, potentially reducing artifacts while maintaining prompt adherence.
What are the Chain-of-Thought parameters used for?
The Chain-of-Thought (CoT) toggles (useCotMetas, useCotCaption, useCotLanguage) enable intermediate reasoning steps in the internal language model. When enabled, the LM generates meta-information, rewrites captions for consistency, and performs language-level reasoning before producing the final audio, which improves lyric alignment and semantic coherence but may increase generation time.
How does the Custom Timesteps parameter override the default schedule?
The Custom Timesteps parameter accepts a comma-separated string of integers (e.g., "0,10,20,30,40,50") that replaces the default linear diffusion schedule. This allows expert users to implement custom noise schedules—such as quadratic spacing or specific checkpoint intervals—directly in the customTimesteps field defined at line 94 of server/src/services/acestep.ts.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →