OSC ↔ MIDI bridge — 986 synthesizers and DAWs. A MIDI MCP and OSC MCP for controlling them.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Comment on a shared preset — how it sounds, how you used it, what you changed — optionally attaching your remix (a preset you shared with derived_from). Comments are public at once. Also: remove one of this account's comments (remove), or flag someone else's as abusive or off-topic (flag); comments several accounts flag are hidden until reviewed.
The preset to comment on.
Id of someone else's comment to flag (instead of commenting).
The comment (2000 characters at most).
Id of your remix, to attach.
Id of this account's comment to remove (instead of commenting).
Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 23, 2026.
Comment on a shared preset — how it sounds, how you used it, what you changed — optionally attaching your remix (a preset you shared with derived_from). Comments are public at once. Also: remove one of this account's comments (remove), or flag someone else's as abusive or off-topic (flag); comments several accounts flag are hidden until reviewed.
| Argument | Type | Description |
|---|---|---|
| id | string | The preset to comment on. |
| flag | integer | Id of someone else's comment to flag (instead of commenting). |
| text | string | The comment (2000 characters at most). |
| remix | string | Id of your remix, to attach. |
| remove | integer | Id of this account's comment to remove (instead of commenting). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The preset to comment on."
},
"flag": {
"type": "integer",
"description": "Id of someone else's comment to flag (instead of commenting)."
},
"text": {
"type": "string",
"description": "The comment (2000 characters at most)."
},
"remix": {
"type": "string",
"description": "Id of your remix, to attach."
},
"remove": {
"type": "integer",
"description": "Id of this account's comment to remove (instead of commenting)."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Mark a shared preset as a favorite of this account (on: false to unmark). Without id, lists this account's favorites.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| on | boolean | Default true. |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"on": {
"type": "boolean",
"description": "Default true."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Search what SynthHub users shared (CC BY-SA 4.0): sounds, sequences, kits, projects, banks, MIDI clips. Filter by device, kind, category, genre, tag, author (pseudonym) or words; sort by newest, most popular (favorites and real loads) or most trusted (confirmed on real devices). Returns, per preset, its id, name, kind, device, description, author, version, whether it has device data, settings, a MIDI file or an audio preview (URL), and its counts. Get one with get_preset.
| Argument | Type | Description |
|---|---|---|
| tag | string | |
| kind | string | |
| sort | string | Default new. |
| genre | string | |
| limit | integer | At most this many (default 20). |
| query | string | Words that must all appear in the name, description, tags, genres or category. |
| author | string | An author's pseudonym (e.g. 'u1a2b3c4d'). |
| device | string | Driver id or slug (its other variants are included). |
| user_id |
Follow an author of shared presets (by pseudonym), or stop (on: false); with author alone and on omitted, shows their page: profile, presets, followers. Without author, lists the newest presets of the authors this account follows.
| Argument | Type | Description |
|---|---|---|
| on | boolean | |
| limit | integer | |
| author | string | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"properties": {
"on": {
"type": "boolean"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"author": {
"type": "string"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Where a contribution stands: pending (waiting for the merge job), merged (with its pull request), rejected (with the reason), or held (its account is under review).
| Argument | Type | Description |
|---|---|---|
| id* | integer | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Fetch the markdown companion documentation for one device, if present. The slug is the device's OSC prefix without the leading slash (e.g. 'ableton' for /ableton).
| Argument | Type | Description |
|---|---|---|
| slug* | string | Device slug, e.g. 'ableton' or 'minilab3' |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Device slug, e.g. 'ableton' or 'minilab3'"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
}
}One shared preset in full: its content (SysEx hex, settings by driver address, MIDI file), description and playing tips, versions with their change notes, what it was derived from and its derivatives (remixes), comments, preview URLs, author, licence and attribution line, trust and counts. Load it with load_preset; credit it as the attribution line says when you publish something made from it.
| Argument | Type | Description |
|---|---|---|
| id* | string | Preset id from find_presets (e.g. 'p3fa9c1d2e4b7'). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| version | integer | An earlier version (default the current one). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Preset id from find_presets (e.g. 'p3fa9c1d2e4b7')."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "An earlier version (default the current one)."
}
},
"additionalProperties": false
}How far a driver has been confirmed by people who used it, per firmware: status (unreported, unconfirmed, usage-verified, firmware-dependent, failing, disputed), how many users report it works / fails / partly works, each firmware's own status, the device identities seen for each firmware, and the same per OSC address. needs_firmware: true means reports disagree and some have no firmware — identify the device before reporting (see learn). Check it before relying on a driver, together with its source_tier.
| Argument | Type | Description |
|---|---|---|
| device* | string | Driver id (e.g. 'korg/minilogue') or slug, from list_devices. |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"device"
],
"properties": {
"device": {
"type": "string",
"description": "Driver id (e.g. 'korg/minilogue') or slug, from list_devices."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Link this account to the user's SynthHub account on the site: returns a one-time address (valid 15 minutes) for the user to open and sign in (passkey, e-mail, Google or Discord). Afterwards what this account shared appears under their profile, and they manage it — and their favorites, collections, comments — from the site. Offer it when the user wants to see or manage what you shared for them.
| Argument | Type | Description |
|---|---|---|
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Find device drivers in the catalogue (about 980 synths, drum machines, controllers and DAWs). Without arguments it lists them all; `query` keeps drivers whose vendor, name or slug contain every word (e.g. 'korg minilogue'). Returns name, vendor, OSC prefix (slug), kind, source tier and firmware version when the source states one. Pass the slug to list_routes for the full CC/NRPN/SysEx map.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| limit | integer | Return at most this many drivers. |
| query | string | Words that must all appear in the vendor, name or slug (case-insensitive). |
| vendor | string | Exact vendor name, case-insensitive (e.g. 'Moog'). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"properties": {
"kind": {
"enum": [
"hardware",
"software"
],
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Return at most this many drivers."
},
"query": {
"type": "string",
"description": "Words that must all appear in the vendor, name or slug (case-insensitive)."
},
"vendor": {
"type": "string",
"description": "Exact vendor name, case-insensitive (e.g. 'Moog')."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Return the OSC routes a device exposes: declarative commands (OSC paths it accepts), cc/nrpn params, sysex params, named note triggers (drum sounds), and reply patterns. Use this to discover what a device can do.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Device slug, e.g. 'minilab3' |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Device slug, e.g. 'minilab3'"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
}
}Load a shared preset (find_presets, get_preset) into the user's device through a relay: its settings are sent through the driver, its patch data as SysEx — which replaces the sound the device holds, so the relay asks the user to accept it and this call waits for the answer (up to 2 minutes): tell the user first. Afterwards, tell SynthHub how it went with report_preset.
| Argument | Type | Description |
|---|---|---|
| id* | string | Preset id (e.g. 'p3fa9c1d2e4b7'). |
| code* | string | The pairing code the relay page or program shows. |
| port | string | Output port name (or part of it); needed when the relay has several. |
| gap_ms | integer | Pause between the SysEx messages, for devices that write slowly (default 50). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"code",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Preset id (e.g. 'p3fa9c1d2e4b7')."
},
"code": {
"type": "string",
"description": "The pairing code the relay page or program shows."
},
"port": {
"type": "string",
"description": "Output port name (or part of it); needed when the relay has several."
},
"gap_ms": {
"type": "integer",
"maximum": 2000,
"minimum": 0,
"description": "Pause between the SysEx messages, for devices that write slowly (default 50)."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Collections of shared presets, public, made by one account (e.g. 'Dark basses for minilogue'). action: create (name, description), rename (collection, name, description), add or remove (collection, id), delete (collection), get (collection: its presets), list (this account's collections, or author: someone's).
| Argument | Type | Description |
|---|---|---|
| id | string | Preset id to add or remove. |
| name | string | |
| action* | string | |
| author | string | With list: an author's pseudonym. |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| collection | string | Collection id (e.g. 'c1a2b3c4d5e6'). |
| description | string |
{
"type": "object",
"required": [
"action"
],
"properties": {
"id": {
"type": "string",
"description": "Preset id to add or remove."
},
"name": {
"type": "string"
},
"action": {
"enum": [
"create",
"rename",
"add",
"remove",
"delete",
"get",
"list"
],
"type": "string"
},
"author": {
"type": "string",
"description": "With list: an author's pseudonym."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"collection": {
"type": "string",
"description": "Collection id (e.g. 'c1a2b3c4d5e6')."
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}Find which devices are connected to the user's machine through a relay: sends the MIDI Identity Request (F0 7E 7F 06 01 F7, changes nothing on the device) to every output and matches the answers — manufacturer, model, firmware version — against the catalogue. Returns the best driver ids and identity_hex to pass to report_result. Devices that do not answer are only listed by port name.
| Argument | Type | Description |
|---|---|---|
| code* | string | The pairing code the relay page or program shows (e.g. 'K7QM-2XPA'). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| timeout_ms | integer | How long to wait for answers (default 1000). |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The pairing code the relay page or program shows (e.g. 'K7QM-2XPA')."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"timeout_ms": {
"type": "integer",
"maximum": 5000,
"minimum": 100,
"description": "How long to wait for answers (default 1000)."
}
},
"additionalProperties": false
}Listen to what the user's hardware sends through a relay for a few seconds: notes, CC, NRPN, SysEx, decoded. With a device, each CC or NRPN that moved is matched to the driver's OSC addresses — ask the user to move one control on the device while listening to learn which address it is, or to check that the driver's map is right (then record what you saw with report_mapping, so the catalogue learns it).
| Argument | Type | Description |
|---|---|---|
| code* | string | The pairing code the relay page or program shows (e.g. 'K7QM-2XPA'). |
| device | string | Driver id or slug, to match what moved to its addresses. |
| seconds | integer | How long to listen (default 3). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The pairing code the relay page or program shows (e.g. 'K7QM-2XPA')."
},
"device": {
"type": "string",
"description": "Driver id or slug, to match what moved to its addresses."
},
"seconds": {
"type": "integer",
"maximum": 15,
"minimum": 1,
"description": "How long to listen (default 3)."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Play or set something on the user's hardware through a relay: give a driver (id or slug) and one of its OSC addresses from list_routes with its arguments (e.g. address '/filter/cutoff', args [64]; '/note/on', args [60, 100]) — the server turns it into the right CC, NRPN, note or SysEx message. Or give raw MIDI bytes as hex. Values are the device's own numbers, clamped to the parameter's range. Any SysEx but the Identity Request (patch dumps, stores, settings, preset restores) may overwrite the device's memory: the relay asks the user to accept it first and this call waits for the answer (up to 2 minutes), so tell the user what you are about to send.
| Argument | Type | Description |
|---|---|---|
| hex | string | Raw MIDI messages instead of device/address, e.g. 'B0 2B 40'. |
| args | array | OSC arguments (numbers, strings, booleans). |
| code* | string | The pairing code the relay page or program shows (e.g. 'K7QM-2XPA'). |
| port | string | Output port name (or part of it); needed when the relay has several. |
| device | string | Driver id (e.g. 'korg/minilogue') or slug. |
| gap_ms | integer | Pause between the SysEx messages of a dump, for devices that write slowly (default 50). |
| address | string | OSC address of the driver, with or without its prefix. |
Check a relay: the user opened https://synthhub.roomi-fields.com/connect/ (or ran osc-bridge connect) and gave you its pairing code. Returns the MIDI output and input ports of their machine. Nothing is sent to the hardware.
| Argument | Type | Description |
|---|---|---|
| code* | string | The pairing code the relay page or program shows (e.g. 'K7QM-2XPA'). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The pairing code the relay page or program shows (e.g. 'K7QM-2XPA')."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Teach the catalogue which MIDI message a control really sends: after the user moved one control on the device (see relay_listen), give the driver address it is (from list_routes) — or, for a control the driver lacks, its panel label — and the CC, NRPN or note it sent, with the firmware and the device's Identity Reply when you have them. When several accounts observe the same thing on one firmware the mapping is learned; get_trust shows learned mappings and where they differ from the driver.
| Argument | Type | Description |
|---|---|---|
| cc | integer | |
| note | integer | |
| label | string | The control's panel label, when the driver has no address for it. |
| device* | string | Driver id or slug. |
| address | string | The driver's OSC address for the control. |
| channel | integer | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| firmware | string | |
| nrpn_lsb | integer |
Tell SynthHub how a shared preset behaved once loaded on a real device: 'works' (it loaded and sounds as described), 'fails' (refused, wrong sound), or 'factory' (it is a factory preset or someone else's sound: presets that several users flag are hidden until reviewed). Give the firmware.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| note | string | What happened, briefly (500 characters at most). |
| outcome* | string | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| firmware | string |
{
"type": "object",
"required": [
"id",
"outcome"
],
"properties": {
"id": {
"type": "string"
},
"note": {
"type": "string",
"description": "What happened, briefly (500 characters at most)."
},
"outcome": {
"enum": [
"works",
"fails",
"factory"
],
"type": "string"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"firmware": {
"type": "string"
}
},
"additionalProperties": false
}Tell the catalogue how a driver behaved on a real device, after testing it: 'works', 'fails' or 'partial', for the whole driver or one OSC address (from list_routes). Give the firmware version, and the device's reply to the MIDI Identity Request (F0 7E 7F 06 01 F7) as identity_hex when you can: trust is counted per firmware, so a failure on another firmware does not count against the driver, and a report of unknown firmware cannot be placed. Several accounts that agree on one firmware mark the driver usage-verified there; a report that several others contradict is rolled back and puts its account under review. Report only what was actually tested.
| Argument | Type | Description |
|---|---|---|
| note | string | What happened, briefly (500 characters at most): wrong range, no effect, other parameter moved… |
| device* | string | Driver id (e.g. 'korg/minilogue') or slug, from list_devices. |
| address | string | One OSC address of the driver (e.g. '/minilogue/filter/cutoff'); omit to report on the whole driver. |
| outcome* | string | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| firmware | string | Firmware version of the tested device. |
| identity_hex | string |
Set the display name and link (https) shown with this account's shared presets and comments, instead of its pseudonym alone. Ask the user what they want shown; both are public.
| Argument | Type | Description |
|---|---|---|
| link | string | An https:// address: their site, SoundCloud, Bandcamp… |
| name | string | 40 characters at most. |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"properties": {
"link": {
"type": "string",
"description": "An https:// address: their site, SoundCloud, Bandcamp…"
},
"name": {
"type": "string",
"description": "40 characters at most."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}Share something the user made on a device with every SynthHub user, under CC BY-SA 4.0: a sound, a sequence or pattern, a kit, a project, a bank of their own sounds, or a MIDI clip any device can play. Its content: the device's own data (SysEx, e.g. from backup_presets), settings by driver address (from list_routes, e.g. {'/filter/cutoff': [90]}, which also works for devices without dumps), and/or a standard MIDI file. Only what the user made: never factory presets, nor sounds or sequences bought or downloaded from others — set own_sound only after asking the user. Made from someone else's shared preset? Pass derived_from: it credits them, as the licence requires. Describe it well (category, genres, tags, tempo, key, tips): that is how people find it. The same content shared twice returns the existing id; the author publishes new versions with update_preset and can withdraw it (withdraw_preset). Through a relay, the device data can be captured from the device itself: pass code and start the dump from the device's menu during the call, or give request_hex (the device's dump-request message, which the user accepts at the relay). An audio preview is added by its author with PUT /u/<account>/v1/presets/<id>/audio (MP3, Ogg, M4A or WebM, 1 MB at most).
| Argument | Type | Description |
|---|---|---|
| hex | string | The device data as SysEx, in hex (64 KB at most). |
| key | string | Musical key, e.g. 'A minor'. |
| code | string | A relay's pairing code: capture the device data from the device instead of hex. |
| kind | string | What it is (default sound). |
| name* | string | Its name (80 characters at most). |
Contribute a driver for a device the catalogue lacks (or a better one): the full driver file as a JSON object, in the osc-bridge device schema (device.name, device.vendor, device.osc_prefix, and cc_params / params / commands / triggers — see https://synthhub.roomi-fields.com/DEVICE_JSON_SCHEMA/). It is checked, then merged into the public catalogue by the merge job if it parses, lints and passes the tests, as its own file of source 'agent-contributed'. Say where the data comes from (manual page, tested on the device).
| Argument | Type | Description |
|---|---|---|
| note | string | |
| driver* | object | The driver file. |
| source | string | Where the mapping comes from (e.g. 'manual v1.2 p. 34, tested on the device'). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| firmware | string | Firmware the driver was written or tested for. |
{
"type": "object",
"required": [
"driver"
],
"properties": {
"note": {
"type": "string"
},
"driver": {
"type": "object",
"description": "The driver file."
},
"source": {
"type": "string",
"description": "Where the mapping comes from (e.g. 'manual v1.2 p. 34, tested on the device')."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"firmware": {
"type": "string",
"description": "Firmware the driver was written or tested for."
}
},
"additionalProperties": false
}Contribute a corrected variant of a driver from what the catalogue learned: where learned mappings (get_trust → mappings, differs: true) disagree with the driver on one firmware, builds a copy of the driver with the learned CC / NRPN numbers, as a new file for that firmware, and queues it for the merge job.
| Argument | Type | Description |
|---|---|---|
| device* | string | Driver id or slug. |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| firmware | string | Needed when learned mappings differ on several firmwares. |
{
"type": "object",
"required": [
"device"
],
"properties": {
"device": {
"type": "string",
"description": "Driver id or slug."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"firmware": {
"type": "string",
"description": "Needed when learned mappings differ on several firmwares."
}
},
"additionalProperties": false
}Publish a new version of a preset this account shared: new content (hex, file, settings or midi_file) makes a new version, kept with a change note — earlier versions stay available; the description fields alone change it in place. Someone else's preset: share yours with derived_from instead.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| hex | string | |
| key | string | |
| name | string | |
| tags | array | |
| tips | string | |
| tempo | number | |
| genres | array | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| category | string | |
| firmware | string |
Withdraw a preset this account shared: it is no longer listed nor served. Copies others already made stay under CC BY-SA.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}| string |
| Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| category | string |
{
"type": "object",
"properties": {
"tag": {
"type": "string"
},
"kind": {
"enum": [
"sound",
"sequence",
"kit",
"project",
"bank",
"clip"
],
"type": "string"
},
"sort": {
"enum": [
"new",
"popular",
"trusted"
],
"type": "string",
"description": "Default new."
},
"genre": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "At most this many (default 20)."
},
"query": {
"type": "string",
"description": "Words that must all appear in the name, description, tags, genres or category."
},
"author": {
"type": "string",
"description": "An author's pseudonym (e.g. 'u1a2b3c4d')."
},
"device": {
"type": "string",
"description": "Driver id or slug (its other variants are included)."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"category": {
"enum": [
"bass",
"lead",
"pad",
"pluck",
"keys",
"organ",
"brass",
"strings",
"bell",
"arp",
"sequence",
"drums",
"percussion",
"fx",
"texture",
"vocal",
"other"
],
"type": "string"
}
},
"additionalProperties": false
}| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
{
"type": "object",
"required": [
"code"
],
"properties": {
"hex": {
"type": "string",
"description": "Raw MIDI messages instead of device/address, e.g. 'B0 2B 40'."
},
"args": {
"type": "array",
"items": {},
"description": "OSC arguments (numbers, strings, booleans)."
},
"code": {
"type": "string",
"description": "The pairing code the relay page or program shows (e.g. 'K7QM-2XPA')."
},
"port": {
"type": "string",
"description": "Output port name (or part of it); needed when the relay has several."
},
"device": {
"type": "string",
"description": "Driver id (e.g. 'korg/minilogue') or slug."
},
"gap_ms": {
"type": "integer",
"maximum": 2000,
"minimum": 0,
"description": "Pause between the SysEx messages of a dump, for devices that write slowly (default 50)."
},
"address": {
"type": "string",
"description": "OSC address of the driver, with or without its prefix."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
}
},
"additionalProperties": false
}| nrpn_msb | integer |
| identity_hex | string | The device's reply to the MIDI Identity Request, in hex. |
{
"type": "object",
"required": [
"device"
],
"properties": {
"cc": {
"type": "integer",
"maximum": 127,
"minimum": 0
},
"note": {
"type": "integer",
"maximum": 127,
"minimum": 0
},
"label": {
"type": "string",
"description": "The control's panel label, when the driver has no address for it."
},
"device": {
"type": "string",
"description": "Driver id or slug."
},
"address": {
"type": "string",
"description": "The driver's OSC address for the control."
},
"channel": {
"type": "integer",
"maximum": 16,
"minimum": 1
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"firmware": {
"type": "string"
},
"nrpn_lsb": {
"type": "integer",
"maximum": 127,
"minimum": 0
},
"nrpn_msb": {
"type": "integer",
"maximum": 127,
"minimum": 0
},
"identity_hex": {
"type": "string",
"description": "The device's reply to the MIDI Identity Request, in hex."
}
},
"additionalProperties": false
}| The device's reply to the MIDI Identity Request, in hex (e.g. 'F0 7E 00 06 02 42 2C 01 00 00 02 01 00 00 F7'). Proves the device was connected and carries its firmware version. |
{
"type": "object",
"required": [
"device",
"outcome"
],
"properties": {
"note": {
"type": "string",
"description": "What happened, briefly (500 characters at most): wrong range, no effect, other parameter moved…"
},
"device": {
"type": "string",
"description": "Driver id (e.g. 'korg/minilogue') or slug, from list_devices."
},
"address": {
"type": "string",
"description": "One OSC address of the driver (e.g. '/minilogue/filter/cutoff'); omit to report on the whole driver."
},
"outcome": {
"enum": [
"works",
"fails",
"partial"
],
"type": "string"
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"firmware": {
"type": "string",
"description": "Firmware version of the tested device."
},
"identity_hex": {
"type": "string",
"description": "The device's reply to the MIDI Identity Request, in hex (e.g. 'F0 7E 00 06 02 42 2C 01 00 00 02 01 00 00 F7'). Proves the device was connected and carries its firmware version."
}
},
"additionalProperties": false
}| port | string | With code: the device's port name (or part of it), when the relay has several. |
| tags | array | Character and free words: 'warm', 'dark', 'evolving'… (8 at most). |
| tips | string | How to play it: mod wheel, aftertouch, register… (500 characters at most). |
| tempo | number | BPM, for sequences and clips. |
| device* | string | Driver id (e.g. 'korg/minilogue') or slug. |
| genres | array | Musical styles: 'techno', 'ambient'… (8 at most). |
| seconds | integer | With code: how long to wait for the dump (default 5). |
| user_id | string | Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional. |
| category | string | The kind of sound or part. |
| firmware | string | Firmware version of the device it was made on. |
| settings | object | Settings by driver address: {'/filter/cutoff': [90], '/amp/attack': [12]} (512 at most). |
| own_sound* | boolean | Must be true: the user made it (not a factory preset, not someone else's). |
| description | string | What it sounds like (500 characters at most). |
| midi_base64 | string | A standard MIDI file, base64 (64 KB at most). |
| request_hex | string | With code: the device's dump-request SysEx, sent first (e.g. 'F0 42 30 00 01 2C 10 F7'). |
| derived_from | string | Id of the shared preset it was made from. |
{
"type": "object",
"required": [
"device",
"name",
"own_sound"
],
"properties": {
"hex": {
"type": "string",
"description": "The device data as SysEx, in hex (64 KB at most)."
},
"key": {
"type": "string",
"description": "Musical key, e.g. 'A minor'."
},
"code": {
"type": "string",
"description": "A relay's pairing code: capture the device data from the device instead of hex."
},
"kind": {
"enum": [
"sound",
"sequence",
"kit",
"project",
"bank",
"clip"
],
"type": "string",
"description": "What it is (default sound)."
},
"name": {
"type": "string",
"description": "Its name (80 characters at most)."
},
"port": {
"type": "string",
"description": "With code: the device's port name (or part of it), when the relay has several."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Character and free words: 'warm', 'dark', 'evolving'… (8 at most)."
},
"tips": {
"type": "string",
"description": "How to play it: mod wheel, aftertouch, register… (500 characters at most)."
},
"tempo": {
"type": "number",
"description": "BPM, for sequences and clips."
},
"device": {
"type": "string",
"description": "Driver id (e.g. 'korg/minilogue') or slug."
},
"genres": {
"type": "array",
"items": {
"type": "string"
},
"description": "Musical styles: 'techno', 'ambient'… (8 at most)."
},
"seconds": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "With code: how long to wait for the dump (default 5)."
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"category": {
"enum": [
"bass",
"lead",
"pad",
"pluck",
"keys",
"organ",
"brass",
"strings",
"bell",
"arp",
"sequence",
"drums",
"percussion",
"fx",
"texture",
"vocal",
"other"
],
"type": "string",
"description": "The kind of sound or part."
},
"firmware": {
"type": "string",
"description": "Firmware version of the device it was made on."
},
"settings": {
"type": "object",
"description": "Settings by driver address: {'/filter/cutoff': [90], '/amp/attack': [12]} (512 at most).",
"additionalProperties": true
},
"own_sound": {
"type": "boolean",
"description": "Must be true: the user made it (not a factory preset, not someone else's)."
},
"description": {
"type": "string",
"description": "What it sounds like (500 characters at most)."
},
"midi_base64": {
"type": "string",
"description": "A standard MIDI file, base64 (64 KB at most)."
},
"request_hex": {
"type": "string",
"description": "With code: the device's dump-request SysEx, sent first (e.g. 'F0 42 30 00 01 2C 10 F7')."
},
"derived_from": {
"type": "string",
"description": "Id of the shared preset it was made from."
}
},
"additionalProperties": false
}| settings | object |
| changelog | string | What changed in this version (500 characters at most). |
| description | string |
| midi_base64 | string | A standard MIDI file, base64 (64 KB at most). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"hex": {
"type": "string"
},
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"tips": {
"type": "string"
},
"tempo": {
"type": "number"
},
"genres": {
"type": "array",
"items": {
"type": "string"
}
},
"user_id": {
"type": "string",
"description": "Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional."
},
"category": {
"enum": [
"bass",
"lead",
"pad",
"pluck",
"keys",
"organ",
"brass",
"strings",
"bell",
"arp",
"sequence",
"drums",
"percussion",
"fx",
"texture",
"vocal",
"other"
],
"type": "string"
},
"firmware": {
"type": "string"
},
"settings": {
"type": "object",
"additionalProperties": true
},
"changelog": {
"type": "string",
"description": "What changed in this version (500 characters at most)."
},
"description": {
"type": "string"
},
"midi_base64": {
"type": "string",
"description": "A standard MIDI file, base64 (64 KB at most)."
}
},
"additionalProperties": false
}