Tool tree
gradeNot graded
get_parameter_referenceAnswer
Reference for synth, drum, project and patch parameters, lookup tables, mod matrix, macros and the song format. Call with no section for the section list and best practices; call with a section before using complex tools so parameter names are exact. Sections: synth, patch, drums, project, lookup_tables, mod_matrix, macros, song_format, best_practices.
View tool JSON
{
"name": "get_parameter_reference",
"kind": "answer",
"impl": "imperative",
"description": "Reference for synth, drum, project and patch parameters, lookup tables, mod matrix, macros and the song format. Call with no section for the section list and best practices; call with a section before using complex tools so parameter names are exact. Sections: synth, patch, drums, project, lookup_tables, mod_matrix, macros, song_format, best_practices.",
"inputSchema": {
"type": "object",
"properties": {
"section": {
"type": "string",
"description": "Section name, or empty for the overview.",
"enum": [
"",
"synth",
"patch",
"drums",
"project",
"lookup_tables",
"mod_matrix",
"macros",
"song_format",
"best_practices"
],
"default": ""
}
},
"required": [],
"additionalProperties": false
}
}load_songAction
Load a complete song (patterns, sounds, FX, mixer, song order) into the project, replacing it. The song format is the hardware server's: see get_parameter_reference("song_format"). CRITICAL: all patterns share one length (16 or 32); include "sounds" for both synths; synth p-locks use the step/track "macros" key, drum automation the track "params" key; mod matrix names are space separated ("filter frequency") while macro targets use snake_case parameter names ("filter_frequency"); gate max 16. Pattern names map to slots 1-8 and the "song" list to scenes. Then start_sequencer to listen and export_song_to_project to save.
View tool JSON
{
"name": "load_song",
"kind": "act",
"impl": "imperative",
"description": "Load a complete song (patterns, sounds, FX, mixer, song order) into the project, replacing it. The song format is the hardware server's: see get_parameter_reference(\"song_format\"). CRITICAL: all patterns share one length (16 or 32); include \"sounds\" for both synths; synth p-locks use the step/track \"macros\" key, drum automation the track \"params\" key; mod matrix names are space separated (\"filter frequency\") while macro targets use snake_case parameter names (\"filter_frequency\"); gate max 16. Pattern names map to slots 1-8 and the \"song\" list to scenes. Then start_sequencer to listen and export_song_to_project to save.",
"inputSchema": {
"type": "object",
"properties": {
"song": {
"description": "Complete song description for the Circuit Tracks.\n\nDefines patterns, sounds, FX, mixer, and song structure.\nUse ``get_parameter_reference`` to look up valid synth parameter names,\nmod matrix sources/destinations, and macro destinations.",
"properties": {
"name": {
"default": "Song",
"description": "Song/project name.",
"title": "Name",
"type": "string"
},
"bpm": {
"default": 120,
"description": "Tempo in BPM.",
"maximum": 240,
"minimum": 40,
"title": "Bpm",
"type": "integer"
},
"swing": {
"default": 50,
"description": "Swing amount.",
"maximum": 80,
"minimum": 20,
"title": "Swing",
"type": "integer"
},
"color": {
"default": 8,
"description": "Pattern color index.",
"maximum": 13,
"minimum": 0,
"title": "Color",
"type": "integer"
},
"scale": {
"$ref": "#/$defs/ScaleConfig"
},
"sounds": {
"anyOf": [
{
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthSoundConfig"
},
{
"$ref": "#/$defs/DrumSoundConfig"
}
]
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track sound/patch configuration.",
"title": "Sounds"
},
"fx": {
"anyOf": [
{
"$ref": "#/$defs/FXConfig"
},
{
"type": "null"
}
],
"default": null
},
"mixer": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/MixerTrackConfig"
},
"propertyNames": {
"enum": [
"synth1",
"synth2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Mixer"
},
"patterns": {
"additionalProperties": {
"$ref": "#/$defs/PatternConfig"
},
"description": "Named patterns. At least one required.",
"minProperties": 1,
"title": "Patterns",
"type": "object"
},
"song": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 16,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Ordered list of pattern names for playback (max 16 scenes).",
"title": "Song"
}
},
"required": [
"patterns"
],
"title": "SongSchema",
"type": "object"
}
},
"required": [
"song"
],
"additionalProperties": false,
"$defs": {
"DelayConfig": {
"description": "Delay engine parameters.",
"properties": {
"time": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Time"
},
"sync": {
"anyOf": [
{
"maximum": 35,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Sync"
},
"feedback": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Feedback"
},
"width": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Width"
},
"lr_ratio": {
"anyOf": [
{
"maximum": 12,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Lr Ratio"
},
"slew": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Slew"
}
},
"title": "DelayConfig",
"type": "object"
},
"DrumSoundConfig": {
"description": "Drum track sound configuration.",
"properties": {
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sample/patch index.",
"title": "Sample"
},
"level": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Level"
},
"pitch": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"distortion": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Distortion"
},
"eq": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Eq"
},
"pan": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pan"
}
},
"title": "DrumSoundConfig",
"type": "object"
},
"DrumStepConfig": {
"additionalProperties": false,
"description": "A single step in a drum track.",
"properties": {
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Probability"
},
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step sample override.",
"title": "Sample"
},
"micro_step": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Micro-step offset within the step (0-5).",
"title": "Micro Step"
}
},
"title": "DrumStepConfig",
"type": "object"
},
"DrumTrackConfig": {
"additionalProperties": false,
"description": "Track data for a drum track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/DrumStepConfig"
},
"description": "Step index (as string) -> step data.",
"title": "Steps",
"type": "object"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"pitch",
"decay",
"distortion",
"eq",
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level parameter automation. Keys: 'pitch', 'decay', 'distortion', 'eq', 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Params"
}
},
"title": "DrumTrackConfig",
"type": "object"
},
"FXConfig": {
"description": "Global FX configuration.",
"properties": {
"reverb": {
"anyOf": [
{
"$ref": "#/$defs/ReverbConfig"
},
{
"type": "null"
}
],
"default": null
},
"delay": {
"anyOf": [
{
"$ref": "#/$defs/DelayConfig"
},
{
"type": "null"
}
],
"default": null
},
"reverb_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Reverb preset by name or index (0-7).",
"title": "Reverb Preset"
},
"delay_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay preset by name or index (0-15).",
"title": "Delay Preset"
},
"reverb_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track reverb send level.",
"title": "Reverb Sends"
},
"delay_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track delay send level.",
"title": "Delay Sends"
},
"sidechain": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/SidechainConfig"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Sidechain"
}
},
"title": "FXConfig",
"type": "object"
},
"MacroConfig": {
"description": "Configuration for one macro knob (1-8).",
"properties": {
"targets": {
"items": {
"$ref": "#/$defs/MacroTarget"
},
"title": "Targets",
"type": "array"
},
"position": {
"default": 0,
"description": "Initial knob position.",
"maximum": 127,
"minimum": 0,
"title": "Position",
"type": "integer"
}
},
"required": [
"targets"
],
"title": "MacroConfig",
"type": "object"
},
"MacroTarget": {
"description": "A single destination routed to a macro knob.",
"properties": {
"dest": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name (e.g. 'filter_frequency') or macro destination index (0-70). Use get_parameter_reference for the full list.",
"title": "Dest"
},
"start": {
"default": 0,
"description": "Value when knob is at 0.",
"maximum": 127,
"minimum": 0,
"title": "Start",
"type": "integer"
},
"end": {
"default": 127,
"description": "Value when knob is at 127.",
"maximum": 127,
"minimum": 0,
"title": "End",
"type": "integer"
},
"depth": {
"default": 127,
"description": "Modulation depth. 127=full, 64=none.",
"maximum": 127,
"minimum": 0,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "MacroTarget",
"type": "object"
},
"MixerTrackConfig": {
"description": "Mixer settings for a synth track.",
"properties": {
"level": {
"default": 100,
"maximum": 127,
"minimum": 0,
"title": "Level",
"type": "integer"
},
"pan": {
"default": 64,
"maximum": 127,
"minimum": 0,
"title": "Pan",
"type": "integer"
}
},
"title": "MixerTrackConfig",
"type": "object"
},
"ModMatrixEntry": {
"description": "A single mod-matrix routing slot.",
"properties": {
"source1": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source1"
},
"source2": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source2"
},
"dest": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
}
],
"description": "Destination parameter (use space-separated names, NOT snake_case).",
"title": "Dest"
},
"destination": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for 'dest'. Either 'dest' or 'destination' may be used.",
"title": "Destination"
},
"depth": {
"default": 0,
"description": "Signed depth: -64 to +63. 0 = no modulation.",
"maximum": 63,
"minimum": -64,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "ModMatrixEntry",
"type": "object"
},
"PatternConfig": {
"description": "A named pattern containing track data.",
"properties": {
"length": {
"default": 16,
"description": "Pattern length in steps.",
"maximum": 32,
"minimum": 1,
"title": "Length",
"type": "integer"
},
"tracks": {
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthTrackConfig"
},
{
"$ref": "#/$defs/DrumTrackConfig"
}
]
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"title": "Tracks",
"type": "object"
}
},
"title": "PatternConfig",
"type": "object"
},
"ReverbConfig": {
"description": "Reverb engine parameters.",
"properties": {
"type": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Type"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"damping": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Damping"
}
},
"title": "ReverbConfig",
"type": "object"
},
"ScaleConfig": {
"description": "Musical scale applied to synth/MIDI note quantization.",
"properties": {
"root": {
"default": "C",
"enum": [
"C",
"C#",
"Db",
"D",
"D#",
"Eb",
"E",
"F",
"F#",
"Gb",
"G",
"G#",
"Ab",
"A",
"A#",
"Bb",
"B"
],
"title": "Root",
"type": "string"
},
"type": {
"default": "chromatic",
"enum": [
"natural minor",
"minor",
"major",
"dorian",
"phrygian",
"mixolydian",
"melodic minor",
"harmonic minor",
"bebop dorian",
"blues",
"minor pentatonic",
"hungarian minor",
"ukranian dorian",
"marva",
"todi",
"whole tone",
"chromatic"
],
"title": "Type",
"type": "string"
}
},
"title": "ScaleConfig",
"type": "object"
},
"SidechainConfig": {
"description": "Sidechain compressor settings for a synth or MIDI track.",
"properties": {
"preset": {
"anyOf": [
{
"maximum": 7,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sidechain preset (1-7). Required to activate sidechain on hardware. 0 or omit = OFF.",
"title": "Preset"
},
"source": {
"default": "off",
"enum": [
"drum1",
"drum2",
"drum3",
"drum4",
"off"
],
"title": "Source",
"type": "string"
},
"attack": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Attack"
},
"hold": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hold"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"depth": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Depth"
}
},
"title": "SidechainConfig",
"type": "object"
},
"SynthSoundConfig": {
"description": "Synth engine patch configuration (synth1, synth2).",
"properties": {
"preset": {
"anyOf": [
{
"enum": [
"pad",
"bass",
"lead",
"pluck"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Base preset to start from before applying params.",
"title": "Preset"
},
"name": {
"anyOf": [
{
"maxLength": 16,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Patch name.",
"title": "Name"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"type": "integer"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Synth parameter name -> value (0-127). Use get_parameter_reference for names.",
"title": "Params"
},
"mod_matrix": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ModMatrixEntry"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Mod matrix routing slots.",
"title": "Mod Matrix"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/MacroConfig"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Macro knob definitions. Keys are '1' through '8'.",
"title": "Macros"
}
},
"title": "SynthSoundConfig",
"type": "object"
},
"SynthStepConfig": {
"additionalProperties": false,
"description": "A single step in a synth or MIDI track.\n\nOnly these fields are allowed — no others. Use 'macros' for p-locks, NOT 'params' or 'p-locks'.",
"properties": {
"note": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "MIDI note number. Mutually exclusive with 'notes'.",
"title": "Note"
},
"notes": {
"anyOf": [
{
"items": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple MIDI notes for polyphony. Mutually exclusive with 'note'.",
"title": "Notes"
},
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"gate": {
"anyOf": [
{
"maximum": 16,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Gate length in steps (e.g. 0.5 = half step, 2.0 = two steps). Max 16.",
"title": "Gate"
},
"tie": {
"default": false,
"description": "Tie forward — sustain this note into the next triggered step.",
"title": "Tie",
"type": "boolean"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Playback probability, 0.0 to 1.0.",
"title": "Probability"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step macro p-locks. Keys are macro numbers '1'-'8', values are 0-127. These lock the macro knob position for this step.",
"title": "Macros"
}
},
"title": "SynthStepConfig",
"type": "object"
},
"SynthTrackConfig": {
"additionalProperties": false,
"description": "Track data for a synth or MIDI track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/SynthStepConfig"
},
"description": "Step index (as string, e.g. '0', '4') -> step data.",
"title": "Steps",
"type": "object"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level macro automation. Keys are macro numbers '1'-'8'. Values are {step_position: value} dicts. Float positions supported for micro-step resolution (e.g. '2.5').",
"title": "Macros"
},
"mixer": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level mixer automation. Keys: 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Mixer"
}
},
"title": "SynthTrackConfig",
"type": "object"
}
}
}
}read_projectAnswer
Read the live project back in the load_song song format (patterns by name where known, sounds, fx, mixer, scale, song order): what the user played or edited on the pads, ready to modify and load_song again.
View tool JSON
{
"name": "read_project",
"kind": "answer",
"impl": "imperative",
"description": "Read the live project back in the load_song song format (patterns by name where known, sounds, fx, mixer, scale, song order): what the user played or edited on the pads, ready to modify and load_song again.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}set_patternAction
Define or replace one named pattern (a slot 1-8 on every track) with song-format track configs: {"synth1": {"steps": {"0": {"note": 60, "gate": 1}}}, "drum1": {"steps": {"0": {}, "4": {}}}}. Tracks not given are silent in this pattern. Length must match the other patterns (all 16 or all 32). When the sequencer is stopped the new pattern is selected on all tracks.
View tool JSON
{
"name": "set_pattern",
"kind": "act",
"impl": "imperative",
"description": "Define or replace one named pattern (a slot 1-8 on every track) with song-format track configs: {\"synth1\": {\"steps\": {\"0\": {\"note\": 60, \"gate\": 1}}}, \"drum1\": {\"steps\": {\"0\": {}, \"4\": {}}}}. Tracks not given are silent in this pattern. Length must match the other patterns (all 16 or all 32). When the sequencer is stopped the new pattern is selected on all tracks.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pattern name, e.g. \"intro\".",
"minLength": 1,
"maxLength": 32
},
"tracks": {
"type": "object",
"minProperties": 1,
"propertyNames": {
"enum": [
"synth1",
"synth2",
"midi1",
"midi2",
"drum1",
"drum2",
"drum3",
"drum4"
]
},
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthTrackConfig"
},
{
"$ref": "#/$defs/DrumTrackConfig"
}
]
},
"description": "track name -> track config."
},
"length": {
"type": "integer",
"minimum": 1,
"maximum": 32,
"description": "Pattern length in steps (default 16)."
}
},
"required": [
"name",
"tracks"
],
"additionalProperties": false,
"$defs": {
"DelayConfig": {
"description": "Delay engine parameters.",
"properties": {
"time": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Time"
},
"sync": {
"anyOf": [
{
"maximum": 35,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Sync"
},
"feedback": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Feedback"
},
"width": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Width"
},
"lr_ratio": {
"anyOf": [
{
"maximum": 12,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Lr Ratio"
},
"slew": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Slew"
}
},
"title": "DelayConfig",
"type": "object"
},
"DrumSoundConfig": {
"description": "Drum track sound configuration.",
"properties": {
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sample/patch index.",
"title": "Sample"
},
"level": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Level"
},
"pitch": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"distortion": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Distortion"
},
"eq": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Eq"
},
"pan": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pan"
}
},
"title": "DrumSoundConfig",
"type": "object"
},
"DrumStepConfig": {
"additionalProperties": false,
"description": "A single step in a drum track.",
"properties": {
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Probability"
},
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step sample override.",
"title": "Sample"
},
"micro_step": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Micro-step offset within the step (0-5).",
"title": "Micro Step"
}
},
"title": "DrumStepConfig",
"type": "object"
},
"DrumTrackConfig": {
"additionalProperties": false,
"description": "Track data for a drum track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/DrumStepConfig"
},
"description": "Step index (as string) -> step data.",
"title": "Steps",
"type": "object"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"pitch",
"decay",
"distortion",
"eq",
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level parameter automation. Keys: 'pitch', 'decay', 'distortion', 'eq', 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Params"
}
},
"title": "DrumTrackConfig",
"type": "object"
},
"FXConfig": {
"description": "Global FX configuration.",
"properties": {
"reverb": {
"anyOf": [
{
"$ref": "#/$defs/ReverbConfig"
},
{
"type": "null"
}
],
"default": null
},
"delay": {
"anyOf": [
{
"$ref": "#/$defs/DelayConfig"
},
{
"type": "null"
}
],
"default": null
},
"reverb_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Reverb preset by name or index (0-7).",
"title": "Reverb Preset"
},
"delay_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay preset by name or index (0-15).",
"title": "Delay Preset"
},
"reverb_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track reverb send level.",
"title": "Reverb Sends"
},
"delay_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track delay send level.",
"title": "Delay Sends"
},
"sidechain": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/SidechainConfig"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Sidechain"
}
},
"title": "FXConfig",
"type": "object"
},
"MacroConfig": {
"description": "Configuration for one macro knob (1-8).",
"properties": {
"targets": {
"items": {
"$ref": "#/$defs/MacroTarget"
},
"title": "Targets",
"type": "array"
},
"position": {
"default": 0,
"description": "Initial knob position.",
"maximum": 127,
"minimum": 0,
"title": "Position",
"type": "integer"
}
},
"required": [
"targets"
],
"title": "MacroConfig",
"type": "object"
},
"MacroTarget": {
"description": "A single destination routed to a macro knob.",
"properties": {
"dest": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name (e.g. 'filter_frequency') or macro destination index (0-70). Use get_parameter_reference for the full list.",
"title": "Dest"
},
"start": {
"default": 0,
"description": "Value when knob is at 0.",
"maximum": 127,
"minimum": 0,
"title": "Start",
"type": "integer"
},
"end": {
"default": 127,
"description": "Value when knob is at 127.",
"maximum": 127,
"minimum": 0,
"title": "End",
"type": "integer"
},
"depth": {
"default": 127,
"description": "Modulation depth. 127=full, 64=none.",
"maximum": 127,
"minimum": 0,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "MacroTarget",
"type": "object"
},
"MixerTrackConfig": {
"description": "Mixer settings for a synth track.",
"properties": {
"level": {
"default": 100,
"maximum": 127,
"minimum": 0,
"title": "Level",
"type": "integer"
},
"pan": {
"default": 64,
"maximum": 127,
"minimum": 0,
"title": "Pan",
"type": "integer"
}
},
"title": "MixerTrackConfig",
"type": "object"
},
"ModMatrixEntry": {
"description": "A single mod-matrix routing slot.",
"properties": {
"source1": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source1"
},
"source2": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source2"
},
"dest": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
}
],
"description": "Destination parameter (use space-separated names, NOT snake_case).",
"title": "Dest"
},
"destination": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for 'dest'. Either 'dest' or 'destination' may be used.",
"title": "Destination"
},
"depth": {
"default": 0,
"description": "Signed depth: -64 to +63. 0 = no modulation.",
"maximum": 63,
"minimum": -64,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "ModMatrixEntry",
"type": "object"
},
"PatternConfig": {
"description": "A named pattern containing track data.",
"properties": {
"length": {
"default": 16,
"description": "Pattern length in steps.",
"maximum": 32,
"minimum": 1,
"title": "Length",
"type": "integer"
},
"tracks": {
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthTrackConfig"
},
{
"$ref": "#/$defs/DrumTrackConfig"
}
]
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"title": "Tracks",
"type": "object"
}
},
"title": "PatternConfig",
"type": "object"
},
"ReverbConfig": {
"description": "Reverb engine parameters.",
"properties": {
"type": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Type"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"damping": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Damping"
}
},
"title": "ReverbConfig",
"type": "object"
},
"ScaleConfig": {
"description": "Musical scale applied to synth/MIDI note quantization.",
"properties": {
"root": {
"default": "C",
"enum": [
"C",
"C#",
"Db",
"D",
"D#",
"Eb",
"E",
"F",
"F#",
"Gb",
"G",
"G#",
"Ab",
"A",
"A#",
"Bb",
"B"
],
"title": "Root",
"type": "string"
},
"type": {
"default": "chromatic",
"enum": [
"natural minor",
"minor",
"major",
"dorian",
"phrygian",
"mixolydian",
"melodic minor",
"harmonic minor",
"bebop dorian",
"blues",
"minor pentatonic",
"hungarian minor",
"ukranian dorian",
"marva",
"todi",
"whole tone",
"chromatic"
],
"title": "Type",
"type": "string"
}
},
"title": "ScaleConfig",
"type": "object"
},
"SidechainConfig": {
"description": "Sidechain compressor settings for a synth or MIDI track.",
"properties": {
"preset": {
"anyOf": [
{
"maximum": 7,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sidechain preset (1-7). Required to activate sidechain on hardware. 0 or omit = OFF.",
"title": "Preset"
},
"source": {
"default": "off",
"enum": [
"drum1",
"drum2",
"drum3",
"drum4",
"off"
],
"title": "Source",
"type": "string"
},
"attack": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Attack"
},
"hold": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hold"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"depth": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Depth"
}
},
"title": "SidechainConfig",
"type": "object"
},
"SynthSoundConfig": {
"description": "Synth engine patch configuration (synth1, synth2).",
"properties": {
"preset": {
"anyOf": [
{
"enum": [
"pad",
"bass",
"lead",
"pluck"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Base preset to start from before applying params.",
"title": "Preset"
},
"name": {
"anyOf": [
{
"maxLength": 16,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Patch name.",
"title": "Name"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"type": "integer"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Synth parameter name -> value (0-127). Use get_parameter_reference for names.",
"title": "Params"
},
"mod_matrix": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ModMatrixEntry"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Mod matrix routing slots.",
"title": "Mod Matrix"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/MacroConfig"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Macro knob definitions. Keys are '1' through '8'.",
"title": "Macros"
}
},
"title": "SynthSoundConfig",
"type": "object"
},
"SynthStepConfig": {
"additionalProperties": false,
"description": "A single step in a synth or MIDI track.\n\nOnly these fields are allowed — no others. Use 'macros' for p-locks, NOT 'params' or 'p-locks'.",
"properties": {
"note": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "MIDI note number. Mutually exclusive with 'notes'.",
"title": "Note"
},
"notes": {
"anyOf": [
{
"items": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple MIDI notes for polyphony. Mutually exclusive with 'note'.",
"title": "Notes"
},
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"gate": {
"anyOf": [
{
"maximum": 16,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Gate length in steps (e.g. 0.5 = half step, 2.0 = two steps). Max 16.",
"title": "Gate"
},
"tie": {
"default": false,
"description": "Tie forward — sustain this note into the next triggered step.",
"title": "Tie",
"type": "boolean"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Playback probability, 0.0 to 1.0.",
"title": "Probability"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step macro p-locks. Keys are macro numbers '1'-'8', values are 0-127. These lock the macro knob position for this step.",
"title": "Macros"
}
},
"title": "SynthStepConfig",
"type": "object"
},
"SynthTrackConfig": {
"additionalProperties": false,
"description": "Track data for a synth or MIDI track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/SynthStepConfig"
},
"description": "Step index (as string, e.g. '0', '4') -> step data.",
"title": "Steps",
"type": "object"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level macro automation. Keys are macro numbers '1'-'8'. Values are {step_position: value} dicts. Float positions supported for micro-step resolution (e.g. '2.5').",
"title": "Macros"
},
"mixer": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level mixer automation. Keys: 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Mixer"
}
},
"title": "SynthTrackConfig",
"type": "object"
}
}
}
}set_trackAction
Replace (default) or merge the steps of one track inside a named pattern while everything else keeps playing. steps: {"0": {"note": 48, "velocity": 110}, "8": {"notes": [48, 55]}} for synths, {"0": {}, "4": {"velocity": 80}} for drums. Track-level automation lanes are kept.
View tool JSON
{
"name": "set_track",
"kind": "act",
"impl": "imperative",
"description": "Replace (default) or merge the steps of one track inside a named pattern while everything else keeps playing. steps: {\"0\": {\"note\": 48, \"velocity\": 110}, \"8\": {\"notes\": [48, 55]}} for synths, {\"0\": {}, \"4\": {\"velocity\": 80}} for drums. Track-level automation lanes are kept.",
"inputSchema": {
"type": "object",
"properties": {
"pattern_name": {
"type": "string",
"description": "Pattern name."
},
"track": {
"type": "string",
"enum": [
"synth1",
"synth2",
"midi1",
"midi2",
"drum1",
"drum2",
"drum3",
"drum4"
],
"description": "Track name."
},
"steps": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthStepConfig"
},
{
"$ref": "#/$defs/DrumStepConfig"
}
]
},
"description": "step index (as string) -> step config; absent steps are rests."
},
"clear_existing": {
"type": "boolean",
"description": "true (default) replaces all steps of the track; false merges into them.",
"default": true
}
},
"required": [
"pattern_name",
"track",
"steps"
],
"additionalProperties": false,
"$defs": {
"DelayConfig": {
"description": "Delay engine parameters.",
"properties": {
"time": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Time"
},
"sync": {
"anyOf": [
{
"maximum": 35,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Sync"
},
"feedback": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Feedback"
},
"width": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Width"
},
"lr_ratio": {
"anyOf": [
{
"maximum": 12,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Lr Ratio"
},
"slew": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Slew"
}
},
"title": "DelayConfig",
"type": "object"
},
"DrumSoundConfig": {
"description": "Drum track sound configuration.",
"properties": {
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sample/patch index.",
"title": "Sample"
},
"level": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Level"
},
"pitch": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"distortion": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Distortion"
},
"eq": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Eq"
},
"pan": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pan"
}
},
"title": "DrumSoundConfig",
"type": "object"
},
"DrumStepConfig": {
"additionalProperties": false,
"description": "A single step in a drum track.",
"properties": {
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Probability"
},
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step sample override.",
"title": "Sample"
},
"micro_step": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Micro-step offset within the step (0-5).",
"title": "Micro Step"
}
},
"title": "DrumStepConfig",
"type": "object"
},
"DrumTrackConfig": {
"additionalProperties": false,
"description": "Track data for a drum track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/DrumStepConfig"
},
"description": "Step index (as string) -> step data.",
"title": "Steps",
"type": "object"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"pitch",
"decay",
"distortion",
"eq",
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level parameter automation. Keys: 'pitch', 'decay', 'distortion', 'eq', 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Params"
}
},
"title": "DrumTrackConfig",
"type": "object"
},
"FXConfig": {
"description": "Global FX configuration.",
"properties": {
"reverb": {
"anyOf": [
{
"$ref": "#/$defs/ReverbConfig"
},
{
"type": "null"
}
],
"default": null
},
"delay": {
"anyOf": [
{
"$ref": "#/$defs/DelayConfig"
},
{
"type": "null"
}
],
"default": null
},
"reverb_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Reverb preset by name or index (0-7).",
"title": "Reverb Preset"
},
"delay_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay preset by name or index (0-15).",
"title": "Delay Preset"
},
"reverb_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track reverb send level.",
"title": "Reverb Sends"
},
"delay_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track delay send level.",
"title": "Delay Sends"
},
"sidechain": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/SidechainConfig"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Sidechain"
}
},
"title": "FXConfig",
"type": "object"
},
"MacroConfig": {
"description": "Configuration for one macro knob (1-8).",
"properties": {
"targets": {
"items": {
"$ref": "#/$defs/MacroTarget"
},
"title": "Targets",
"type": "array"
},
"position": {
"default": 0,
"description": "Initial knob position.",
"maximum": 127,
"minimum": 0,
"title": "Position",
"type": "integer"
}
},
"required": [
"targets"
],
"title": "MacroConfig",
"type": "object"
},
"MacroTarget": {
"description": "A single destination routed to a macro knob.",
"properties": {
"dest": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name (e.g. 'filter_frequency') or macro destination index (0-70). Use get_parameter_reference for the full list.",
"title": "Dest"
},
"start": {
"default": 0,
"description": "Value when knob is at 0.",
"maximum": 127,
"minimum": 0,
"title": "Start",
"type": "integer"
},
"end": {
"default": 127,
"description": "Value when knob is at 127.",
"maximum": 127,
"minimum": 0,
"title": "End",
"type": "integer"
},
"depth": {
"default": 127,
"description": "Modulation depth. 127=full, 64=none.",
"maximum": 127,
"minimum": 0,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "MacroTarget",
"type": "object"
},
"MixerTrackConfig": {
"description": "Mixer settings for a synth track.",
"properties": {
"level": {
"default": 100,
"maximum": 127,
"minimum": 0,
"title": "Level",
"type": "integer"
},
"pan": {
"default": 64,
"maximum": 127,
"minimum": 0,
"title": "Pan",
"type": "integer"
}
},
"title": "MixerTrackConfig",
"type": "object"
},
"ModMatrixEntry": {
"description": "A single mod-matrix routing slot.",
"properties": {
"source1": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source1"
},
"source2": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source2"
},
"dest": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
}
],
"description": "Destination parameter (use space-separated names, NOT snake_case).",
"title": "Dest"
},
"destination": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for 'dest'. Either 'dest' or 'destination' may be used.",
"title": "Destination"
},
"depth": {
"default": 0,
"description": "Signed depth: -64 to +63. 0 = no modulation.",
"maximum": 63,
"minimum": -64,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "ModMatrixEntry",
"type": "object"
},
"PatternConfig": {
"description": "A named pattern containing track data.",
"properties": {
"length": {
"default": 16,
"description": "Pattern length in steps.",
"maximum": 32,
"minimum": 1,
"title": "Length",
"type": "integer"
},
"tracks": {
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthTrackConfig"
},
{
"$ref": "#/$defs/DrumTrackConfig"
}
]
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"title": "Tracks",
"type": "object"
}
},
"title": "PatternConfig",
"type": "object"
},
"ReverbConfig": {
"description": "Reverb engine parameters.",
"properties": {
"type": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Type"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"damping": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Damping"
}
},
"title": "ReverbConfig",
"type": "object"
},
"ScaleConfig": {
"description": "Musical scale applied to synth/MIDI note quantization.",
"properties": {
"root": {
"default": "C",
"enum": [
"C",
"C#",
"Db",
"D",
"D#",
"Eb",
"E",
"F",
"F#",
"Gb",
"G",
"G#",
"Ab",
"A",
"A#",
"Bb",
"B"
],
"title": "Root",
"type": "string"
},
"type": {
"default": "chromatic",
"enum": [
"natural minor",
"minor",
"major",
"dorian",
"phrygian",
"mixolydian",
"melodic minor",
"harmonic minor",
"bebop dorian",
"blues",
"minor pentatonic",
"hungarian minor",
"ukranian dorian",
"marva",
"todi",
"whole tone",
"chromatic"
],
"title": "Type",
"type": "string"
}
},
"title": "ScaleConfig",
"type": "object"
},
"SidechainConfig": {
"description": "Sidechain compressor settings for a synth or MIDI track.",
"properties": {
"preset": {
"anyOf": [
{
"maximum": 7,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sidechain preset (1-7). Required to activate sidechain on hardware. 0 or omit = OFF.",
"title": "Preset"
},
"source": {
"default": "off",
"enum": [
"drum1",
"drum2",
"drum3",
"drum4",
"off"
],
"title": "Source",
"type": "string"
},
"attack": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Attack"
},
"hold": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hold"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"depth": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Depth"
}
},
"title": "SidechainConfig",
"type": "object"
},
"SynthSoundConfig": {
"description": "Synth engine patch configuration (synth1, synth2).",
"properties": {
"preset": {
"anyOf": [
{
"enum": [
"pad",
"bass",
"lead",
"pluck"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Base preset to start from before applying params.",
"title": "Preset"
},
"name": {
"anyOf": [
{
"maxLength": 16,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Patch name.",
"title": "Name"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"type": "integer"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Synth parameter name -> value (0-127). Use get_parameter_reference for names.",
"title": "Params"
},
"mod_matrix": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ModMatrixEntry"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Mod matrix routing slots.",
"title": "Mod Matrix"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/MacroConfig"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Macro knob definitions. Keys are '1' through '8'.",
"title": "Macros"
}
},
"title": "SynthSoundConfig",
"type": "object"
},
"SynthStepConfig": {
"additionalProperties": false,
"description": "A single step in a synth or MIDI track.\n\nOnly these fields are allowed — no others. Use 'macros' for p-locks, NOT 'params' or 'p-locks'.",
"properties": {
"note": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "MIDI note number. Mutually exclusive with 'notes'.",
"title": "Note"
},
"notes": {
"anyOf": [
{
"items": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple MIDI notes for polyphony. Mutually exclusive with 'note'.",
"title": "Notes"
},
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"gate": {
"anyOf": [
{
"maximum": 16,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Gate length in steps (e.g. 0.5 = half step, 2.0 = two steps). Max 16.",
"title": "Gate"
},
"tie": {
"default": false,
"description": "Tie forward — sustain this note into the next triggered step.",
"title": "Tie",
"type": "boolean"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Playback probability, 0.0 to 1.0.",
"title": "Probability"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step macro p-locks. Keys are macro numbers '1'-'8', values are 0-127. These lock the macro knob position for this step.",
"title": "Macros"
}
},
"title": "SynthStepConfig",
"type": "object"
},
"SynthTrackConfig": {
"additionalProperties": false,
"description": "Track data for a synth or MIDI track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/SynthStepConfig"
},
"description": "Step index (as string, e.g. '0', '4') -> step data.",
"title": "Steps",
"type": "object"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level macro automation. Keys are macro numbers '1'-'8'. Values are {step_position: value} dicts. Float positions supported for micro-step resolution (e.g. '2.5').",
"title": "Macros"
},
"mixer": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level mixer automation. Keys: 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Mixer"
}
},
"title": "SynthTrackConfig",
"type": "object"
}
}
}
}get_patternAnswer
Read one named pattern in song format (length and per-track steps / automation).
View tool JSON
{
"name": "get_pattern",
"kind": "answer",
"impl": "imperative",
"description": "Read one named pattern in song format (length and per-track steps / automation).",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pattern name."
}
},
"required": [
"name"
],
"additionalProperties": false
}
}list_patternsAnswer
Named patterns with their slots, unnamed slots that hold data, the current song order and the pattern length in use.
View tool JSON
{
"name": "list_patterns",
"kind": "answer",
"impl": "imperative",
"description": "Named patterns with their slots, unnamed slots that hold data, the current song order and the pattern length in use.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}clear_patternAction
Clear every track of a named pattern (the name keeps its slot).
View tool JSON
{
"name": "clear_pattern",
"kind": "act",
"impl": "imperative",
"description": "Clear every track of a named pattern (the name keeps its slot).",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pattern name."
}
},
"required": [
"name"
],
"additionalProperties": false
}
}set_songAction
Set the song order: a list of pattern names becomes scenes 1..n and a scene chain that loops as a whole (like the hardware). While playing it takes over at the end of the current Drum 1 pattern. Example: ["intro", "verse", "verse", "chorus"].
View tool JSON
{
"name": "set_song",
"kind": "act",
"impl": "imperative",
"description": "Set the song order: a list of pattern names becomes scenes 1..n and a scene chain that loops as a whole (like the hardware). While playing it takes over at the end of the current Drum 1 pattern. Example: [\"intro\", \"verse\", \"verse\", \"chorus\"].",
"inputSchema": {
"type": "object",
"properties": {
"patterns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 16,
"description": "Pattern names from load_song / set_pattern, in playback order."
}
},
"required": [
"patterns"
],
"additionalProperties": false
}
}queue_patternsAction
Append pattern names to the song order (see set_song).
View tool JSON
{
"name": "queue_patterns",
"kind": "act",
"impl": "imperative",
"description": "Append pattern names to the song order (see set_song).",
"inputSchema": {
"type": "object",
"properties": {
"patterns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 16,
"description": "Pattern names from load_song / set_pattern, in playback order."
}
},
"required": [
"patterns"
],
"additionalProperties": false
}
}clear_queueAction
Drop the song order; the current pattern selection loops.
View tool JSON
{
"name": "clear_queue",
"kind": "act",
"impl": "imperative",
"description": "Drop the song order; the current pattern selection loops.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}get_sequencer_statusAnswer
Current state: playing, BPM, swing, audio unlock state, project name and slot, per-track pattern/step/mute/chain, scene chain, loaded synth patches, drum samples, and the pattern names known from load_song.
View tool JSON
{
"name": "get_sequencer_status",
"kind": "answer",
"impl": "imperative",
"description": "Current state: playing, BPM, swing, audio unlock state, project name and slot, per-track pattern/step/mute/chain, scene chain, loaded synth patches, drum samples, and the pattern names known from load_song.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}start_sequencerAction
Start playback. Optionally select a named pattern (from load_song) on every track first and/or set the tempo. Loops the current pattern selection or scene chain until stop_sequencer.
View tool JSON
{
"name": "start_sequencer",
"kind": "act",
"impl": "imperative",
"description": "Start playback. Optionally select a named pattern (from load_song) on every track first and/or set the tempo. Loops the current pattern selection or scene chain until stop_sequencer.",
"inputSchema": {
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "Pattern name from load_song to select on all tracks before starting. Omit to play the current selection."
},
"bpm": {
"type": "number",
"minimum": 40,
"maximum": 240,
"description": "Tempo in BPM."
}
},
"required": [],
"additionalProperties": false
}
}stop_sequencerAction
Stop playback (all notes off).
View tool JSON
{
"name": "stop_sequencer",
"kind": "act",
"impl": "imperative",
"description": "Stop playback (all notes off).",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}transportAction
Transport control: "start" plays from the top, "continue" resumes from where playback last stopped, "stop" stops. Optional bpm sets the tempo first.
View tool JSON
{
"name": "transport",
"kind": "act",
"impl": "imperative",
"description": "Transport control: \"start\" plays from the top, \"continue\" resumes from where playback last stopped, \"stop\" stops. Optional bpm sets the tempo first.",
"inputSchema": {
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "One of start, stop, continue.",
"enum": [
"start",
"stop",
"continue"
]
},
"bpm": {
"type": "number",
"minimum": 40,
"maximum": 240,
"description": "Tempo in BPM."
}
},
"required": [
"action"
],
"additionalProperties": false
}
}set_bpmAction
Set the tempo (40-240 BPM). Works while playing.
View tool JSON
{
"name": "set_bpm",
"kind": "act",
"impl": "imperative",
"description": "Set the tempo (40-240 BPM). Works while playing.",
"inputSchema": {
"type": "object",
"properties": {
"bpm": {
"type": "number",
"minimum": 40,
"maximum": 240,
"description": "Tempo in BPM."
}
},
"required": [
"bpm"
],
"additionalProperties": false
}
}set_swingAction
Set swing (20-80, 50 = straight). Web Tracks extra; on hardware swing is part of the song.
View tool JSON
{
"name": "set_swing",
"kind": "act",
"impl": "imperative",
"description": "Set swing (20-80, 50 = straight). Web Tracks extra; on hardware swing is part of the song.",
"inputSchema": {
"type": "object",
"properties": {
"swing": {
"type": "integer",
"minimum": 20,
"maximum": 80,
"description": "Swing amount, 50 = none."
}
},
"required": [
"swing"
],
"additionalProperties": false
}
}mute_trackAction
Mute or unmute a track. Takes effect immediately.
View tool JSON
{
"name": "mute_track",
"kind": "act",
"impl": "imperative",
"description": "Mute or unmute a track. Takes effect immediately.",
"inputSchema": {
"type": "object",
"properties": {
"track": {
"type": "string",
"enum": [
"synth1",
"synth2",
"midi1",
"midi2",
"drum1",
"drum2",
"drum3",
"drum4"
],
"description": "Track name."
},
"muted": {
"type": "boolean",
"description": "true to mute, false to unmute.",
"default": true
}
},
"required": [
"track"
],
"additionalProperties": false
}
}select_patternAction
Select which of the 8 pattern slots a track plays (Web Tracks extra). While playing the switch is queued for the end of the current pattern unless immediate is true.
View tool JSON
{
"name": "select_pattern",
"kind": "act",
"impl": "imperative",
"description": "Select which of the 8 pattern slots a track plays (Web Tracks extra). While playing the switch is queued for the end of the current pattern unless immediate is true.",
"inputSchema": {
"type": "object",
"properties": {
"track": {
"type": "string",
"enum": [
"synth1",
"synth2",
"midi1",
"midi2",
"drum1",
"drum2",
"drum3",
"drum4"
],
"description": "Track name."
},
"pattern": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"description": "Pattern slot 1-8."
},
"immediate": {
"type": "boolean",
"description": "Switch now instead of at the pattern end.",
"default": false
}
},
"required": [
"track",
"pattern"
],
"additionalProperties": false
}
}set_synth_paramsAction
Set one or more parameters of the live patch on Synth 1 or 2 (also affects sounding notes). Keys are snake_case patch parameter names from get_parameter_reference("synth") or ("patch"), e.g. {"filter_frequency": 80, "osc1_wave": 2}. Also accepts macro_knob1-8 (knob positions) and "name" (patch name, string).
View tool JSON
{
"name": "set_synth_params",
"kind": "act",
"impl": "imperative",
"description": "Set one or more parameters of the live patch on Synth 1 or 2 (also affects sounding notes). Keys are snake_case patch parameter names from get_parameter_reference(\"synth\") or (\"patch\"), e.g. {\"filter_frequency\": 80, \"osc1_wave\": 2}. Also accepts macro_knob1-8 (knob positions) and \"name\" (patch name, string).",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
},
"params": {
"type": "object",
"minProperties": 1,
"description": "param_name -> value 0-127 (\"name\" -> string).",
"additionalProperties": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 127
},
{
"type": "string",
"maxLength": 16
}
]
}
}
},
"required": [
"synth",
"params"
],
"additionalProperties": false
}
}edit_synth_patchAction
Edit the current patch on Synth 1 or 2: same as set_synth_params (all 340-byte patch parameters incl. mod matrix slots modN_source1/source2/depth/destination and "name"). Kept for parity with the hardware server.
View tool JSON
{
"name": "edit_synth_patch",
"kind": "act",
"impl": "imperative",
"description": "Edit the current patch on Synth 1 or 2: same as set_synth_params (all 340-byte patch parameters incl. mod matrix slots modN_source1/source2/depth/destination and \"name\"). Kept for parity with the hardware server.",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
},
"params": {
"type": "object",
"minProperties": 1,
"description": "param_name -> value 0-127 (\"name\" -> string).",
"additionalProperties": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 127
},
{
"type": "string",
"maxLength": 16
}
]
}
}
},
"required": [
"synth",
"params"
],
"additionalProperties": false
}
}create_synth_patchAction
Build a synth patch from scratch (or from a preset: pad, bass, lead, pluck) and put it on Synth 1 or 2. Call get_parameter_reference("patch"), then ("mod_matrix"), then ("macros") first. params are snake_case patch parameters 0-127. mod_matrix entries use SPACE-separated source/dest names ({"source1": "LFO 1+/-", "dest": "filter frequency", "depth": 30}, depth -64..63). macros are keyed "1"-"8" and their targets use snake_case PARAMETER names, not mod matrix names: {"5": {"targets": [{"dest": "filter_frequency", "start": 0, "end": 127, "depth": 63}]}}. Macros ADD to base values: set base values low for params a macro should sweep up.
View tool JSON
{
"name": "create_synth_patch",
"kind": "act",
"impl": "imperative",
"description": "Build a synth patch from scratch (or from a preset: pad, bass, lead, pluck) and put it on Synth 1 or 2. Call get_parameter_reference(\"patch\"), then (\"mod_matrix\"), then (\"macros\") first. params are snake_case patch parameters 0-127. mod_matrix entries use SPACE-separated source/dest names ({\"source1\": \"LFO 1+/-\", \"dest\": \"filter frequency\", \"depth\": 30}, depth -64..63). macros are keyed \"1\"-\"8\" and their targets use snake_case PARAMETER names, not mod matrix names: {\"5\": {\"targets\": [{\"dest\": \"filter_frequency\", \"start\": 0, \"end\": 127, \"depth\": 63}]}}. Macros ADD to base values: set base values low for params a macro should sweep up.",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
},
"name": {
"type": "string",
"description": "Patch name (up to 16 chars).",
"maxLength": 16
},
"params": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 127
},
"description": "param_name -> value."
},
"mod_matrix": {
"type": "array",
"items": {
"$ref": "#/$defs/ModMatrixEntry"
},
"maxItems": 20
},
"macros": {
"type": "object",
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"additionalProperties": {
"$ref": "#/$defs/MacroConfig"
}
},
"preset": {
"type": "string",
"description": "Base preset.",
"enum": [
"pad",
"bass",
"lead",
"pluck"
]
}
},
"required": [
"synth",
"name"
],
"additionalProperties": false,
"$defs": {
"DelayConfig": {
"description": "Delay engine parameters.",
"properties": {
"time": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Time"
},
"sync": {
"anyOf": [
{
"maximum": 35,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Sync"
},
"feedback": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Feedback"
},
"width": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Width"
},
"lr_ratio": {
"anyOf": [
{
"maximum": 12,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Lr Ratio"
},
"slew": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Slew"
}
},
"title": "DelayConfig",
"type": "object"
},
"DrumSoundConfig": {
"description": "Drum track sound configuration.",
"properties": {
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sample/patch index.",
"title": "Sample"
},
"level": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Level"
},
"pitch": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"distortion": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Distortion"
},
"eq": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Eq"
},
"pan": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pan"
}
},
"title": "DrumSoundConfig",
"type": "object"
},
"DrumStepConfig": {
"additionalProperties": false,
"description": "A single step in a drum track.",
"properties": {
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Probability"
},
"sample": {
"anyOf": [
{
"maximum": 63,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step sample override.",
"title": "Sample"
},
"micro_step": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Micro-step offset within the step (0-5).",
"title": "Micro Step"
}
},
"title": "DrumStepConfig",
"type": "object"
},
"DrumTrackConfig": {
"additionalProperties": false,
"description": "Track data for a drum track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/DrumStepConfig"
},
"description": "Step index (as string) -> step data.",
"title": "Steps",
"type": "object"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"pitch",
"decay",
"distortion",
"eq",
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level parameter automation. Keys: 'pitch', 'decay', 'distortion', 'eq', 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Params"
}
},
"title": "DrumTrackConfig",
"type": "object"
},
"FXConfig": {
"description": "Global FX configuration.",
"properties": {
"reverb": {
"anyOf": [
{
"$ref": "#/$defs/ReverbConfig"
},
{
"type": "null"
}
],
"default": null
},
"delay": {
"anyOf": [
{
"$ref": "#/$defs/DelayConfig"
},
{
"type": "null"
}
],
"default": null
},
"reverb_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Reverb preset by name or index (0-7).",
"title": "Reverb Preset"
},
"delay_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Delay preset by name or index (0-15).",
"title": "Delay Preset"
},
"reverb_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track reverb send level.",
"title": "Reverb Sends"
},
"delay_sends": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-track delay send level.",
"title": "Delay Sends"
},
"sidechain": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/SidechainConfig"
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"midi1",
"midi2"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Sidechain"
}
},
"title": "FXConfig",
"type": "object"
},
"MacroConfig": {
"description": "Configuration for one macro knob (1-8).",
"properties": {
"targets": {
"items": {
"$ref": "#/$defs/MacroTarget"
},
"title": "Targets",
"type": "array"
},
"position": {
"default": 0,
"description": "Initial knob position.",
"maximum": 127,
"minimum": 0,
"title": "Position",
"type": "integer"
}
},
"required": [
"targets"
],
"title": "MacroConfig",
"type": "object"
},
"MacroTarget": {
"description": "A single destination routed to a macro knob.",
"properties": {
"dest": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name (e.g. 'filter_frequency') or macro destination index (0-70). Use get_parameter_reference for the full list.",
"title": "Dest"
},
"start": {
"default": 0,
"description": "Value when knob is at 0.",
"maximum": 127,
"minimum": 0,
"title": "Start",
"type": "integer"
},
"end": {
"default": 127,
"description": "Value when knob is at 127.",
"maximum": 127,
"minimum": 0,
"title": "End",
"type": "integer"
},
"depth": {
"default": 127,
"description": "Modulation depth. 127=full, 64=none.",
"maximum": 127,
"minimum": 0,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "MacroTarget",
"type": "object"
},
"MixerTrackConfig": {
"description": "Mixer settings for a synth track.",
"properties": {
"level": {
"default": 100,
"maximum": 127,
"minimum": 0,
"title": "Level",
"type": "integer"
},
"pan": {
"default": 64,
"maximum": 127,
"minimum": 0,
"title": "Pan",
"type": "integer"
}
},
"title": "MixerTrackConfig",
"type": "object"
},
"ModMatrixEntry": {
"description": "A single mod-matrix routing slot.",
"properties": {
"source1": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source1"
},
"source2": {
"anyOf": [
{
"enum": [
"direct",
"velocity",
"keyboard",
"LFO 1+",
"LFO 1+/-",
"LFO 2+",
"LFO 2+/-",
"env amp",
"env filter",
"env 3"
],
"type": "string"
},
{
"type": "integer"
}
],
"default": "direct",
"title": "Source2"
},
"dest": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
}
],
"description": "Destination parameter (use space-separated names, NOT snake_case).",
"title": "Dest"
},
"destination": {
"anyOf": [
{
"enum": [
"osc 1 & 2 pitch",
"osc 1 pitch",
"osc 2 pitch",
"osc 1 v-sync",
"osc 2 v-sync",
"osc 1 pulse width / index",
"osc 2 pulse width / index",
"osc 1 level",
"osc 2 level",
"noise level",
"ring modulation 1*2 level",
"filter drive amount",
"filter frequency",
"filter resonance",
"LFO 1 rate",
"LFO 2 rate",
"amp envelope decay",
"filter envelope decay"
],
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for 'dest'. Either 'dest' or 'destination' may be used.",
"title": "Destination"
},
"depth": {
"default": 0,
"description": "Signed depth: -64 to +63. 0 = no modulation.",
"maximum": 63,
"minimum": -64,
"title": "Depth",
"type": "integer"
}
},
"required": [
"dest"
],
"title": "ModMatrixEntry",
"type": "object"
},
"PatternConfig": {
"description": "A named pattern containing track data.",
"properties": {
"length": {
"default": 16,
"description": "Pattern length in steps.",
"maximum": 32,
"minimum": 1,
"title": "Length",
"type": "integer"
},
"tracks": {
"additionalProperties": {
"anyOf": [
{
"$ref": "#/$defs/SynthTrackConfig"
},
{
"$ref": "#/$defs/DrumTrackConfig"
}
]
},
"propertyNames": {
"enum": [
"synth1",
"synth2",
"drum1",
"drum2",
"drum3",
"drum4",
"midi1",
"midi2"
]
},
"title": "Tracks",
"type": "object"
}
},
"title": "PatternConfig",
"type": "object"
},
"ReverbConfig": {
"description": "Reverb engine parameters.",
"properties": {
"type": {
"anyOf": [
{
"maximum": 5,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Type"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"damping": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Damping"
}
},
"title": "ReverbConfig",
"type": "object"
},
"ScaleConfig": {
"description": "Musical scale applied to synth/MIDI note quantization.",
"properties": {
"root": {
"default": "C",
"enum": [
"C",
"C#",
"Db",
"D",
"D#",
"Eb",
"E",
"F",
"F#",
"Gb",
"G",
"G#",
"Ab",
"A",
"A#",
"Bb",
"B"
],
"title": "Root",
"type": "string"
},
"type": {
"default": "chromatic",
"enum": [
"natural minor",
"minor",
"major",
"dorian",
"phrygian",
"mixolydian",
"melodic minor",
"harmonic minor",
"bebop dorian",
"blues",
"minor pentatonic",
"hungarian minor",
"ukranian dorian",
"marva",
"todi",
"whole tone",
"chromatic"
],
"title": "Type",
"type": "string"
}
},
"title": "ScaleConfig",
"type": "object"
},
"SidechainConfig": {
"description": "Sidechain compressor settings for a synth or MIDI track.",
"properties": {
"preset": {
"anyOf": [
{
"maximum": 7,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sidechain preset (1-7). Required to activate sidechain on hardware. 0 or omit = OFF.",
"title": "Preset"
},
"source": {
"default": "off",
"enum": [
"drum1",
"drum2",
"drum3",
"drum4",
"off"
],
"title": "Source",
"type": "string"
},
"attack": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Attack"
},
"hold": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hold"
},
"decay": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Decay"
},
"depth": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Depth"
}
},
"title": "SidechainConfig",
"type": "object"
},
"SynthSoundConfig": {
"description": "Synth engine patch configuration (synth1, synth2).",
"properties": {
"preset": {
"anyOf": [
{
"enum": [
"pad",
"bass",
"lead",
"pluck"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Base preset to start from before applying params.",
"title": "Preset"
},
"name": {
"anyOf": [
{
"maxLength": 16,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Patch name.",
"title": "Name"
},
"params": {
"anyOf": [
{
"additionalProperties": {
"type": "integer"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Synth parameter name -> value (0-127). Use get_parameter_reference for names.",
"title": "Params"
},
"mod_matrix": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ModMatrixEntry"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Mod matrix routing slots.",
"title": "Mod Matrix"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"$ref": "#/$defs/MacroConfig"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Macro knob definitions. Keys are '1' through '8'.",
"title": "Macros"
}
},
"title": "SynthSoundConfig",
"type": "object"
},
"SynthStepConfig": {
"additionalProperties": false,
"description": "A single step in a synth or MIDI track.\n\nOnly these fields are allowed — no others. Use 'macros' for p-locks, NOT 'params' or 'p-locks'.",
"properties": {
"note": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "MIDI note number. Mutually exclusive with 'notes'.",
"title": "Note"
},
"notes": {
"anyOf": [
{
"items": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Multiple MIDI notes for polyphony. Mutually exclusive with 'note'.",
"title": "Notes"
},
"velocity": {
"anyOf": [
{
"maximum": 127,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Velocity"
},
"gate": {
"anyOf": [
{
"maximum": 16,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Gate length in steps (e.g. 0.5 = half step, 2.0 = two steps). Max 16.",
"title": "Gate"
},
"tie": {
"default": false,
"description": "Tie forward — sustain this note into the next triggered step.",
"title": "Tie",
"type": "boolean"
},
"enabled": {
"default": true,
"title": "Enabled",
"type": "boolean"
},
"probability": {
"anyOf": [
{
"maximum": 1,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Playback probability, 0.0 to 1.0.",
"title": "Probability"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Per-step macro p-locks. Keys are macro numbers '1'-'8', values are 0-127. These lock the macro knob position for this step.",
"title": "Macros"
}
},
"title": "SynthStepConfig",
"type": "object"
},
"SynthTrackConfig": {
"additionalProperties": false,
"description": "Track data for a synth or MIDI track within a pattern.",
"properties": {
"steps": {
"additionalProperties": {
"$ref": "#/$defs/SynthStepConfig"
},
"description": "Step index (as string, e.g. '0', '4') -> step data.",
"title": "Steps",
"type": "object"
},
"macros": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level macro automation. Keys are macro numbers '1'-'8'. Values are {step_position: value} dicts. Float positions supported for micro-step resolution (e.g. '2.5').",
"title": "Macros"
},
"mixer": {
"anyOf": [
{
"additionalProperties": {
"additionalProperties": {
"maximum": 127,
"minimum": 0,
"type": "integer"
},
"type": "object"
},
"propertyNames": {
"enum": [
"reverb_send",
"delay_send",
"level",
"pan"
]
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Track-level mixer automation. Keys: 'reverb_send', 'delay_send', 'level', 'pan'. Values are {step_position: value} dicts.",
"title": "Mixer"
}
},
"title": "SynthTrackConfig",
"type": "object"
}
}
}
}save_synth_patchAction
Store the live patch of Synth 1 or 2 into a slot of the pack's patch bank (0-127) so select_patch and the Preset view can recall it; included in Export pack.
View tool JSON
{
"name": "save_synth_patch",
"kind": "act",
"impl": "imperative",
"description": "Store the live patch of Synth 1 or 2 into a slot of the pack's patch bank (0-127) so select_patch and the Preset view can recall it; included in Export pack.",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
},
"slot": {
"type": "integer",
"minimum": 0,
"maximum": 127,
"description": "Bank slot."
}
},
"required": [
"synth",
"slot"
],
"additionalProperties": false
}
}get_synth_patchAnswer
Read the live patch of Synth 1 or 2: name, all parameter values, active mod matrix slots (named sources/destinations, signed depth) and macro assignments.
View tool JSON
{
"name": "get_synth_patch",
"kind": "answer",
"impl": "imperative",
"description": "Read the live patch of Synth 1 or 2: name, all parameter values, active mod matrix slots (named sources/destinations, signed depth) and macro assignments.",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
}
},
"required": [
"synth"
],
"additionalProperties": false
}
}set_drum_paramsAction
Set drum track parameters: level, pitch, decay, distortion, eq, pan (0-127), sample (0-63, the drum sample slot), reverb_send, delay_send. E.g. {"pitch": 80, "sample": 2}.
View tool JSON
{
"name": "set_drum_params",
"kind": "act",
"impl": "imperative",
"description": "Set drum track parameters: level, pitch, decay, distortion, eq, pan (0-127), sample (0-63, the drum sample slot), reverb_send, delay_send. E.g. {\"pitch\": 80, \"sample\": 2}.",
"inputSchema": {
"type": "object",
"properties": {
"drum": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Drum track: 1-4."
},
"params": {
"type": "object",
"description": "param_name -> value.",
"minProperties": 1,
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 127
}
}
},
"required": [
"drum",
"params"
],
"additionalProperties": false
}
}set_project_paramsAction
Set project-level parameters: FX sends, mixer, master filter, reverb, delay, FX bypass, sidechain. Names: - reverb_<track>_send / delay_<track>_send (track: synth1, synth2, midi1, midi2, drum1-4) - <track>_level / <track>_pan - master_filter_frequency (0-63 low-pass, 64 off, 65-127 high-pass), master_filter_resonance - reverb_type (0-5), reverb_decay, reverb_damping, reverb_preset (0-7) - delay_time, delay_time_sync (0-35), delay_feedback, delay_width, delay_lr_ratio (0-12), delay_slew_rate, delay_preset (0-15) - fx_bypass (0/1) - sidechain_<synth1|synth2|midi1|midi2>_preset (1-7 activates, 0 off), _source (0-3 = drum1-4, 4 = off), _attack, _hold, _decay, _depth E.g. {"reverb_synth1_send": 60, "delay_feedback": 80, "sidechain_synth1_preset": 3, "sidechain_synth1_source": 0}.
View tool JSON
{
"name": "set_project_params",
"kind": "act",
"impl": "imperative",
"description": "Set project-level parameters: FX sends, mixer, master filter, reverb, delay, FX bypass, sidechain. Names:\n- reverb_<track>_send / delay_<track>_send (track: synth1, synth2, midi1, midi2, drum1-4)\n- <track>_level / <track>_pan\n- master_filter_frequency (0-63 low-pass, 64 off, 65-127 high-pass), master_filter_resonance\n- reverb_type (0-5), reverb_decay, reverb_damping, reverb_preset (0-7)\n- delay_time, delay_time_sync (0-35), delay_feedback, delay_width, delay_lr_ratio (0-12), delay_slew_rate, delay_preset (0-15)\n- fx_bypass (0/1)\n- sidechain_<synth1|synth2|midi1|midi2>_preset (1-7 activates, 0 off), _source (0-3 = drum1-4, 4 = off), _attack, _hold, _decay, _depth\nE.g. {\"reverb_synth1_send\": 60, \"delay_feedback\": 80, \"sidechain_synth1_preset\": 3, \"sidechain_synth1_source\": 0}.",
"inputSchema": {
"type": "object",
"properties": {
"params": {
"type": "object",
"description": "param_name -> value.",
"minProperties": 1,
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 127
}
}
},
"required": [
"params"
],
"additionalProperties": false
}
}set_macroAction
Turn a macro knob (1-8) on Synth 1 or 2 to a position 0-127. Macros ADD to the patch base values through the assignments shown by get_macros.
View tool JSON
{
"name": "set_macro",
"kind": "act",
"impl": "imperative",
"description": "Turn a macro knob (1-8) on Synth 1 or 2 to a position 0-127. Macros ADD to the patch base values through the assignments shown by get_macros.",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
},
"macro": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"description": "Macro knob 1-8."
},
"value": {
"type": "integer",
"minimum": 0,
"maximum": 127,
"description": "Knob position."
}
},
"required": [
"synth",
"macro",
"value"
],
"additionalProperties": false
}
}get_macrosAnswer
Macro knob layout for both synths: current knob positions and, per macro, the parameters it moves with their start/end knob range and signed depth.
View tool JSON
{
"name": "get_macros",
"kind": "answer",
"impl": "imperative",
"description": "Macro knob layout for both synths: current knob positions and, per macro, the parameters it moves with their start/end knob range and signed depth.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}play_notesAction
Audition notes right now (independent of the sequencer). Pass a track name, or a channel like the hardware: 0 = synth1, 1 = synth2, 2 = midi1, 3 = midi2, 9 = drums (notes 60, 62, 64, 65 hit drums 1-4). Middle C = 60.
View tool JSON
{
"name": "play_notes",
"kind": "act",
"impl": "imperative",
"description": "Audition notes right now (independent of the sequencer). Pass a track name, or a channel like the hardware: 0 = synth1, 1 = synth2, 2 = midi1, 3 = midi2, 9 = drums (notes 60, 62, 64, 65 hit drums 1-4). Middle C = 60.",
"inputSchema": {
"type": "object",
"properties": {
"notes": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 127
},
"minItems": 1,
"maxItems": 16,
"description": "MIDI note numbers; several = chord."
},
"track": {
"type": "string",
"enum": [
"synth1",
"synth2",
"midi1",
"midi2",
"drum1",
"drum2",
"drum3",
"drum4"
],
"description": "Track name (preferred)."
},
"channel": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "Hardware-style channel if no track is given."
},
"velocity": {
"type": "integer",
"minimum": 1,
"maximum": 127,
"description": "Velocity (default 100)."
},
"duration_ms": {
"type": "integer",
"minimum": 20,
"maximum": 20000,
"description": "Hold time in ms (default 500)."
}
},
"required": [
"notes"
],
"additionalProperties": false
}
}play_drumAction
Trigger one drum hit right now.
View tool JSON
{
"name": "play_drum",
"kind": "act",
"impl": "imperative",
"description": "Trigger one drum hit right now.",
"inputSchema": {
"type": "object",
"properties": {
"drum": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Drum track: 1-4."
},
"velocity": {
"type": "integer",
"minimum": 1,
"maximum": 127,
"description": "Velocity (default 100)."
}
},
"required": [
"drum"
],
"additionalProperties": false
}
}list_drum_samplesAnswer
List the 64 drum samples of the loaded pack with their index numbers and names (4 pages of 16). Use the index with set_drum_params {"sample": n} or sounds.drumN.sample.
View tool JSON
{
"name": "list_drum_samples",
"kind": "answer",
"impl": "imperative",
"description": "List the 64 drum samples of the loaded pack with their index numbers and names (4 pages of 16). Use the index with set_drum_params {\"sample\": n} or sounds.drumN.sample.",
"inputSchema": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Only this page (1-4); omit for all."
}
},
"required": [],
"additionalProperties": false
}
}list_patchesAnswer
List the synth patches of the loaded pack with their index numbers (Web Tracks extra). Use the index with select_patch.
View tool JSON
{
"name": "list_patches",
"kind": "answer",
"impl": "imperative",
"description": "List the synth patches of the loaded pack with their index numbers (Web Tracks extra). Use the index with select_patch.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}select_patchAction
Load a patch from the pack's patch bank onto Synth 1 or 2 by index (see list_patches).
View tool JSON
{
"name": "select_patch",
"kind": "act",
"impl": "imperative",
"description": "Load a patch from the pack's patch bank onto Synth 1 or 2 by index (see list_patches).",
"inputSchema": {
"type": "object",
"properties": {
"synth": {
"type": "integer",
"minimum": 1,
"maximum": 2,
"description": "Synth number: 1 or 2."
},
"patch_number": {
"type": "integer",
"minimum": 0,
"maximum": 127,
"description": "Patch index in the bank."
}
},
"required": [
"synth",
"patch_number"
],
"additionalProperties": false
}
}list_projectsAnswer
List the project bank slots that hold a project (Web Tracks extra).
View tool JSON
{
"name": "list_projects",
"kind": "answer",
"impl": "imperative",
"description": "List the project bank slots that hold a project (Web Tracks extra).",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}select_projectAction
Load a project from the bank by slot (0-63), replacing the live project. queued = true switches at the end of the current pattern while playing. An empty slot loads an init project.
View tool JSON
{
"name": "select_project",
"kind": "act",
"impl": "imperative",
"description": "Load a project from the bank by slot (0-63), replacing the live project. queued = true switches at the end of the current pattern while playing. An empty slot loads an init project.",
"inputSchema": {
"type": "object",
"properties": {
"project_number": {
"type": "integer",
"minimum": 0,
"maximum": 63,
"description": "Project slot 0-63."
},
"queued": {
"type": "boolean",
"description": "Switch at the pattern end while playing.",
"default": false
}
},
"required": [
"project_number"
],
"additionalProperties": false
}
}export_song_to_projectAction
Save the live project into a bank slot (0-63), like pressing Save on the hardware. Defaults to the current slot, else the first empty one. Optional name renames the project (16 chars fit the hardware display). Use download_project to get the .ncs file.
View tool JSON
{
"name": "export_song_to_project",
"kind": "act",
"impl": "imperative",
"description": "Save the live project into a bank slot (0-63), like pressing Save on the hardware. Defaults to the current slot, else the first empty one. Optional name renames the project (16 chars fit the hardware display). Use download_project to get the .ncs file.",
"inputSchema": {
"type": "object",
"properties": {
"slot": {
"type": "integer",
"minimum": -1,
"maximum": 63,
"description": "Target slot; -1 = current/first empty."
},
"name": {
"type": "string",
"description": "Project name.",
"maxLength": 32
}
},
"required": [],
"additionalProperties": false
}
}download_projectAction
Download the live project as a hardware-ready .ncs file in the user's browser (Web Tracks extra; the file can be sent to a Circuit Tracks with Components or the hardware MCP server).
View tool JSON
{
"name": "download_project",
"kind": "act",
"impl": "imperative",
"description": "Download the live project as a hardware-ready .ncs file in the user's browser (Web Tracks extra; the file can be sent to a Circuit Tracks with Components or the hardware MCP server).",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}undoAction
Restore the project state from before the last structural agent call: load_song, set_pattern, set_track, clear_pattern, set_song, create_synth_patch, edit_synth_patch, select_patch, select_project. Live tweaks (tempo, macros, mutes, synth/drum/project params) are not undone. Repeat to go further back (up to 12 states).
View tool JSON
{
"name": "undo",
"kind": "act",
"impl": "imperative",
"description": "Restore the project state from before the last structural agent call: load_song, set_pattern, set_track, clear_pattern, set_song, create_synth_patch, edit_synth_patch, select_patch, select_project. Live tweaks (tempo, macros, mutes, synth/drum/project params) are not undone. Repeat to go further back (up to 12 states).",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}