{
 "_sources": [
  {
   "type": "vendor-doc",
   "name": "norns script concrete",
   "url": "https://github.com/sonocircuit/concrete/tree/edc06eab87040adf411d88af40f2ab6b2c636471",
   "notes": "norns script concrete: concrete.lua, lib/concrete_lfo.lua @ edc06ea. No licence declared. Listed in norns.community (monome/norns-community community.json @ 41d05e7).",
   "firmware": "concrete-edc06ea",
   "imported_at": "2026-10-26"
  }
 ],
 "_limitations": "Source: the Lua source of the norns script concrete by sonoCircuit (sonocircuit/concrete at edc06ea), listed in norns.community. Shares the norns system OSC of monome/norns.vendor.fw-2.9.4 (port 10111, /param, /remote): give the norns' IP address as host override. Its own routes are the 72 parameter(s) whose id is written out in its source, read without running it, with range, options and default when written out too; set them while the script runs on the norns. 26 parameter call(s) could not be read without running the script (ids built at run time, values from variables) and are not mapped: reach them with the base driver's /param/{id}. Parameters added by libraries or engines outside the repository are not mapped either. A value goes in the parameter's units (an option's index from 1). MIDI is not mapped: the script's MIDI handling is its own and parameter MIDI mappings are learned by each user (PMAP). Untested on hardware.",
 "_coverage": {
  "host_software": "norns script concrete",
  "commands": 72,
  "subscriptions": 0,
  "replies": 0
 },
 "midi_of": "monome/norns.vendor.fw-2.9.4",
 "device": {
  "name": "norns",
  "vendor": "Monome",
  "revision": "script concrete (sonocircuit/concrete @ edc06ea)",
  "osc_prefix": "/norns_concrete"
 },
 "commands": [
  {
   "osc": "/param/arc_orientation",
   "section": "ARC",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "horizontal": 1,
      "vertical": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/arc_orientation",
    "args": [
     "{value}"
    ]
   },
   "_notes": "arc orientation: option index, from 1."
  },
  {
   "osc": "/param/arc_vs_sens",
   "section": "ARC",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "lo": 1,
      "hi": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/arc_vs_sens",
    "args": [
     "{value}"
    ]
   },
   "_notes": "varispeeed sensitivity: option index, from 1."
  },
  {
   "osc": "/param/load_reel",
   "section": "load & save",
   "args": [
    {
     "name": "value",
     "type": "string"
    }
   ],
   "forward": {
    "path": "/param/load_reel",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> load reel: a file path on the norns."
  },
  {
   "osc": "/param/save_reel",
   "section": "load & save",
   "args": [],
   "forward": {
    "path": "/param/save_reel",
    "args": [
     1
    ]
   },
   "_notes": "< save reel: trigger."
  },
  {
   "osc": "/param/load_reel_channel",
   "section": "load & save",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "left": 1,
      "right": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/load_reel_channel",
    "args": [
     "{value}"
    ]
   },
   "_notes": "? select channel: option index, from 1."
  },
  {
   "osc": "/param/save_buffer_pset",
   "section": "load & save",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "no": 1,
      "yes": 2
     },
     "default": 2
    }
   ],
   "forward": {
    "path": "/param/save_buffer_pset",
    "args": [
     "{value}"
    ]
   },
   "_notes": "? save reel with pset: option index, from 1."
  },
  {
   "osc": "/param/clear_reel",
   "section": "load & save",
   "args": [],
   "forward": {
    "path": "/param/clear_reel",
    "args": [
     1
    ]
   },
   "_notes": "!! clear and reset reel !!: trigger."
  },
  {
   "osc": "/param/toggle_rec",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/toggle_rec",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> toggle rec: trigger, 0 or 1."
  },
  {
   "osc": "/param/rec_mode",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "input only": 1,
      "s.o.s": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/rec_mode",
    "args": [
     "{value}"
    ]
   },
   "_notes": "mode: option index, from 1."
  },
  {
   "osc": "/param/rec_input",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      4
     ],
     "values": {
      "summed": 1,
      "left": 2,
      "right": 3,
      "off": 4
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/rec_input",
    "args": [
     "{value}"
    ]
   },
   "_notes": "input: option index, from 1."
  },
  {
   "osc": "/param/rec_dest",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      3
     ],
     "values": {
      "follow loop": 1,
      "active splice": 2,
      "new splice": 3
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/rec_dest",
    "args": [
     "{value}"
    ]
   },
   "_notes": "destination: option index, from 1."
  },
  {
   "osc": "/param/rec_rate",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      3
     ],
     "values": {
      "follow rate": 1,
      "constant": 2,
      "highspeed": 3
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/rec_rate",
    "args": [
     "{value}"
    ]
   },
   "_notes": "rate: option index, from 1."
  },
  {
   "osc": "/param/rec_threshold",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": -12
    }
   ],
   "forward": {
    "path": "/param/rec_threshold",
    "args": [
     "{value}"
    ]
   },
   "_notes": "threshold: -40 to 6 dB."
  },
  {
   "osc": "/param/sos_level",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0.8
    }
   ],
   "forward": {
    "path": "/param/sos_level",
    "args": [
     "{value}"
    ]
   },
   "_notes": "s.o.s level: 0 to 1."
  },
  {
   "osc": "/param/rec_level",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/rec_level",
    "args": [
     "{value}"
    ]
   },
   "_notes": "rec level: 0 to 1."
  },
  {
   "osc": "/param/dub_level",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0.8
    }
   ],
   "forward": {
    "path": "/param/dub_level",
    "args": [
     "{value}"
    ]
   },
   "_notes": "overdub level: 0 to 1."
  },
  {
   "osc": "/param/ghost_rec",
   "section": "recording",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "no": 1,
      "yes": 2
     },
     "default": 2
    }
   ],
   "forward": {
    "path": "/param/ghost_rec",
    "args": [
     "{value}"
    ]
   },
   "_notes": "record ghost: option index, from 1."
  },
  {
   "osc": "/param/append_file",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "string"
    }
   ],
   "forward": {
    "path": "/param/append_file",
    "args": [
     "{value}"
    ]
   },
   "_notes": ">> append splice to reel: a file path on the norns."
  },
  {
   "osc": "/param/load_splice_channel",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "left": 1,
      "right": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/load_splice_channel",
    "args": [
     "{value}"
    ]
   },
   "_notes": "? select channel: option index, from 1."
  },
  {
   "osc": "/param/save_splice",
   "section": "splices",
   "args": [],
   "forward": {
    "path": "/param/save_splice",
    "args": [
     1
    ]
   },
   "_notes": "<< save active splice: trigger."
  },
  {
   "osc": "/param/flip_splice_param",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/flip_splice_param",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> reverse active splice: trigger, 0 or 1."
  },
  {
   "osc": "/param/reduce_gain",
   "section": "splices",
   "args": [],
   "forward": {
    "path": "/param/reduce_gain",
    "args": [
     1
    ]
   },
   "_notes": "> reduce gain [-1bB]: trigger."
  },
  {
   "osc": "/param/add_splice_param",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/add_splice_param",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> add splice marker: trigger, 0 or 1."
  },
  {
   "osc": "/param/remove_splice_param",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/remove_splice_param",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> remove splice marker: trigger, 0 or 1."
  },
  {
   "osc": "/param/clear_markers",
   "section": "splices",
   "args": [],
   "forward": {
    "path": "/param/clear_markers",
    "args": [
     1
    ]
   },
   "_notes": "> !! clear all markers !!: trigger."
  },
  {
   "osc": "/param/splice_select",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/splice_select",
    "args": [
     "{value}"
    ]
   },
   "_notes": "select splice: 0 to 1."
  },
  {
   "osc": "/param/next_splice_param",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/next_splice_param",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> next splice: trigger, 0 or 1."
  },
  {
   "osc": "/param/prev_splice_param",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/prev_splice_param",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> previous splice: trigger, 0 or 1."
  },
  {
   "osc": "/param/rand_splice_param",
   "section": "splices",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/rand_splice_param",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> random splice: trigger, 0 or 1."
  },
  {
   "osc": "/param/clear_splice",
   "section": "splices",
   "args": [],
   "forward": {
    "path": "/param/clear_splice",
    "args": [
     1
    ]
   },
   "_notes": "> !! delete active splice !!: trigger."
  },
  {
   "osc": "/param/global_level",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/global_level",
    "args": [
     "{value}"
    ]
   },
   "_notes": "level: 0 to 1."
  },
  {
   "osc": "/param/global_pan",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/global_pan",
    "args": [
     "{value}"
    ]
   },
   "_notes": "pan: -1 to 1."
  },
  {
   "osc": "/param/global_cutoff_abs",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 18000
    }
   ],
   "forward": {
    "path": "/param/global_cutoff_abs",
    "args": [
     "{value}"
    ]
   },
   "_notes": "cutoff: 20 to 18000 Hz."
  },
  {
   "osc": "/param/global_filter_q_abs",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 2.0
    }
   ],
   "forward": {
    "path": "/param/global_filter_q_abs",
    "args": [
     "{value}"
    ]
   },
   "_notes": "filter q: 0.1 to 4."
  },
  {
   "osc": "/param/global_cutoff_rel",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      -1,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/global_cutoff_rel",
    "args": [
     "{value}"
    ]
   },
   "_notes": "cutoff."
  },
  {
   "osc": "/param/global_filter_q_rel",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      -1,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/global_filter_q_rel",
    "args": [
     "{value}"
    ]
   },
   "_notes": "filter q."
  },
  {
   "osc": "/param/global_filter_type",
   "section": "all",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      5
     ],
     "values": {
      "low pass": 1,
      "high pass": 2,
      "band pass": 3,
      "band reject": 4,
      "off": 5
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/global_filter_type",
    "args": [
     "{value}"
    ]
   },
   "_notes": "filter type: option index, from 1."
  },
  {
   "osc": "/param/ghost_active",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      4
     ],
     "values": {
      "never": 1,
      "with playback": 2,
      "with silence": 3,
      "always": 4
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/ghost_active",
    "args": [
     "{value}"
    ]
   },
   "_notes": "apperance: option index, from 1."
  },
  {
   "osc": "/param/ghost_prob",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      100
     ],
     "default": 16
    }
   ],
   "forward": {
    "path": "/param/ghost_prob",
    "args": [
     "{value}"
    ]
   },
   "_notes": "probability."
  },
  {
   "osc": "/param/ghost_duration",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      100
     ],
     "default": 24
    }
   ],
   "forward": {
    "path": "/param/ghost_duration",
    "args": [
     "{value}"
    ]
   },
   "_notes": "volatility."
  },
  {
   "osc": "/param/ghost_distribution",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "free": 1,
      "confined": 2
     }
    }
   ],
   "forward": {
    "path": "/param/ghost_distribution",
    "args": [
     "{value}"
    ]
   },
   "_notes": "dispersal: option index, from 1."
  },
  {
   "osc": "/param/ghost_clk",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "default": 9
    }
   ],
   "forward": {
    "path": "/param/ghost_clk",
    "args": [
     "{value}"
    ]
   },
   "_notes": "rate: option index, from 1."
  },
  {
   "osc": "/param/toggle_play",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/toggle_play",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> toggle play: trigger, 0 or 1."
  },
  {
   "osc": "/param/reset_pos",
   "section": "ghost",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/reset_pos",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> reset position: trigger, 0 or 1."
  },
  {
   "osc": "/param/init_essai_params",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/init_essai_params",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> init state: trigger, 0 or 1."
  },
  {
   "osc": "/param/tape_transport",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      5
     ],
     "values": {
      "new": 1,
      "used": 2,
      "old": 3,
      "vintage": 4,
      "broken": 5
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/tape_transport",
    "args": [
     "{value}"
    ]
   },
   "_notes": "tape transport: option index, from 1."
  },
  {
   "osc": "/param/varispeed",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/varispeed",
    "args": [
     "{value}"
    ]
   },
   "_notes": "varispeed: -4 to 4."
  },
  {
   "osc": "/param/scale",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/scale",
    "args": [
     "{value}"
    ]
   },
   "_notes": "scale: option index, from 1."
  },
  {
   "osc": "/param/slide",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/slide",
    "args": [
     "{value}"
    ]
   },
   "_notes": "slide: 0 to 1."
  },
  {
   "osc": "/param/gene_size",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/gene_size",
    "args": [
     "{value}"
    ]
   },
   "_notes": "size: 0 to 1."
  },
  {
   "osc": "/param/morph",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/morph",
    "args": [
     "{value}"
    ]
   },
   "_notes": "morph: 0 to 1."
  },
  {
   "osc": "/param/morph_mode",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "normal": 1,
      "clocked": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/morph_mode",
    "args": [
     "{value}"
    ]
   },
   "_notes": "morph mode: option index, from 1."
  },
  {
   "osc": "/param/morph_clk",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "default": 7
    }
   ],
   "forward": {
    "path": "/param/morph_clk",
    "args": [
     "{value}"
    ]
   },
   "_notes": "moprh clock: option index, from 1."
  },
  {
   "osc": "/param/morph_prob",
   "section": "randomization settings",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      100
     ],
     "default": 20
    }
   ],
   "forward": {
    "path": "/param/morph_prob",
    "args": [
     "{value}"
    ]
   },
   "_notes": "probability."
  },
  {
   "osc": "/param/randomize_level",
   "section": "randomization settings",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "off": 1,
      "on": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/randomize_level",
    "args": [
     "{value}"
    ]
   },
   "_notes": "level @morph > 75: option index, from 1."
  },
  {
   "osc": "/param/randomize_pan",
   "section": "randomization settings",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "off": 1,
      "on": 2
     },
     "default": 2
    }
   ],
   "forward": {
    "path": "/param/randomize_pan",
    "args": [
     "{value}"
    ]
   },
   "_notes": "pan @morph > 75: option index, from 1."
  },
  {
   "osc": "/param/randomize_direction",
   "section": "randomization settings",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "off": 1,
      "on": 2
     },
     "default": 2
    }
   ],
   "forward": {
    "path": "/param/randomize_direction",
    "args": [
     "{value}"
    ]
   },
   "_notes": "direction @morph > 80: option index, from 1."
  },
  {
   "osc": "/param/randomize_rate",
   "section": "randomization settings",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "off": 1,
      "on": 2
     },
     "default": 2
    }
   ],
   "forward": {
    "path": "/param/randomize_rate",
    "args": [
     "{value}"
    ]
   },
   "_notes": "rate @morph > 80: option index, from 1."
  },
  {
   "osc": "/param/morph_freez",
   "section": "randomization settings",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      0,
      1
     ],
     "default": 0
    }
   ],
   "forward": {
    "path": "/param/morph_freez",
    "args": [
     "{value}"
    ]
   },
   "_notes": "> freeze values: toggle, 0 or 1."
  },
  {
   "osc": "/param/keyboard_type",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "chromatic": 1,
      "scale": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/keyboard_type",
    "args": [
     "{value}"
    ]
   },
   "_notes": "keyboard type: option index, from 1."
  },
  {
   "osc": "/param/keys_scale",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "default": 2
    }
   ],
   "forward": {
    "path": "/param/keys_scale",
    "args": [
     "{value}"
    ]
   },
   "_notes": "scale type: option index, from 1."
  },
  {
   "osc": "/param/grid_interval_chrom",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      2,
      6
     ],
     "default": 5
    }
   ],
   "forward": {
    "path": "/param/grid_interval_chrom",
    "args": [
     "{value}"
    ]
   },
   "_notes": "interval [y]."
  },
  {
   "osc": "/param/grid_interval_scale",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      8
     ],
     "default": 4
    }
   ],
   "forward": {
    "path": "/param/grid_interval_scale",
    "args": [
     "{value}"
    ]
   },
   "_notes": "interval [y]."
  },
  {
   "osc": "/param/keys_mode",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "mono": 1,
      "poly": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/keys_mode",
    "args": [
     "{value}"
    ]
   },
   "_notes": "voice allocation: option index, from 1."
  },
  {
   "osc": "/param/root_note",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      127
     ],
     "default": 60
    }
   ],
   "forward": {
    "path": "/param/root_note",
    "args": [
     "{value}"
    ]
   },
   "_notes": "root note."
  },
  {
   "osc": "/param/midi_device",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/midi_device",
    "args": [
     "{value}"
    ]
   },
   "_notes": "midi device: option index, from 1."
  },
  {
   "osc": "/param/midi_channel",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      16
     ],
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/midi_channel",
    "args": [
     "{value}"
    ]
   },
   "_notes": "midi channel."
  },
  {
   "osc": "/param/adsr_active",
   "section": "Parameters",
   "args": [
    {
     "name": "value",
     "type": "int",
     "range": [
      1,
      2
     ],
     "values": {
      "off": 1,
      "on": 2
     },
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/adsr_active",
    "args": [
     "{value}"
    ]
   },
   "_notes": "envelope: option index, from 1."
  },
  {
   "osc": "/param/adsr_attack",
   "section": "envelope settings",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0.2
    }
   ],
   "forward": {
    "path": "/param/adsr_attack",
    "args": [
     "{value}"
    ]
   },
   "_notes": "attack: 0 to 10 s."
  },
  {
   "osc": "/param/adsr_decay",
   "section": "envelope settings",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 0.5
    }
   ],
   "forward": {
    "path": "/param/adsr_decay",
    "args": [
     "{value}"
    ]
   },
   "_notes": "decay: 0 to 10 s."
  },
  {
   "osc": "/param/adsr_sustain",
   "section": "envelope settings",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/adsr_sustain",
    "args": [
     "{value}"
    ]
   },
   "_notes": "sustain: 0 to 1."
  },
  {
   "osc": "/param/adsr_release",
   "section": "envelope settings",
   "args": [
    {
     "name": "value",
     "type": "float",
     "default": 1
    }
   ],
   "forward": {
    "path": "/param/adsr_release",
    "args": [
     "{value}"
    ]
   },
   "_notes": "release: 0 to 10 s."
  }
 ]
}
