Generate AI music with Producer via AceDataCloud API. Use when creating songs, generating lyrics, extending tracks, creating covers, swapping vocals/instrumentals, replacing song sections, or uploading reference audio. Supports custom lyrics, instrumental-only mode, and multiple creative actions.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add NeverSight/skills_feed --skill producer-music --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Producer Music?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/neversight-producer-music)More formats (shields.io, HTML) on the badges page.
---
name: producer-music
description: Generate AI music with Producer via AceDataCloud API. Use when creating songs, generating lyrics, extending tracks, creating covers, swapping vocals/instrumentals, replacing song sections, or uploading reference audio. Supports custom lyrics, instrumental-only mode, and multiple creative actions.
license: Apache-2.0
metadata:
author: acedatacloud
version: "1.0"
compatibility: Requires ACEDATACLOUD_API_TOKEN in .env file (see _shared/authentication.md).
---
# Producer Music Generation
Generate AI music through AceDataCloud's Producer API.
> **Setup:** See [authentication](../_shared/authentication.md) for token setup.
## Quick Start
```bash
curl -X POST https://api.acedata.cloud/producer/audios \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "generate", "prompt": "upbeat electronic dance track with synth leads"}'
```
> **Async:** All generation is async. See [async task polling](../_shared/async-tasks.md). Poll via `POST /producer/tasks` with `{"id": "..."}` every 3-5 seconds.
## Models
| Model | Notes |
|-------|-------|
| `FUZZ-2.0 Pro` | Default, highest quality |
| `FUZZ-2.0` | Standard quality |
| `FUZZ-2.0 Raw` | Raw output variant |
| `FUZZ-1.1 Pro` | Pro v1.1 |
| `FUZZ-1.0 Pro` | Pro v1.0 |
| `FUZZ-1.0` | v1.0 |
| `FUZZ-1.1` | v1.1 |
| `FUZZ-0.8` | Legacy |
## Actions
| Action | Description |
|--------|-------------|
| `generate` | Create a new song from prompt or custom lyrics |
| `cover` | Create a cover version of an existing song |
| `extend` | Continue a song from a specific timestamp |
| `replace_section` | Replace a time range in an existing song |
| `swap_vocals` | Extract and swap vocal tracks |
| `swap_instrumentals` | Extract and swap instrumental tracks |
| `variation` | Generate a variation of an existing song |
| `stems` | Separate a song into stems |
## Workflows
### 1. Generate from Prompt
```json
POST /producer/audios
{
"action": "generate",
"prompt": "chill lo-fi hip hop with rain sounds and soft piano"
}
```
### 2. Custom Lyrics Mode
```json
POST /producer/audios
{
"action": "generate",
"custom": true,
"title": "Midnight City",
"lyric": "[Verse]\nNeon lights reflect on wet streets\n[Chorus]\nMidnight city never sleeps",
"instrumental": false
}
```
### 3. Instrumental Only
```json
POST /producer/audios
{
"action": "generate",
"prompt": "epic orchestral soundtrack for a movie trailer",
"instrumental": true
}
```
### 4. Extend Song
```json
POST /producer/audios
{
"action": "extend",
"audio_id": "existing-audio-id",
"continue_at": 30
}
```
### 5. Replace Section
```json
POST /producer/audios
{
"action": "replace_section",
"audio_id": "existing-audio-id",
"replace_section_start": 15,
"replace_section_end": 30
}
```
### 6. Separate into Stems
```json
POST /producer/audios
{
"action": "stems",
"audio_id": "existing-audio-id"
}
```
### 7. Generate Lyrics
```json
POST /producer/lyrics
{
"prompt": "a love song about stargazing on a summer night"
}
```
### 8. Get WAV / Video
```json
POST /producer/wav
{"audio_id": "your-audio-id"}
POST /producer/videos
{"audio_id": "your-audio-id"}
```
### 9. Upload Reference Audio
```json
POST /producer/upload
{
"audio_url": "https://example.com/reference.mp3"
}
```
## Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `action` | string | See actions table |
| `prompt` | string | Song description (for non-custom mode) |
| `model` | string | Model (e.g., `"FUZZ-2.0 Pro"`) |
| `custom` | boolean | Enable custom lyrics mode |
| `instrumental` | boolean | Pure instrumental (no vocals) |
| `title` | string | Song title |
| `lyric` | string | Custom lyrics with `[Verse]`, `[Chorus]` tags |
| `audio_id` | string | Existing audio ID (for edit actions) |
| `continue_at` | number | Seconds — where to extend from |
| `replace_section_start` | number | Start time of section to replace |
| `replace_section_end` | number | End time of section to replace |
| `lyrics_strength` | 0-1 | Lyrics adherence (default: 0.7) |
| `sound_strength` | 0.2-1 | Sound quality weight (default: 0.7) |
| `weirdness` | 0-1 | Creative randomness (default: 0.5) |
| `seed` | string | Seed for reproducibility |
## Response Structure
```json
{
"data": [
{
"id": "audio-id",
"audio_url": "https://cdn.example.com/song.mp3",
"video_url": "https://cdn.example.com/video.mp4",
"image_url": "https://cdn.example.com/cover.jpg",
"title": "Song Title",
"lyric": "full lyrics...",
"style": "electronic, dance",
"model": "FUZZ-2.0 Pro"
}
]
}
```
## Gotchas
- Use `[Verse]`, `[Chorus]`, `[Bridge]`, `[Outro]` tags in custom lyrics
- `continue_at` is in **seconds** — the song extends from that point
- `replace_section_start` / `replace_section_end` define the time range to regenerate
- `weirdness` at 0 = predictable, at 1 = highly experimental
- Upload a reference audio via `/producer/upload` to get an audio ID for use with `cover` or `extend`
- WAV and video downloads are separate endpoints — call them after the main generation completes
- **CRITICAL:** Check the `state` field in task responses — only `state: "complete"` with `success: true` means done. During `pending`, the API may return intermediate `audio_url` values (streaming previews). Do NOT stop polling just because `audio_url` is non-empty
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!