Skip to main content
Glama

mcp_opendaw_create_modulated_song

Create a multi-section song with automatic key modulation between sections. Define chord progressions, bars, and energy per section, and add genre-based drums in one call.

Instructions

Build a multi-section song with key modulation between sections — one call.

Each section has its own chord progression, length (bars), and energy (velocity multiplier). The tool automatically modulates between keys by using different progressions per section — no manual start_beat calculation needed.

sections: Comma-separated section specs. Each section format: name:progression:bars:energy

  • name: section label (verse, chorus, bridge, outro, etc.)

  • progression: chord progression string (e.g. "Am-F-C-G")

  • bars: total bars for this section

  • energy: velocity multiplier (0.0-1.0, relative to base velocity)

Default creates a 24-bar song: verse (Am-F-C-G, 8 bars, 0.7) → chorus (C-G-Am-F, 8 bars, 1.0) → bridge (F-C-Dm-G, 4 bars, 0.6) → outro (Am-F-C-G, 4 bars, 0.5)

The chorus modulates to C major (relative major of A minor), the bridge modulates to F (up a fourth), and the outro returns to Am.

arp_pattern/bass_pattern/melody_pattern/counter_melody_pattern: Same as create_harmonic_arrangement. Applied to all sections. Use "" to skip any layer.

drum_genre: If set (e.g. "house", "dnb", "synthwave"), creates a genre drum arrangement for the full song length BEFORE harmonic layers. When drum_genre is set, pads and bass are automatically skipped in harmonic sections (genre arrangement provides them). Default "" = no drums (harmony only). Valid: dnb, liquid_dnb, house, trap, techno, dubstep, afrobeat, rock, jazz, pop, funk, reggae, synthwave, trance, disco.

bpm: Tempo for drum arrangement (None = genre default). Only used when drum_genre is set.

Example:

Default 4-section modulated song (harmony only)

create_modulated_song()

With house drums

create_modulated_song(drum_genre="house", bpm=124)

With synthwave drums + counter-melody

create_modulated_song(drum_genre="synthwave", counter_melody_pattern="contrary")

Simple verse-chorus with DnB drums

create_modulated_song("verse:Em-G-D-C:8:0.7,chorus:G-D-Em-C:8:1.0", drum_genre="dnb")

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bpmNo
sectionsNoverse:Am-F-C-G:8:0.7,chorus:C-G-Am-F:8:1.0,bridge:F-C-Dm-G:4:0.6,outro:Am-F-C-G:4:0.5
velocityNo
drum_genreNo
unit_indexNo
arp_patternNoup
bass_patternNoroot
melody_patternNochord_tones
counter_melody_patternNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that modulation happens automatically between keys, that pattern parameters apply to all sections, and that setting drum_genre causes pads and bass to be skipped. It also states the default song structure (24 bars, specific sections). Missing are details about whether the tool creates new tracks/regions, overwrites existing data, or any side effects, but for a creation tool this is less critical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: it front-loads the purpose, then gives a precise section format, defaults, modulation explanation, parameter details, and examples. Each segment earns its place, though it could be trimmed slightly (e.g., the modulation explanation in prose could be moved to comments). The examples are valuable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters and no annotations, the description is largely complete: it covers the core sections syntax, defaults, drum genre behavior, and usage examples. It does not explain the global velocity parameter or unit_index, and relies on a sibling-tool reference for pattern values, which are minor gaps given the output schema exists. Overall, an agent could call this tool correctly for most intended uses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It thoroughly explains sections, drum_genre (with valid values), and bpm (when used). However, it leaves velocity and unit_index entirely unexplained, and the pattern parameters are only vaguely referenced as 'Same as create_harmonic_arrangement' without listing valid values. This partial coverage warrants a 3, not higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Build a multi-section song with key modulation between sections — one call.' It clearly differentiates from siblings like create_harmonic_arrangement by emphasizing the multi-section, key-modulating capability and the 'one call' convenience. The scope (sections, progressions, energy) is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this when you want a multi-section song with automatic key modulation, and it explicitly contrasts with manual start_beat calculation. It also references create_harmonic_arrangement for pattern semantics, implying when that simpler tool might be used, and includes examples for various drum genres. However, it does not explicitly state 'use this instead of X' or list exclusions, preventing a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ameobius-ai/opendaw-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server