Skip to main content
Glama

mcp_opendaw_groove_transfer

Transfer the timing and velocity feel from a source MIDI region to a destination region by extracting and applying its groove template.

Instructions

Transfer groove (timing + velocity feel) from a source region to a destination region.

Extracts the groove template from source notes: for each grid position within the groove cycle (groove_length beats), records the average timing offset from the grid and the average velocity ratio. Then applies this template to destination notes — shifting their timing and scaling velocity to match the source feel.

This is NOT copying notes — it transfers the feel. A 1-bar drum groove can be applied to a 4-bar programmed pattern. The groove cycles every groove_length beats.

source_unit_index: AU index of the groove source (e.g. a drum track). source_track_index: Note track index on the source AU. source_region_index: Region index on source (-1 = first). dest_unit_index: AU index of destination (-1 = same as source). dest_track_index: Note track index on destination AU (-1 = same as source track). dest_region_index: Region index on destination (-1 = all regions on track). groove_length: Groove cycle length in beats (4 = 1 bar of 4/4, 3 = waltz, 2 = half-bar). timing_strength: 0-1, how much timing offset to apply (0 = no change, 1 = full source groove). velocity_strength: 0-1, how much velocity pattern to apply (0 = no change, 1 = full source groove). grid: Grid for computing timing offsets — "16th" or "8th".

Returns groove template stats and per-region modification counts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gridNo16th
groove_lengthNo
dest_unit_indexNo
timing_strengthNo
dest_track_indexNo
dest_region_indexNo
source_unit_indexYes
velocity_strengthNo
source_track_indexYes
source_region_indexNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior3/5

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

No annotations are provided, so the description carries full burden. It explains the extraction and application process: 'Extracts the groove template... then applies this template to destination notes — shifting their timing and scaling velocity.' However, it does not specify whether the operation is destructive or reversible, nor does it mention the effect on the source region. The mention of return values (groove template stats) adds some transparency.

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 well-structured, starting with a high-level summary, then detailing the process, and finally listing parameter explanations. While it is somewhat lengthy, every sentence adds value. A slightly more compact format (e.g., table for parameters) could improve conciseness, but it remains clear and front-loaded.

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?

Given the 10 parameters and the presence of an output schema, the description covers all parameters thoroughly and explains the non-obvious concept of groove cycle. It mentions return values. However, it lacks discussion of prerequisites (e.g., must have notes in source region) and edge cases (e.g., groove_length exceeding region length), leaving some gaps.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description fully compensates by providing detailed explanations for all 10 parameters. It includes concrete examples (groove_length: '4 = 1 bar of 4/4, 3 = waltz, 2 = half-bar'), ranges (timing_strength: 0-1), and allowed values (grid: '16th' or '8th'). This adds significant meaning beyond the schema's titles and defaults.

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 clearly states the tool's purpose: 'Transfer groove (timing + velocity feel) from a source region to a destination region.' It distinguishes this from copying notes by explicitly stating 'This is NOT copying notes — it transfers the *feel*.' The example of applying a 1-bar drum groove to a 4-bar pattern further clarifies the scope.

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 on when to use this tool by explaining the concept of groove transfer and contrasting it with note copying. It gives an example scenario (1-bar groove to 4-bar pattern). However, it does not explicitly list alternatives or state when not to use it relative to sibling tools like apply_swing or humanize_notes.

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-team/opendaw-mcp'

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