Analyze Voice Leading
Tool name: analyze-voice-leading
Compares two chord voicings (paired strictly by index) and flags parallel 5ths/octaves and leaps > octave.
Annotations
Section titled “Annotations”| Hint | Value |
|---|---|
| readOnlyHint | ✓ |
| idempotentHint | ✓ |
| destructiveHint | — |
| openWorldHint | — |
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "from": { "type": "object", "properties": { "chord": { "type": "string", "minLength": 1, "description": "Chord symbol for context." }, "voicing": { "minItems": 1, "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Notes in scientific pitch notation (e.g. [\"C4\",\"E4\",\"G4\"])." } }, "required": [ "chord", "voicing" ], "additionalProperties": false }, "to": { "type": "object", "properties": { "chord": { "type": "string", "minLength": 1, "description": "Chord symbol for context." }, "voicing": { "minItems": 1, "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Notes in scientific pitch notation (e.g. [\"C4\",\"E4\",\"G4\"])." } }, "required": [ "chord", "voicing" ], "additionalProperties": false } }, "required": [ "from", "to" ], "additionalProperties": false}Output
Section titled “Output”Returned as structuredContent. The text rendering is a short human-readable summary.
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "perVoice": { "type": "array", "items": { "type": "object", "properties": { "from": { "type": "string" }, "to": { "type": "string" }, "semitones": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "direction": { "type": "string", "enum": [ "up", "down", "static" ] } }, "required": [ "from", "to", "semitones", "direction" ], "additionalProperties": false }, "description": "Per-voice motion, paired by index." }, "warnings": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "parallel-fifths" }, "voices": { "type": "array", "prefixItems": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } ] } }, "required": [ "type", "voices" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "parallel-octaves" }, "voices": { "type": "array", "prefixItems": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } ] } }, "required": [ "type", "voices" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "large-leap" }, "voice": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "semitones": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": [ "type", "voice", "semitones" ], "additionalProperties": false } ] }, "description": "Voice-leading warnings: parallel 5ths/octaves and leaps > octave." } }, "required": [ "perVoice", "warnings" ], "additionalProperties": false}