Skip to main content
Glama

Play Sheet Music

play-sheet-music
Read-only

Compose and play sheet music with visual notation, multi-instrument audio, and style presets. Write ABC notation for melodies, arrangements, harmonized pieces, or well-known tunes. Add a style (rock, jazz, bossa, waltz, folk...) for automatic drums, bass, and chord accompaniment. Returns a parse-status confirmation and renders the player; it does not return raw audio. Use get-music-guide for genre templates, instrument lists, and ABC syntax reference.

The music player renders inline with interactive playback controls.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
styleNoAccompaniment style. Adds drums, bass, and chord patterns automatically. Your ABC needs chord symbols ("C", "Am") for accompaniment to work. Options: rock, jazz, bossa, waltz, march, reggae, folk, classical.
swingNoSwing as the share of the beat given to its first half. 50 = straight, 60 ≈ 3:2, 66 = triplet swing, 75 = maximum (dotted eighth + sixteenth). Anything at or below 50 is treated as no swing. Only takes effect in an x/4 or x/8 meter.
tempoNoTempo in BPM (40-240). Overrides Q: in ABC notation.
titleNoPiece title (overrides T: in ABC). Shown in the widget header and used as the filename stem for the WAV/MIDI downloads.
drumIntroNoBars of count-in before the melody starts (0-8). Needs a style preset — the count-in is played by that style's drum kit, so without a style you get silent bars instead.
transposeNoTranspose by semitones (-12 to 12). Positive=higher, negative=lower. Rewrites the notation and the key signature, so the printed score matches what plays.
instrumentNoDefault instrument for the main voice — any of the 128 General MIDI names (e.g. 'Flute', 'Cello', 'Banjo', 'Alto Sax'). Matching is fuzzy and picks the lowest GM program among the hits, so 'sax' gives Soprano Sax; the result text names what you actually got whenever it isn't what you asked for. Use get-music-guide with topic 'instruments' for the full list, or %%MIDI program N in the ABC to set a program per voice.
abcNotationNoABC notation string. Include chord symbols ("C", "Am7") above notes for auto-accompaniment with style presets.X:1 T:Twinkle, Twinkle Little Star M:4/4 L:1/4 K:C C C G G | A A G2 | F F E E | D D C2 | G G F F | E E D2 | G G F F | E E D2 | C C G G | A A G2 | F F E E | D D C2 |

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / abcNotation / maxLength
      Added value: +65536
    • addedInput schema / properties / drumIntro
      Added value: +{
      +  "description": "Bars of count-in before the melody starts (0-8). Needs a style preset — the count-in is played by that style's drum kit, so without a style you get silent bars instead.",
      +  "maximum": 8,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / instrument / description
      Previous value: -"Default instrument (e.g. 'Flute', 'Cello', 'Acoustic Grand Piano', 'Alto Sax'). Use get-music-guide with topic 'instruments' for the full list."New value: +"Default instrument for the main voice — any of the 128 General MIDI names (e.g. 'Flute', 'Cello', 'Banjo', 'Alto Sax'). Matching is fuzzy and picks the lowest GM program among the hits, so 'sax' gives Soprano Sax; the result text names what you actually got whenever it isn't what you asked for. Use get-music-guide with topic 'instruments' for the full list, or %%MIDI program N in the ABC to set a program per voice."
    • changedInput schema / properties / swing / description
      Previous value: -"Swing percentage (0-100). 0=straight, 33=light swing, 66=heavy swing. Great for jazz and blues."New value: +"Swing as the share of the beat given to its first half. 50 = straight, 60 ≈ 3:2, 66 = triplet swing, 75 = maximum (dotted eighth + sixteenth). Anything at or below 50 is treated as no swing. Only takes effect in an x/4 or x/8 meter."
    • changedInput schema / properties / swing / maximum
      Previous value: -100New value: +75
    • changedInput schema / properties / title / description
      Previous value: -"Piece title (overrides T: in ABC). Displayed in the widget header."New value: +"Piece title (overrides T: in ABC). Shown in the widget header and used as the filename stem for the WAV/MIDI downloads."
    • changedInput schema / properties / transpose / description
      Previous value: -"Transpose by semitones (-12 to 12). Positive=higher, negative=lower."New value: +"Transpose by semitones (-12 to 12). Positive=higher, negative=lower. Rewrites the notation and the key signature, so the printed score matches what plays."
    • changedInput schema / properties / transpose / type
      Previous value: -"number"New value: +"integer"
  2. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the readOnly hint, the description discloses several behaviors: it rewrites notation and key signature on transpose, uses fuzzy matching for instrument selection and names the actual result, and explains that drumIntro produces silent bars without a style. It also clarifies that it returns a parse confirmation and renders inline, not raw audio.

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 structured into two clear paragraphs and covers key functionality without being excessively verbose. It includes some redundancy (e.g., 'renders the player' and 'renders inline with interactive playback controls') but remains readable and informative.

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?

The description explains the return value (parse confirmation and inline player) and explicitly states that it does not return raw audio, which is critical for expectation setting. It also points to get-music-guide for reference and covers all parameters via the schema, so the context is largely complete. It does not mention error conditions or edge cases, but that is not critical for this tool.

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?

The schema already provides 100% coverage with detailed descriptions for all 8 parameters, including defaults, ranges, and functional notes (e.g., style needing chord symbols). The tool description does not add significant additional parameter-specific semantics beyond what is in the schema, so a baseline score of 3 is appropriate.

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 that the tool composes and plays sheet music from ABC notation, with visual notation, multi-instrument audio, and style presets. It also specifies the output behavior (parse confirmation and inline player) and explicitly notes it does not return raw audio, distinguishing it from audio-returning tools.

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 explicit guidance to use get-music-guide for genre templates, instrument lists, and ABC syntax reference, indicating when not to use this tool for reference. It does not contrast with all sibling tools (e.g., play-live-pattern) but the detailed functionality and note about not returning raw audio provide sufficient context.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.