mcpField
M
music-generator

music-generator

github.com/aviz85Creative & media50167 installsUpdated 16w ago
Repository

About music-generator

A command-line skill for generating custom music through the ElevenLabs Music API, with prompt-based and section-by-section composition modes for creators who need control over style, mood, and track length.

Key features

  1. 01Text-prompt music generation
  2. 02Multi-section composition via JSON
  3. 03Instrumental and vocal tracks
  4. 04Configurable track duration

Use cases

  1. 01Creating podcast intro music
  2. 02Generating presentation background tracks
  3. 03Making orchestral game themes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aviz85/claude-skills-library --skill music-generator

After installing, type/music-generatorin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

SETUP.md
examples/
corporate-theme.json
epic-adventure.json
scripts/
.env.example
generate_music.ts
package.json
tsconfig.json

Details

From the project README

Music Generator

First time? If setup_complete: false above, run ./SETUP.md first, then set setup_complete: true.

Generate custom AI music using ElevenLabs Music API with detailed composition control.

Features

  • Simple Mode: Generate music from a text prompt
  • Detailed Mode: Create multi-section compositions with precise control over styles, moods, and transitions
  • Instrumental or Vocal: Support for both instrumental and vocal tracks
  • Custom Duration: Generate tracks from 15 seconds to 5 minutes

Quick Start

cd ~/.claude/skills/music-generator/scripts

# Simple prompt-based generation
npx ts-node generate_music.ts \
  --prompt "Uplifting corporate music with electronic beats" \
  --duration 60 \
  --output /path/to/music.mp3

# List available styles
npx ts-node generate_music.ts --list-styles

Composition Modes

1. Simple Mode (--prompt)

Generate music from a single text prompt:

npx ts-node generate_music.ts \
  --prompt "Energetic workout music with driving beats and motivational synths" \
  --duration 90 \
  --output workout.mp3
2. Detailed Mode (--composition)

Create multi-section compositions with JSON config:

npx ts-node generate_music.ts \
  --composition /path/to/composition.json \
  --output epic-track.mp3

Composition JSON Format:

{
  "duration_ms": 80000,
  "instrumental": true,
  "positive_global_styles": ["corporate", "motivational", "electronic"],
  "negative_global_styles": ["sad", "aggressive", "heavy metal"],
  "sections": [
    {
      "section_name": "Intro",
      "duration_ms": 20000,
      "positive_local_styles": ["building momentum", "soft start"],
      "negative_local_styles": ["loud", "intense"],
      "lines": []
    },
    {
      "section_name": "Main Theme",
      "duration_ms": 40000,
      "positive_local_styles": ["energetic", "uplifting", "driving rhythm"],
      "negative_local_styles": ["slow", "mellow"],
      "lines": []
    },
    {
      "section_name": "Outro",
      "duration_ms": 20000,
      "positive_local_styles": ["triumphant", "resolution"],
      "negative_local_styles": ["abrupt ending"],
      "lines": []
    }
  ]
}

Style Guide

Positive Global Styles (Overall Track Feel)

Moods:

  • uplifting, inspiring, motivational, peaceful, energetic
  • dramatic, epic, emotional, nostalgic, mysterious
  • playful, cheerful, romantic, melancholic

Genres:

  • corporate, cinematic, electronic, ambient, orchestral
  • pop, rock, jazz, classical, world music
  • lo-fi, hip-hop, EDM, acoustic, folk

Instruments:

  • piano, guitar, strings, synths, drums
  • brass, woodwinds, percussion, bass
Negative Global Styles (What to Avoid)
  • aggressive, dark, scary, chaotic
  • heavy metal, death metal, harsh noise
  • explicit, profane
Section-Specific Styles

Use positive_local_styles and negative_local_styles to control individual sections:

Intro Styles:

  • soft opening, building momentum, atmospheric
  • gentle start, mysterious intro

Peak/Chorus Styles:

  • energetic peak, driving rhythm, powerful
  • emotional climax, triumphant

Outro Styles:

  • gentle fade, triumphant ending, resolution
  • nostalgic close, hopeful conclusion

Command Options

OptionShortDescription
--prompt-pText prompt for simple mode
--composition-cJSON file for detailed mode
--duration-dDuration in seconds (simple mode)
--output-oOutput file path (required)
--instrumental-iGenerate instrumental track
--format-fOutput format (mp3_44100_192, mp3_44100_128)
--list-stylesShow available styles
--help-hShow help

Examples

Corporate Background Music
npx ts-node generate_music.ts \
  -p "Professional corporate background music, uplifting and modern, suitable for presentations" \
  -d 120 \
  -i \
  -o corporate-bg.mp3
Podcast Intro
npx ts-node generate_music.ts \
  -p "Catchy podcast intro music, energetic and memorable, with electronic elements" \
  -d 15 \
  -o podcast-intro.mp3
Video Game Theme
npx ts-node generate_music.ts \
  -p "Epic fantasy adventure theme with orchestral instruments and heroic melodies" \
  -d 180 \
  -i \
  -o game-theme.mp3
Multi-Section Composition

Create a file my-composition.json:

{
  "duration_ms": 120000,
  "instrumental": true,
  "positive_global_styles": ["cinematic", "epic", "orchestral"],
  "negative_global_styles": ["electronic", "modern"],
  "sections": [
    {
      "section_name": "Dawn",
      "duration_ms": 30000,
      "positive_local_styles": ["soft", "mysterious", "building anticipation"],
      "negative_local_styles": ["loud", "fast"],
      "lines": []
    },
    {
      "section_name": "Battle",
      "duration_ms": 50000,
      "positive_local_styles": ["intense", "driving", "heroic"],
      "negative_local_styles": ["peaceful", "slow"],
      "lines": []
    },
    {
      "section_name": "Victory",
      "duration_ms": 40000,
      "positive_local_styles": ["triumphant", "emotional", "uplifting"],
      "negative_local_styles": ["sad", "mellow"],
      "lines": []
    }
  ]
}

Then generate:

npx ts-node generate_music.ts \
  -c my-composition.json \
  -o epic-journey.mp3

API Limits

  • Maximum duration: 330 seconds (5.5 minutes)
  • Minimum duration: 15 seconds
  • Generation time: ~30-60 seconds per track
  • Cost: ~$0.05-0.15 per generation (varies by duration)

Troubleshooting

"Invalid API key": Check .env file has valid ELEVENLABS_API_KEY

"Duration too long": Maximum is 330 seconds (5.5 minutes)

"Validation error": Ensure composition JSON has all required fields:

  • positive_global_styles (array)
  • negative_global_styles (array)
  • sections with section_name, duration_ms, positive_local_styles, negative_local_styles, lines

Comments

Markdown supported