changedInput schema / properties / edit / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "description": "Add one track. Retrying the same track_id and definition is a no-op; a conflicting reuse is rejected.",
- "properties": {
- "name": {
- "description": "Optional display name. The instrument name is used when omitted.",
- "maxLength": 32,
- "minLength": 1,
- "type": "string"
- },
- "operation": {
- "const": "add_track",
- "type": "string"
- },
- "sample_id": {
- "description": "The canonical Keyboardia instrument ID. Use one of the enumerated values exactly.",
- "enum": [
- "advanced:acid-bass",
- "advanced:sub-bass",
- "advanced:supersaw",
- "advanced:thick-lead",
- "advanced:tremolo-strings",
- "advanced:vibrato-lead",
- "advanced:warm-pad",
- "advanced:wobble-bass",
- "bass",
- "cabasa",
- "chord",
- "clap",
- "clave",
- "conga",
- "cowbell",
- "hihat",
- "kick",
- "lead",
- "noise",
- "openhat",
- "pad",
- "pluck",
- "rim",
- "sampled:808-clap",
- "sampled:808-hihat-closed",
- "sampled:808-hihat-open",
- "sampled:808-kick",
- "sampled:808-snare",
- "sampled:acoustic-crash",
- "sampled:acoustic-guitar",
- "sampled:acoustic-hihat-closed",
- "sampled:acoustic-hihat-open",
- "sampled:acoustic-kick",
- "sampled:acoustic-ride",
- "sampled:acoustic-snare",
- "sampled:alto-sax",
- "sampled:brushes-snare",
- "sampled:clean-guitar",
- "sampled:finger-bass",
- "sampled:french-horn",
- "sampled:hammond-organ",
- "sampled:kalimba",
- "sampled:marimba",
- "sampled:piano",
- "sampled:slap-bass",
- "sampled:steel-drums",
- "sampled:string-section",
- "sampled:vibraphone",
- "sampled:vinyl-crackle",
- "shaker",
- "snare",
- "subbass",
- "synth:acid",
- "synth:bass",
- "synth:bell",
- "synth:brass",
- "synth:clavinet",
- "synth:discobass",
- "synth:dreampop",
- "synth:epiano",
- "synth:evolving",
- "synth:funkbass",
- "synth:glass",
- "synth:growl",
- "synth:hoover",
- "synth:hypersaw",
- "synth:jangle",
- "synth:lead",
- "synth:organ",
- "synth:organphase",
- "synth:pad",
- "synth:pluck",
- "synth:reese",
- "synth:rhodes",
- "synth:shimmer",
- "synth:stab",
- "synth:strings",
- "synth:sub",
- "synth:supersaw",
- "synth:sweep",
- "synth:vibes",
- "synth:warmpad",
- "synth:wobble",
- "synth:wurlitzer",
- "tambourine",
- "tom",
- "tone:am-bell",
- "tone:am-tremolo",
- "tone:duo-lead",
- "tone:fm-bass",
- "tone:fm-bell",
- "tone:fm-epiano",
- "tone:membrane-kick",
- "tone:membrane-tom",
- "tone:metal-cymbal",
- "tone:metal-hihat",
- "tone:pluck-string",
- "woodblock",
- "zap"
- ],
- "type": "string"
- },
- "track_id": {
- "description": "Generate a fresh collision-resistant ID that ends with at least eight hexadecimal characters, such as agent-kick-a7f3c29d. Generate it once and reuse it on retries.",
- "pattern": "^(?=.{10,64}$)[A-Za-z0-9][A-Za-z0-9._-]*-[0-9a-fA-F]{8,32}$",
- "type": "string"
- }
- },
- "required": [
- "operation",
- "track_id",
- "sample_id"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Replace only an existing track's sound source while preserving its name, pattern, mix, and timing.",
- "properties": {
- "operation": {
- "const": "set_track_instrument",
- "type": "string"
- },
- "sample_id": {
- "description": "The canonical Keyboardia instrument ID. Use one of the enumerated values exactly.",
- "enum": [
- "advanced:acid-bass",
- "advanced:sub-bass",
- "advanced:supersaw",
- "advanced:thick-lead",
- "advanced:tremolo-strings",
- "advanced:vibrato-lead",
- "advanced:warm-pad",
- "advanced:wobble-bass",
- "bass",
- "cabasa",
- "chord",
- "clap",
- "clave",
- "conga",
- "cowbell",
- "hihat",
- "kick",
- "lead",
- "noise",
- "openhat",
- "pad",
- "pluck",
- "rim",
- "sampled:808-clap",
- "sampled:808-hihat-closed",
- "sampled:808-hihat-open",
- "sampled:808-kick",
- "sampled:808-snare",
- "sampled:acoustic-crash",
- "sampled:acoustic-guitar",
- "sampled:acoustic-hihat-closed",
- "sampled:acoustic-hihat-open",
- "sampled:acoustic-kick",
- "sampled:acoustic-ride",
- "sampled:acoustic-snare",
- "sampled:alto-sax",
- "sampled:brushes-snare",
- "sampled:clean-guitar",
- "sampled:finger-bass",
- "sampled:french-horn",
- "sampled:hammond-organ",
- "sampled:kalimba",
- "sampled:marimba",
- "sampled:piano",
- "sampled:slap-bass",
- "sampled:steel-drums",
- "sampled:string-section",
- "sampled:vibraphone",
- "sampled:vinyl-crackle",
- "shaker",
- "snare",
- "subbass",
- "synth:acid",
- "synth:bass",
- "synth:bell",
- "synth:brass",
- "synth:clavinet",
- "synth:discobass",
- "synth:dreampop",
- "synth:epiano",
- "synth:evolving",
- "synth:funkbass",
- "synth:glass",
- "synth:growl",
- "synth:hoover",
- "synth:hypersaw",
- "synth:jangle",
- "synth:lead",
- "synth:organ",
- "synth:organphase",
- "synth:pad",
- "synth:pluck",
- "synth:reese",
- "synth:rhodes",
- "synth:shimmer",
- "synth:stab",
- "synth:strings",
- "synth:sub",
- "synth:supersaw",
- "synth:sweep",
- "synth:vibes",
- "synth:warmpad",
- "synth:wobble",
- "synth:wurlitzer",
- "tambourine",
- "tom",
- "tone:am-bell",
- "tone:am-tremolo",
- "tone:duo-lead",
- "tone:fm-bass",
- "tone:fm-bell",
- "tone:fm-epiano",
- "tone:membrane-kick",
- "tone:membrane-tom",
- "tone:metal-cymbal",
- "tone:metal-hihat",
- "tone:pluck-string",
- "woodblock",
- "zap"
- ],
- "type": "string"
- },
- "track_id": {
- "description": "For add_track, choose a stable unique ID and reuse it on retries. For set_steps or set_track_instrument, copy an existing track_id from get_session.",
- "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
- "type": "string"
- }
- },
- "required": [
- "operation",
- "track_id",
- "sample_id"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Change only the listed steps on an existing track. Read get_session first to obtain its track_id and step_count.",
- "properties": {
- "changes": {
- "description": "Assignments for named steps only. Every unmentioned step is preserved.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "step": {
- "description": "Zero-based step index. It must be within this track's current step_count.",
- "maximum": 127,
- "minimum": 0,
- "type": "integer"
- },
- "value": {
- "description": "true activates the step; false clears it.",
- "type": "boolean"
- }
- },
- "required": [
- "step",
- "value"
- ],
- "type": "object"
- },
- "maxItems": 128,
- "minItems": 1,
- "type": "array"
- },
- "operation": {
- "const": "set_steps",
- "type": "string"
- },
- "track_id": {
- "description": "For add_track, choose a stable unique ID and reuse it on retries. For set_steps or set_track_instrument, copy an existing track_id from get_session.",
- "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
- "type": "string"
- }
- },
- "required": [
- "operation",
- "track_id",
- "changes"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Set the session-wide tempo without changing any track.",
- "properties": {
- "operation": {
- "const": "set_tempo",
- "type": "string"
- },
- "tempo": {
- "description": "Session tempo in beats per minute (60-180).",
- "maximum": 180,
- "minimum": 60,
- "type": "number"
- }
- },
- "required": [
- "operation",
- "tempo"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "description": "Add one track. Retrying the same track_id and definition is a no-op; a conflicting reuse is rejected.",
+ "properties": {
+ "name": {
+ "description": "Optional display name. The instrument name is used when omitted.",
+ "maxLength": 32,
+ "minLength": 1,
+ "type": "string"
+ },
+ "operation": {
+ "const": "add_track",
+ "type": "string"
+ },
+ "sample_id": {
+ "description": "The canonical Keyboardia instrument ID. Use one of the enumerated values exactly.",
+ "enum": [
+ "advanced:acid-bass",
+ "advanced:sub-bass",
+ "advanced:supersaw",
+ "advanced:thick-lead",
+ "advanced:tremolo-strings",
+ "advanced:vibrato-lead",
+ "advanced:warm-pad",
+ "advanced:wobble-bass",
+ "bass",
+ "cabasa",
+ "chord",
+ "clap",
+ "clave",
+ "conga",
+ "cowbell",
+ "hihat",
+ "kick",
+ "lead",
+ "noise",
+ "openhat",
+ "pad",
+ "pluck",
+ "rim",
+ "sampled:808-clap",
+ "sampled:808-hihat-closed",
+ "sampled:808-hihat-open",
+ "sampled:808-kick",
+ "sampled:808-snare",
+ "sampled:acoustic-crash",
+ "sampled:acoustic-guitar",
+ "sampled:acoustic-hihat-closed",
+ "sampled:acoustic-hihat-open",
+ "sampled:acoustic-kick",
+ "sampled:acoustic-ride",
+ "sampled:acoustic-snare",
+ "sampled:alto-sax",
+ "sampled:brushes-snare",
+ "sampled:clean-guitar",
+ "sampled:finger-bass",
+ "sampled:french-horn",
+ "sampled:hammond-organ",
+ "sampled:kalimba",
+ "sampled:marimba",
+ "sampled:piano",
+ "sampled:slap-bass",
+ "sampled:steel-drums",
+ "sampled:string-section",
+ "sampled:vibraphone",
+ "sampled:vinyl-crackle",
+ "shaker",
+ "snare",
+ "subbass",
+ "synth:acid",
+ "synth:bass",
+ "synth:bell",
+ "synth:brass",
+ "synth:clavinet",
+ "synth:discobass",
+ "synth:dreampop",
+ "synth:epiano",
+ "synth:evolving",
+ "synth:funkbass",
+ "synth:glass",
+ "synth:growl",
+ "synth:hoover",
+ "synth:hypersaw",
+ "synth:jangle",
+ "synth:lead",
+ "synth:organ",
+ "synth:organphase",
+ "synth:pad",
+ "synth:pluck",
+ "synth:reese",
+ "synth:rhodes",
+ "synth:shimmer",
+ "synth:stab",
+ "synth:strings",
+ "synth:sub",
+ "synth:supersaw",
+ "synth:sweep",
+ "synth:vibes",
+ "synth:warmpad",
+ "synth:wobble",
+ "synth:wurlitzer",
+ "tambourine",
+ "tom",
+ "tone:am-bell",
+ "tone:am-tremolo",
+ "tone:duo-lead",
+ "tone:fm-bass",
+ "tone:fm-bell",
+ "tone:fm-epiano",
+ "tone:membrane-kick",
+ "tone:membrane-tom",
+ "tone:metal-cymbal",
+ "tone:metal-hihat",
+ "tone:pluck-string",
+ "woodblock",
+ "zap"
+ ],
+ "type": "string"
+ },
+ "track_id": {
+ "description": "Generate a fresh collision-resistant ID that ends with at least eight hexadecimal characters, such as agent-kick-a7f3c29d. Generate it once and reuse it on retries.",
+ "pattern": "^(?=.{10,64}$)[A-Za-z0-9][A-Za-z0-9._-]*-[0-9a-fA-F]{8,32}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "operation",
+ "track_id",
+ "sample_id"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Replace only an existing track's sound source while preserving its name, pattern, mix, and timing.",
+ "properties": {
+ "operation": {
+ "const": "set_track_instrument",
+ "type": "string"
+ },
+ "sample_id": {
+ "description": "The canonical Keyboardia instrument ID. Use one of the enumerated values exactly.",
+ "enum": [
+ "advanced:acid-bass",
+ "advanced:sub-bass",
+ "advanced:supersaw",
+ "advanced:thick-lead",
+ "advanced:tremolo-strings",
+ "advanced:vibrato-lead",
+ "advanced:warm-pad",
+ "advanced:wobble-bass",
+ "bass",
+ "cabasa",
+ "chord",
+ "clap",
+ "clave",
+ "conga",
+ "cowbell",
+ "hihat",
+ "kick",
+ "lead",
+ "noise",
+ "openhat",
+ "pad",
+ "pluck",
+ "rim",
+ "sampled:808-clap",
+ "sampled:808-hihat-closed",
+ "sampled:808-hihat-open",
+ "sampled:808-kick",
+ "sampled:808-snare",
+ "sampled:acoustic-crash",
+ "sampled:acoustic-guitar",
+ "sampled:acoustic-hihat-closed",
+ "sampled:acoustic-hihat-open",
+ "sampled:acoustic-kick",
+ "sampled:acoustic-ride",
+ "sampled:acoustic-snare",
+ "sampled:alto-sax",
+ "sampled:brushes-snare",
+ "sampled:clean-guitar",
+ "sampled:finger-bass",
+ "sampled:french-horn",
+ "sampled:hammond-organ",
+ "sampled:kalimba",
+ "sampled:marimba",
+ "sampled:piano",
+ "sampled:slap-bass",
+ "sampled:steel-drums",
+ "sampled:string-section",
+ "sampled:vibraphone",
+ "sampled:vinyl-crackle",
+ "shaker",
+ "snare",
+ "subbass",
+ "synth:acid",
+ "synth:bass",
+ "synth:bell",
+ "synth:brass",
+ "synth:clavinet",
+ "synth:discobass",
+ "synth:dreampop",
+ "synth:epiano",
+ "synth:evolving",
+ "synth:funkbass",
+ "synth:glass",
+ "synth:growl",
+ "synth:hoover",
+ "synth:hypersaw",
+ "synth:jangle",
+ "synth:lead",
+ "synth:organ",
+ "synth:organphase",
+ "synth:pad",
+ "synth:pluck",
+ "synth:reese",
+ "synth:rhodes",
+ "synth:shimmer",
+ "synth:stab",
+ "synth:strings",
+ "synth:sub",
+ "synth:supersaw",
+ "synth:sweep",
+ "synth:vibes",
+ "synth:warmpad",
+ "synth:wobble",
+ "synth:wurlitzer",
+ "tambourine",
+ "tom",
+ "tone:am-bell",
+ "tone:am-tremolo",
+ "tone:duo-lead",
+ "tone:fm-bass",
+ "tone:fm-bell",
+ "tone:fm-epiano",
+ "tone:membrane-kick",
+ "tone:membrane-tom",
+ "tone:metal-cymbal",
+ "tone:metal-hihat",
+ "tone:pluck-string",
+ "woodblock",
+ "zap"
+ ],
+ "type": "string"
+ },
+ "track_id": {
+ "description": "For add_track, choose a stable unique ID and reuse it on retries. For set_steps, set_track_instrument, or set_track_pan, copy an existing track_id from get_session.",
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "operation",
+ "track_id",
+ "sample_id"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Set one existing track's normalized stereo position without changing its notes or level.",
+ "properties": {
+ "operation": {
+ "const": "set_track_pan",
+ "type": "string"
+ },
+ "pan": {
+ "description": "Normalized equal-power stereo position: -1 left, 0 center, 1 right.",
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "track_id": {
+ "description": "For add_track, choose a stable unique ID and reuse it on retries. For set_steps, set_track_instrument, or set_track_pan, copy an existing track_id from get_session.",
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "operation",
+ "track_id",
+ "pan"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Change only the listed steps on an existing track. Read get_session first to obtain its track_id and step_count.",
+ "properties": {
+ "changes": {
+ "description": "Assignments for named steps only. Every unmentioned step is preserved.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "step": {
+ "description": "Zero-based step index. It must be within this track's current step_count.",
+ "maximum": 127,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "value": {
+ "description": "true activates the step; false clears it.",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "step",
+ "value"
+ ],
+ "type": "object"
+ },
+ "maxItems": 128,
+ "minItems": 1,
+ "type": "array"
+ },
+ "operation": {
+ "const": "set_steps",
+ "type": "string"
+ },
+ "track_id": {
+ "description": "For add_track, choose a stable unique ID and reuse it on retries. For set_steps, set_track_instrument, or set_track_pan, copy an existing track_id from get_session.",
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "operation",
+ "track_id",
+ "changes"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Set the session-wide tempo without changing any track.",
+ "properties": {
+ "operation": {
+ "const": "set_tempo",
+ "type": "string"
+ },
+ "tempo": {
+ "description": "Session tempo in beats per minute (60-180).",
+ "maximum": 180,
+ "minimum": 60,
+ "type": "number"
+ }
+ },
+ "required": [
+ "operation",
+ "tempo"
+ ],
+ "type": "object"
+ }
+]