# Advanced Generation Parameters in ACE-Step UI: A Technical Deep Dive

> Explore ACE-Step UI's 19 advanced generation parameters like custom diffusion timesteps and CFG interval scheduling to fine-tune your AI image creation process. Gain deeper control over your results.

- Repository: [fspecii/ace-step-ui](https://github.com/fspecii/ace-step-ui)
- Tags: deep-dive
- Published: 2026-04-29

---

**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`](https://github.com/fspecii/ace-step-ui/blob/main/server/src/services/acestep.ts) and are controlled via the Advanced Settings panel in [`main/components/CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/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`](https://github.com/fspecii/ace-step-ui/blob/main/server/src/services/acestep.ts) (lines 94-242) and surfaced in the UI through dedicated controls in [`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/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.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `3.0` as a number. Source: [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `0.5`. See [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `0.0`. Located at [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `1.0`. See [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `false`. Source: [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 1902-1910](https://github.com/fspecii/ace-step-ui/blob/main/main/components/CreatePanel.tsx#L1902-L1910).

- **Get Scores** (`getScores`): When `true`, requests a quality-score vector from the backend generation wrapper. Defaults to `false`. See [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `false`. Source: [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `true`. Located at [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `true`. See [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `true`. Source: [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `true`. Found in [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `8`. See [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `false`. Source: [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `false`. Found at [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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 to `null`. See [[`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) lines 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`](https://github.com/fspecii/ace-step-ui/blob/main/server/src/services/acestep.ts) and sent via the frontend API wrapper at [`main/services/api.ts`](https://github.com/fspecii/ace-step-ui/blob/main/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:

```json
{
  "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:

```javascript
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`](https://github.com/fspecii/ace-step-ui/blob/main/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), and `scoreScale`.
- **CFG tuning** is handled via `cfgIntervalStart`, `cfgIntervalEnd`, and the `useAdg` adaptive flag.
- **Chain-of-Thought** settings (`useCotMetas`, `useCotCaption`, `useCotLanguage`) configure the internal language model's reasoning capabilities.
- **Implementation** follows a clear path: [`CreatePanel.tsx`](https://github.com/fspecii/ace-step-ui/blob/main/CreatePanel.tsx) (UI state) → [`api.ts`](https://github.com/fspecii/ace-step-ui/blob/main/api.ts) (HTTP client) → [`acestep.ts`](https://github.com/fspecii/ace-step-ui/blob/main/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`](https://github.com/fspecii/ace-step-ui/blob/main/server/src/services/acestep.ts).