webmcp-synth-creator.vercel.app
A browser wavetable synthesizer with transactional WebMCP editing and Vital preset export.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 5 · Act 10 · Transact 0 · Score: Not yet scored
Tool inspector
apply_patch
The V1 operation vocabulary. Arguments are normalized 0..1 unless noted; right-hand sides are PatchState values in musical units. ### tone { op: "tone", brightness: 0..1, keep_air?: bool, resonance?: 0..1 } filter.enabled = true filter.type = "lowpass" filter.slope = keep_air ? 12 : 24 filter.cutoffHz = cutoffHz(0.12 + brightness*0.80 + (keep_air ? 0.06 : 0)) if resonance given: filter.resonance = resonance ### articulation { op: "articulation", kind: "pluck" | "stab" | "percussive" | "keys" | "bell" | "pad" | "swell" | "sustain" | "reverse", speed?: 0..1 } Values are seconds; sustainLevel and decayCurve are unscaled. kind delay attack hold decay sustain release decayCurve pluck 0 0.00 0 0.18 0.00 0.12 -0.6 stab 0 0.00 0 0.10 0.00 0.06 -0.7 percussive 0 0.00 0 0.06 0.00 0.04 -0.8 keys 0 0.00 0 0.35 0.45 0.25 -0.5 bell 0 0.00 0 0.55 0.00 0.50 -0.8 pad 0 0.45 0 0.40 0.85 0.62 0.0 swell 0 0.72 0 0.30 0.90 0.70 +0.3 sustain 0 0.02 0 0.10 1.00 0.15 0.0 reverse 0 0.85 0.05 0.05 0.00 0.02 +0.5 writes ampEnvelope.{delaySeconds,attackSeconds,holdSeconds,decaySeconds,sustainLevel,releaseSeconds,decayCurve} speed (default 0.5): t' = t * (0.25 + speed*1.5), applied to delay/attack/hold/decay/release only ### timbre { op: "timbre", character: "pure" | "warm" | "bright" | "hollow" | "vocal" | "metallic" | "glassy" | "harsh" | "digital", position?: 0..1, target?: 1 | 2 | 3 | "both" | "all" } target defaults to 1; "both" = oscillators 1-2; "all" = oscillators 1-3. character wavetableId defaultPosition: pure sine 0.00; warm warm-saw 0.35; bright airy 0.70; hollow soft-square 0.30; vocal vocal 0.45; metallic metallic 0.55; glassy glass 0.40; harsh harsh 0.75; digital digital 0.50. Also sets oscillators.N.enabled = true. ### width { op: "width", amount: 0..1, method?: "unison" | "pan" | "stereo_fx" | "auto" } auto (default): unison below 0.6; unison + stereo_fx at or above 0.6 unison: oscillators.0.unisonVoices = clamp(round(1 + amount*8), 1, 8) oscillators.0.unisonDetune = amount*0.…
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
reason |
string | yes | Concise musical intent for this one transaction. |
changes |
array | yes | — |
Raw JSON schema
{
"type": "object",
"examples": [
{
"reason": "Make the held patch darker",
"changes": [
{
"path": "filter.cutoffHz",
"value": 3200
}
]
}
],
"properties": {
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Concise musical intent for this one transaction."
},
"changes": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "tone"
},
"brightness": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"keep_air": {
"type": "boolean"
},
"resonance": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"op",
"brightness"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "articulation"
},
"kind": {
"type": "string",
"enum": [
"pluck",
"stab",
"percussive",
"keys",
"bell",
"pad",
"swell",
"sustain",
"reverse"
]
},
"speed": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"op",
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "timbre"
},
"character": {
"type": "string",
"enum": [
"pure",
"warm",
"bright",
"hollow",
"vocal",
"metallic",
"glassy",
"harsh",
"digital"
]
},
"position": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"target": {
"enum": [
1,
2,
3,
"both",
"all"
]
}
},
"required": [
"op",
"character"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "width"
},
"amount": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"method": {
"type": "string",
"enum": [
"unison",
"pan",
"stereo_fx",
"auto"
]
}
},
"required": [
"op",
"amount"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "space"
},
"amount": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"size": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"delay_amount": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"predelay": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"op",
"amount"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "drive"
},
"amount": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"character": {
"type": "string",
"enum": [
"soft",
"hard",
"fold",
"crush"
]
}
},
"required": [
"op",
"amount"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "movement"
},
"amount": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"rate": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"target": {
"type": "string",
"enum": [
"level",
"position",
"pitch",
"cutoff"
]
},
"scope": {
"enum": [
"all",
1,
2,
3
]
},
"shape": {
"type": "string",
"enum": [
"sine",
"triangle",
"ramp_up",
"ramp_down",
"random",
"smooth_random"
]
}
},
"required": [
"op",
"amount"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "gate"
},
"pattern": {
"type": "string",
"enum": [
"even_8",
"even_16",
"offbeat",
"long_short",
"short_long",
"triplet",
"dotted",
"swung",
"stutter",
"none"
]
},
"division": {
"type": "string",
"enum": [
"1/1",
"1/2",
"1/4",
"1/8",
"1/8T",
"1/16",
"1/16T",
"1/32",
"1/64"
]
},
"depth": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"smoothing": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"target": {
"type": "string",
"enum": [
"level",
"position",
"pitch",
"cutoff"
]
},
"scope": {
"enum": [
"all",
1,
2,
3
]
}
},
"required": [
"op",
"pattern"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "balance"
},
"osc1": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"osc2": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"osc3": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"op"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "layer"
},
"role": {
"type": "string",
"enum": [
"sub",
"octave_up",
"fifth",
"unison_detune",
"none"
]
},
"level": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"wavetable": {
"type": "string",
"minLength": 1
}
},
"required": [
"op",
"role"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "pitch"
},
"octave": {
"type": "integer",
"minimum": -3,
"maximum": 3
},
"semitones": {
"type": "integer",
"minimum": -12,
"maximum": 12
},
"glide": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"mono": {
"type": "boolean"
},
"legato": {
"type": "boolean"
}
},
"required": [
"op"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "response"
},
"velocity_to_level": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"velocity_to_cutoff": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"keytrack": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"op"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"path": {
"type": "string",
"enum": [
"metadata.name",
"metadata.category",
"metadata.description",
"metadata.tags",
"oscillators.0.enabled",
"oscillators.0.wavetableId",
"oscillators.0.wavetablePosition",
"oscillators.0.level",
"oscillators.0.transposeSemitones",
"oscillators.0.fineTuneCents",
"oscillators.0.unisonVoices",
"oscillators.0.unisonDetune",
"oscillators.0.stereoSpread",
"oscillators.0.randomPhase",
"oscillators.0.pan",
"oscillators.1.enabled",
"oscillators.1.wavetableId",
"oscillators.1.wavetablePosition",
"oscillators.1.level",
"oscillators.1.transposeSemitones",
"oscillators.1.fineTuneCents",
"oscillators.1.unisonVoices",
"oscillators.1.unisonDetune",
"oscillators.1.stereoSpread",
"oscillators.1.randomPhase",
"oscillators.1.pan",
"oscillators.2.enabled",
"oscillators.2.wavetableId",
"oscillators.2.wavetablePosition",
"oscillators.2.level",
"oscillators.2.transposeSemitones",
"oscillators.2.fineTuneCents",
"oscillators.2.unisonVoices",
"oscillators.2.unisonDetune",
"oscillators.2.stereoSpread",
"oscillators.2.randomPhase",
"oscillators.2.pan",
"ampEnvelope.delaySeconds",
"ampEnvelope.attackSeconds",
"ampEnvelope.holdSeconds",
"ampEnvelope.decaySeconds",
"ampEnvelope.sustainLevel",
"ampEnvelope.releaseSeconds",
"ampEnvelope.attackCurve",
"ampEnvelope.decayCurve",
"ampEnvelope.releaseCurve",
"modEnvelope.delaySeconds",
"modEnvelope.attackSeconds",
"modEnvelope.holdSeconds",
"modEnvelope.decaySeconds",
"modEnvelope.sustainLevel",
"modEnvelope.releaseSeconds",
"modEnvelope.attackCurve",
"modEnvelope.decayCurve",
"modEnvelope.releaseCurve",
"filter.enabled",
"filter.type",
"filter.cutoffHz",
"filter.resonance",
"filter.slope",
"filter.drive",
"filter.keytrack",
"filter.velocityToCutoff",
"lfo1.enabled",
"lfo1.points",
"lfo1.rate",
"lfo1.phase",
"lfo1.smooth",
"lfo1.smoothing",
"lfo1.target",
"lfo1.scope",
"lfo1.depth",
"lfo2.enabled",
"lfo2.points",
"lfo2.rate",
"lfo2.phase",
"lfo2.smooth",
"lfo2.smoothing",
"lfo2.target",
"lfo2.scope",
"lfo2.depth",
"voice.polyphony",
"voice.legato",
"voice.glideSeconds",
"voice.velocitySensitivity",
"voice.transposeSemitones",
"effects.order",
"effects.distortion.enabled",
"effects.distortion.type",
"effects.distortion.drive",
"effects.distortion.mix",
"effects.compressor.enabled",
"effects.compressor.bands",
"effects.compressor.amount",
"effects.compressor.attack",
"effects.compressor.release",
"effects.compressor.mix",
"effects.chorus.enabled",
"effects.chorus.voices",
"effects.chorus.rate",
"effects.chorus.depth",
"effects.chorus.feedback",
"effects.chorus.mix",
"effects.delay.enabled",
"effects.delay.mode",
"effects.delay.division",
"effects.delay.timeSeconds",
"effects.delay.feedback",
"effects.delay.mix",
"effects.reverb.enabled",
"effects.reverb.mix",
"effects.reverb.decaySeconds",
"effects.reverb.size",
"effects.reverb.predelay",
"effects.reverb.lowCut",
"effects.reverb.highCut"
]
},
"value": {
"description": "JSON value for the selected path. The path-specific type and bounds are validated before commit.",
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array"
},
{
"type": "object"
}
]
}
},
"required": [
"path",
"value"
],
"additionalProperties": false
}
],
"examples": [
{
"path": "filter.cutoffHz",
"value": 3200
}
]
}
}
},
"required": [
"reason",
"changes"
],
"additionalProperties": false
}
Similar websites
wfsim.app
A Warframe calculator that simulates the fight instead of estimating it — builder, simulator, optimizer. Every formula cites its source, and the golden tests ar…
commonplace-webmcp.vercel.app
Commonplace is an editable social reading space built for people and their browser agents.
pixelforge-studio.appcaster.chatgpt.site
A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.
pixelite.taskcraft.site
Pixelite