Skip to main content
Glama

mcp_opendaw_thin_notes

Thin out dense MIDI notes to produce cleaner, more musical patterns. Use interval, velocity threshold, or random strategies to remove unwanted notes while preserving strong beats.

Instructions

Thin out notes in a region — reduce note density for cleaner patterns.

After AI generation, transcription, or dense arrangement, MIDI can be cluttered with too many notes. This tool selectively removes notes to clean up the pattern while preserving musical intent.

Three strategies:

  • "interval" — keep every Nth note (sorted by position). interval=2 keeps every 2nd note, interval=3 keeps every 3rd. Creates space.

  • "velocity_threshold" — remove notes below a velocity threshold. Cleans up ghost notes from transcription or AI generation.

  • "random" — probabilistic removal. random_chance=0.3 means 30% of notes are removed at random. Creates organic variation.

preserve_strong_beats: When True, notes on strong beats (beat 1 and 3 in 4/4) are never removed, regardless of strategy. This maintains the rhythmic foundation while thinning fills and embellishments.

unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). strategy: "interval", "velocity_threshold", or "random". interval: For "interval" strategy — keep every Nth note (2=halve, 3=third). Must be 2-16. velocity_threshold: For "velocity_threshold" strategy — remove notes with velocity below this value (0.0-1.0, default 0.3). random_chance: For "random" strategy — probability of removing each note (0.0-1.0, default 0.3 = 30% removed). preserve_strong_beats: Keep notes on beat 1 and 3 (0 and 1920 PPQN in 4/4).

Returns per-track original count, removed count, remaining count.

Example:

Halve note density — keep every 2nd note

thin_notes(unit_index=0, track_index=0, strategy="interval", interval=2)

Remove ghost notes below velocity 0.25

thin_notes(unit_index=0, track_index=0, strategy="velocity_threshold", velocity_threshold=0.25)

Random 40% thinning for organic variation

thin_notes(unit_index=0, track_index=0, strategy="random", random_chance=0.4)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
intervalNo
strategyNointerval
unit_indexNo
track_indexNo
region_indexNo
random_chanceNo
velocity_thresholdNo
preserve_strong_beatsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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

With no annotations provided, the description takes on the full burden of behavioral disclosure. It clearly states that notes are selectively removed, explains the three removal strategies in detail, and mentions the return counts. It does not explicitly warn that the operation is destructive or irreversible, but the removal semantics are evident.

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

Conciseness5/5

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

The description is long but perfectly structured: a clear summary, strategy breakdown, parameter list, and concrete examples. Every sentence adds value, and the use of bullet points and formatting makes it scannable. No redundant or filler content.

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

Completeness5/5

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

For a tool with 8 parameters, 3 strategies, no annotations, and no schema descriptions, the description is fully complete. It covers purpose, strategies, parameter semantics, default behaviors, strong-beat preservation, and return values. The examples further illustrate real usage. Nothing essential is missing.

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% coverage (no property descriptions), so the description must compensate fully — and it does. Every parameter is explained with types, defaults, value ranges, and context (e.g., 'interval: keep every Nth note (2=halve, 3=third). Must be 2-16'). Examples show parameter usage in practice.

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: 'Thin out notes in a region — reduce note density for cleaner patterns.' It clearly distinguishes this tool from other MIDI manipulation tools by focusing on density reduction, and explains the use case after AI generation, transcription, or dense arrangement. The three strategies further clarify its unique purpose.

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 gives clear context for when to use the tool: after AI generation, transcription, or dense arrangement to clean up cluttered patterns. It also explains each strategy's intended use ('Creates space', 'Cleans up ghost notes', 'Creates organic variation'). However, it does not explicitly mention alternative tools or exclusions, so it misses the top score.

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