{
 "firmware": "WaveLoop FM-1",
 "slug": "waveloop",
 "author": "ELI7VH; based on Felucca by Leo Kuroshita / Hügelton Instruments",
 "repo": "https://github.com/ELI7VH/Felucca",
 "licence": "GPL-3.0-only",
 "closed_source": false,
 "mapped_release": "1.0.5.2-midi23",
 "mapped_commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
 "release_date": "2026-10-09",
 "date_mapped": "2026-10-17",
 "status": "Independently checked: zero errors in round 4 (2026-10-17). No device testing.",
 "turns_it_into": "A four-track synth and drum sequencer with twelve setlist songs, quiet-time saving and direct MiniLab 3 control.",
 "docs": [
  {
   "title": "WaveLoop feature guide",
   "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/FORK.md",
   "path": "FORK.md",
   "words": 1241,
   "read_at": "7bce76090a076cf488ac03b53c83960b7c14e81e"
  },
  {
   "title": "MiniLab setup and controls",
   "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/controllers/MiniLab-3.md",
   "path": "controllers/MiniLab-3.md",
   "words": 2118,
   "read_at": "7bce76090a076cf488ac03b53c83960b7c14e81e"
  },
  {
   "title": "Panel and engine guide",
   "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/README.md",
   "path": "README.md",
   "words": 2725,
   "read_at": "7bce76090a076cf488ac03b53c83960b7c14e81e"
  },
  {
   "title": "Licences",
   "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/LICENSING.md",
   "path": "LICENSING.md",
   "words": 1026,
   "read_at": "7bce76090a076cf488ac03b53c83960b7c14e81e"
  },
  {
   "title": "WaveLoop Kit feature page",
   "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/mod.html",
   "path": "web/mod.html",
   "words": 580,
   "read_at": "7bce76090a076cf488ac03b53c83960b7c14e81e"
  },
  {
   "title": "MIDI implementation guide",
   "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/docs/MIDI-IMPLEMENTATION.md",
   "path": "docs/MIDI-IMPLEMENTATION.md",
   "words": 5099,
   "read_at": "7bce76090a076cf488ac03b53c83960b7c14e81e"
  }
 ],
 "install": {
  "official": "https://github.com/ELI7VH/Felucca/releases/tag/1.0.5.2-midi23",
  "hub": "https://thefirmwarehub.com/"
 },
 "part_id_notes": "SEL is called SCL in the code; ALGORITHM selects a track; lights.button_play_stop contains separate orange and green LED descriptions; key_lights groups the 27 key LEDs; USB-C uses the shared jack_usb_c part id; the upstream release is named WaveLoop Kit.",
 "modes": [
  {
   "id": "home",
   "name": "HOME",
   "how_to_get_there": "Press and release HOME.",
   "what_it_is": "Four sound controls for the selected track above the output waveform.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "358",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_draw.c",
     "lines": "650-659",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "429-435",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L429-L435"
    }
   ]
  },
  {
   "id": "env",
   "name": "ENV",
   "how_to_get_there": "Press ENV to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Attack, decay, sustain and release for the selected track.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "346",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L346"
    }
   ]
  },
  {
   "id": "env_dest",
   "name": "ENV DEST",
   "how_to_get_there": "Press ENV to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Envelope amounts for filter, pitch and shape.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "347",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L347"
    }
   ]
  },
  {
   "id": "lfo",
   "name": "LFO",
   "how_to_get_there": "Press LFO to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "LFO rate, shape, starting phase and fade time.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "348",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L348"
    }
   ]
  },
  {
   "id": "lfo_dest",
   "name": "LFO DEST",
   "how_to_get_there": "Press LFO to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "LFO amounts for pitch, filter, shape and volume.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "349",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L349"
    }
   ]
  },
  {
   "id": "mod",
   "name": "MOD",
   "how_to_get_there": "Press LFO to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Four modulation routes, with the selected route's source, destination and amount.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "350",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L350"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "30-33",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L30-L33"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "603-605",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L603-L605"
    }
   ]
  },
  {
   "id": "fx",
   "name": "FX",
   "how_to_get_there": "Press FX to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Distortion and the chorus, delay and reverb sends; on DRUM these edits affect the selected drum lane.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "351",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L351"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/drum_control.c",
     "lines": "5-8",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L5-L8"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/drum_control.c",
     "lines": "44-55",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
    }
   ]
  },
  {
   "id": "slicer",
   "name": "SLICER",
   "how_to_get_there": "Press FX to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Rhythmic gating or stuttering, with a pattern, rate and depth.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "352",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L352"
    }
   ]
  },
  {
   "id": "dly",
   "name": "DLY",
   "how_to_get_there": "Press FX to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Shared delay timing, feedback, tone and mix.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "353",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L353"
    }
   ]
  },
  {
   "id": "reverb",
   "name": "REVERB",
   "how_to_get_there": "Press FX to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Shared reverb model, size and damping.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "354",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L354"
    }
   ]
  },
  {
   "id": "chorus",
   "name": "CHORUS",
   "how_to_get_there": "Press FX to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Shared chorus rate and depth.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "355",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L355"
    }
   ]
  },
  {
   "id": "scl",
   "name": "SCL",
   "how_to_get_there": "Press SEL to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "The selected track's root, scale, keyboard mapping and transposition.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "356",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L356"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "7-12",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L7-L12"
    }
   ]
  },
  {
   "id": "chord",
   "name": "CHORD",
   "how_to_get_there": "Press SEL to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "One-key chord type and voicing.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "357",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L357"
    }
   ]
  },
  {
   "id": "edit1",
   "name": "EDIT 1",
   "how_to_get_there": "Press EDIT to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "The selected engine's first four sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "358",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
    }
   ]
  },
  {
   "id": "edit2",
   "name": "EDIT 2",
   "how_to_get_there": "Press EDIT to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "The selected engine's last four sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "359",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L359"
    }
   ]
  },
  {
   "id": "slices",
   "name": "SLICES",
   "how_to_get_there": "Press EDIT to open its last page, then press it again to cycle through its pages. This page appears for SLICE tracks.",
   "what_it_is": "User-sample slice markers and the actions to split or join slices.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "360",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L360"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_slice.c",
     "lines": "115-153",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L115-L153"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_slice.c",
     "lines": "155-199",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L155-L199"
    }
   ]
  },
  {
   "id": "voice",
   "name": "VOICE",
   "how_to_get_there": "Press EDIT to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Voice mode, glide time, glide behavior and note priority.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "366",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L366"
    }
   ]
  },
  {
   "id": "voice2",
   "name": "VOICE 2",
   "how_to_get_there": "Press EDIT to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Voice allocation, unison detuning, pan and mute; DRUM pan affects the focused lane.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "367",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L367"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/drum_control.c",
     "lines": "44-55",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
    }
   ]
  },
  {
   "id": "global",
   "name": "GLOBAL",
   "how_to_get_there": "Press GLO for MIXER, then press GLO again.",
   "what_it_is": "Shared tempo, swing, clock input and tuning.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "368",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L368"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "412-427",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
    }
   ]
  },
  {
   "id": "system",
   "name": "SYSTEM",
   "how_to_get_there": "Press GLO for MIXER, then twice more for SYSTEM.",
   "what_it_is": "USB connection state, an unused sync field, MIDI routing and CPU usage.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "369",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L369"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "127-130",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L127-L130"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_draw.c",
     "lines": "846-859",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L846-L859"
    }
   ]
  },
  {
   "id": "presets",
   "name": "PRESETS",
   "how_to_get_there": "Tap SAVE from another group for USER, then keep tapping through PROJECT, TOOLS, PRESETS and USER.",
   "what_it_is": "Factory sounds, their engine, favourite status and the ALL or FAV list.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "370",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L370"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "567-579",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L567-L579"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "964-970",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L964-L970"
    }
   ]
  },
  {
   "id": "user",
   "name": "USER",
   "how_to_get_there": "Tap SAVE from another group for USER, then keep tapping through PROJECT, TOOLS, PRESETS and USER.",
   "what_it_is": "User sound slot, load, erase and save actions.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "371",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L371"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "670-683",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L670-L683"
    }
   ]
  },
  {
   "id": "project",
   "name": "PROJECT",
   "how_to_get_there": "Tap SAVE from another group for USER, then keep tapping through PROJECT, TOOLS, PRESETS and USER.",
   "what_it_is": "The original A–D project slots with load and save actions, with D shared by session recovery.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "372",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L372"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "685-699",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L685-L699"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/project.c",
     "lines": "911-913",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L911-L913"
    }
   ]
  },
  {
   "id": "tools",
   "name": "TOOLS",
   "how_to_get_there": "Tap SAVE from another group for USER, then keep tapping through PROJECT, TOOLS, PRESETS and USER.",
   "what_it_is": "Actions for the selected track's pattern and sound, the selected song row and the song.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "373",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L373"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "640-648",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
    }
   ]
  },
  {
   "id": "arp",
   "name": "ARP",
   "how_to_get_there": "Press ARP to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Arpeggiator mode, timing, octave range and gate.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "374",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L374"
    }
   ]
  },
  {
   "id": "arp2",
   "name": "ARP 2",
   "how_to_get_there": "Press ARP to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Arpeggiator swing, probability, hold and note ordering.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "375",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L375"
    }
   ]
  },
  {
   "id": "step_roll",
   "name": "STEP roll",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages. Select a melodic track.",
   "what_it_is": "Note cursor, pitch, note/tie/rest and accent/slide flags above the piano roll.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "376",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "468-501",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L468-L501"
    }
   ]
  },
  {
   "id": "step_grid",
   "name": "STEP grid",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages. Select a DRUM track.",
   "what_it_is": "Step cursor, selected drum lane, its hit and its accent above the drum grid.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "376",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "425-438",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L425-L438"
    }
   ]
  },
  {
   "id": "pattern",
   "name": "PATTERN",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Selected track's pattern length, division, swing and gate.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "377",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L377"
    }
   ]
  },
  {
   "id": "phrases",
   "name": "PHRASES",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Factory phrases and patterns saved with user sounds, with a load action.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "378",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L378"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "588-601",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L588-L601"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "655-662",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L655-L662"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "675-713",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L675-L713"
    }
   ]
  },
  {
   "id": "mixer",
   "name": "MIXER",
   "how_to_get_there": "Press GLO from another family; more GLO presses cycle GLOBAL, SYSTEM and MIXER.",
   "what_it_is": "Level, pan, reverb send and mute for the selected whole track.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "379",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L379"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "303-331",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L303-L331"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "412-427",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
    }
   ]
  },
  {
   "id": "song",
   "name": "SONG",
   "how_to_get_there": "Hold SEQ for about 0.7 seconds, or cycle the SEQ pages to SONG.",
   "what_it_is": "Song rows select a project slot and repeat count.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "380",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L380"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "534-554",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L534-L554"
    }
   ]
  },
  {
   "id": "chance",
   "name": "CHANCE",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "The cursor step's probability and ratchet count.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "381",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L381"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "516-527",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L516-L527"
    }
   ]
  },
  {
   "id": "automation",
   "name": "AUTOMATION",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Automation playback, an event count and the clear action.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "382",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L382"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "528-533",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L528-L533"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "635-639",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L635-L639"
    }
   ]
  },
  {
   "id": "setlist",
   "name": "SETLIST",
   "how_to_get_there": "Press SEQ to open its last page, then press it again to cycle through its pages.",
   "what_it_is": "Twelve saved-song choices, their order and project load/save actions.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "383",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L383"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "510-515",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L515"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "627-634",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L634"
    }
   ]
  },
  {
   "id": "drum_mix",
   "name": "DRUM MIX",
   "how_to_get_there": "Press EDIT to open its last page, then press it again to cycle through its pages. This page appears only for DRUM tracks.",
   "what_it_is": "Level, pan, chorus and reverb send for the focused drum lane.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "384",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L384"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "112",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L112"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "404-407",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L404-L407"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/drum_control.c",
     "lines": "44-55",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
    }
   ]
  },
  {
   "id": "home_analog",
   "name": "HOME ANALOG",
   "how_to_get_there": "Select the ANALOG engine and press HOME.",
   "what_it_is": "ANALOG main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_analog.c",
     "lines": "117-136",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_analog",
   "name": "OSC ANALOG",
   "how_to_get_there": "Select the ANALOG engine and press EDIT until OSC appears.",
   "what_it_is": "ANALOG first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_analog.c",
     "lines": "117-136",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_analog",
   "name": "FLT ANALOG",
   "how_to_get_there": "Select the ANALOG engine and press EDIT until FLT appears.",
   "what_it_is": "ANALOG second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_analog.c",
     "lines": "117-136",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_phase",
   "name": "HOME PHASE",
   "how_to_get_there": "Select the PHASE engine and press HOME.",
   "what_it_is": "PHASE main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_phase.c",
     "lines": "210-228",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_phase",
   "name": "PHS PHASE",
   "how_to_get_there": "Select the PHASE engine and press EDIT until PHS appears.",
   "what_it_is": "PHASE first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_phase.c",
     "lines": "210-228",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_phase",
   "name": "LINE PHASE",
   "how_to_get_there": "Select the PHASE engine and press EDIT until LINE appears.",
   "what_it_is": "PHASE second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_phase.c",
     "lines": "210-228",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_lofi",
   "name": "HOME LOFI",
   "how_to_get_there": "Select the LOFI engine and press HOME.",
   "what_it_is": "LOFI main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_lofi.c",
     "lines": "244-265",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_lofi",
   "name": "CHIP LOFI",
   "how_to_get_there": "Select the LOFI engine and press EDIT until CHIP appears.",
   "what_it_is": "LOFI first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_lofi.c",
     "lines": "244-265",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_lofi",
   "name": "MOTN LOFI",
   "how_to_get_there": "Select the LOFI engine and press EDIT until MOTN appears.",
   "what_it_is": "LOFI second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_lofi.c",
     "lines": "244-265",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_sample",
   "name": "HOME SAMPLE",
   "how_to_get_there": "Select the SAMPLE engine and press HOME.",
   "what_it_is": "SAMPLE main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_sample.c",
     "lines": "236-255",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_sample",
   "name": "SET SAMPLE",
   "how_to_get_there": "Select the SAMPLE engine and press EDIT until SET appears.",
   "what_it_is": "SAMPLE first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_sample.c",
     "lines": "236-255",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_sample",
   "name": "TONE SAMPLE",
   "how_to_get_there": "Select the SAMPLE engine and press EDIT until TONE appears.",
   "what_it_is": "SAMPLE second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_sample.c",
     "lines": "236-255",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_voice",
   "name": "HOME VOICE",
   "how_to_get_there": "Select the VOICE engine and press HOME.",
   "what_it_is": "VOICE main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_formant.c",
     "lines": "251-270",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_voice",
   "name": "VOWL VOICE",
   "how_to_get_there": "Select the VOICE engine and press EDIT until VOWL appears.",
   "what_it_is": "VOICE first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_formant.c",
     "lines": "251-270",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_voice",
   "name": "TONE VOICE",
   "how_to_get_there": "Select the VOICE engine and press EDIT until TONE appears.",
   "what_it_is": "VOICE second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_formant.c",
     "lines": "251-270",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_trio",
   "name": "HOME TRIO",
   "how_to_get_there": "Select the TRIO engine and press HOME.",
   "what_it_is": "TRIO main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_trio.c",
     "lines": "383-401",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_trio",
   "name": "OSC TRIO",
   "how_to_get_there": "Select the TRIO engine and press EDIT until OSC appears.",
   "what_it_is": "TRIO first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_trio.c",
     "lines": "383-401",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_trio",
   "name": "TONE TRIO",
   "how_to_get_there": "Select the TRIO engine and press EDIT until TONE appears.",
   "what_it_is": "TRIO second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_trio.c",
     "lines": "383-401",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_wheel",
   "name": "HOME WHEEL",
   "how_to_get_there": "Select the WHEEL engine and press HOME.",
   "what_it_is": "WHEEL main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_wheel.c",
     "lines": "306-325",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_wheel",
   "name": "BARS WHEEL",
   "how_to_get_there": "Select the WHEEL engine and press EDIT until BARS appears.",
   "what_it_is": "WHEEL first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_wheel.c",
     "lines": "306-325",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_wheel",
   "name": "TONE WHEEL",
   "how_to_get_there": "Select the WHEEL engine and press EDIT until TONE appears.",
   "what_it_is": "WHEEL second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_wheel.c",
     "lines": "306-325",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_grain",
   "name": "HOME GRAIN",
   "how_to_get_there": "Select the GRAIN engine and press HOME.",
   "what_it_is": "GRAIN main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_grain.c",
     "lines": "470-490",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_grain",
   "name": "GRAN GRAIN",
   "how_to_get_there": "Select the GRAIN engine and press EDIT until GRAN appears.",
   "what_it_is": "GRAIN first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_grain.c",
     "lines": "470-490",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_grain",
   "name": "SPRY GRAIN",
   "how_to_get_there": "Select the GRAIN engine and press EDIT until SPRY appears.",
   "what_it_is": "GRAIN second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_grain.c",
     "lines": "470-490",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_phys",
   "name": "HOME PHYS",
   "how_to_get_there": "Select the PHYS engine and press HOME.",
   "what_it_is": "PHYS main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_phys.c",
     "lines": "255-275",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_phys",
   "name": "BODY PHYS",
   "how_to_get_there": "Select the PHYS engine and press EDIT until BODY appears.",
   "what_it_is": "PHYS first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_phys.c",
     "lines": "255-275",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_phys",
   "name": "EXCT PHYS",
   "how_to_get_there": "Select the PHYS engine and press EDIT until EXCT appears.",
   "what_it_is": "PHYS second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_phys.c",
     "lines": "255-275",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_drum",
   "name": "HOME DRUM",
   "how_to_get_there": "Select the DRUM engine and press HOME.",
   "what_it_is": "DRUM main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_drum.c",
     "lines": "339-361",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_drum",
   "name": "KIT DRUM",
   "how_to_get_there": "Select the DRUM engine and press EDIT until KIT appears.",
   "what_it_is": "DRUM first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_drum.c",
     "lines": "339-361",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_drum",
   "name": "HIT DRUM",
   "how_to_get_there": "Select the DRUM engine and press EDIT until HIT appears.",
   "what_it_is": "DRUM second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_drum.c",
     "lines": "339-361",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_noise",
   "name": "HOME NOISE",
   "how_to_get_there": "Select the NOISE engine and press HOME.",
   "what_it_is": "NOISE main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_noise.c",
     "lines": "280-300",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_noise",
   "name": "SRC NOISE",
   "how_to_get_there": "Select the NOISE engine and press EDIT until SRC appears.",
   "what_it_is": "NOISE first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_noise.c",
     "lines": "280-300",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_noise",
   "name": "MOVE NOISE",
   "how_to_get_there": "Select the NOISE engine and press EDIT until MOVE appears.",
   "what_it_is": "NOISE second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_noise.c",
     "lines": "280-300",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_fm6",
   "name": "HOME FM6",
   "how_to_get_there": "Select the FM6 engine and press HOME.",
   "what_it_is": "FM6 main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_fm6.c",
     "lines": "411-433",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_fm6",
   "name": "OPS FM6",
   "how_to_get_there": "Select the FM6 engine and press EDIT until OPS appears.",
   "what_it_is": "FM6 first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_fm6.c",
     "lines": "411-433",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_fm6",
   "name": "PATCH FM6",
   "how_to_get_there": "Select the FM6 engine and press EDIT until PATCH appears.",
   "what_it_is": "FM6 second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_fm6.c",
     "lines": "411-433",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "home_slice",
   "name": "HOME SLICE",
   "how_to_get_there": "Select the SLICE engine and press HOME.",
   "what_it_is": "SLICE main sound controls.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_slice.c",
     "lines": "619-640",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit1_slice",
   "name": "SLCE SLICE",
   "how_to_get_there": "Select the SLICE engine and press EDIT until SLCE appears.",
   "what_it_is": "SLICE first sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_slice.c",
     "lines": "619-640",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "edit2_slice",
   "name": "PLAY SLICE",
   "how_to_get_there": "Select the SLICE engine and press EDIT until PLAY appears.",
   "what_it_is": "SLICE second sound page.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/eng_slice.c",
     "lines": "619-640",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/params.c",
     "lines": "148-155",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui.c",
     "lines": "1093-1099",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
    }
   ]
  },
  {
   "id": "menu",
   "name": "MENU",
   "how_to_get_there": "Hold HOME to open the menu.",
   "what_it_is": "DISPLAY, CONTROL, AUDIO and SYSTEM settings tabs.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-24",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L24"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_about",
   "name": "ABOUT",
   "how_to_get_there": "In MENU, choose SYSTEM > ABOUT and press OCT+.",
   "what_it_is": "Credits and a source link, scrolled with PRESETS.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "450-478",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L478"
    }
   ]
  },
  {
   "id": "menu_color",
   "name": "MENU COLOR",
   "how_to_get_there": "Hold HOME, choose DISPLAY with ALGORITHM and COLOR with PRESETS.",
   "what_it_is": "Palette colors preview immediately. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_style",
   "name": "MENU STYLE",
   "how_to_get_there": "Hold HOME, choose DISPLAY with ALGORITHM and STYLE with PRESETS.",
   "what_it_is": "The chosen layout appears immediately. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_large",
   "name": "MENU LARGE",
   "how_to_get_there": "Hold HOME, choose DISPLAY with ALGORITHM and LARGE with PRESETS.",
   "what_it_is": "Value pages grow taller cards; lists keep their layout with bigger labels. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_anim",
   "name": "MENU ANIM",
   "how_to_get_there": "Hold HOME, choose DISPLAY with ALGORITHM and ANIM with PRESETS.",
   "what_it_is": "OFF makes value and roll changes appear immediately. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_leds",
   "name": "MENU LEDS",
   "how_to_get_there": "Hold HOME, choose DISPLAY with ALGORITHM and LEDS with PRESETS.",
   "what_it_is": "INV swaps the light and dark states of active and idle controls. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_hold",
   "name": "MENU HOLD",
   "how_to_get_there": "Hold HOME, choose CONTROL with ALGORITHM and HOLD with PRESETS.",
   "what_it_is": "The hold threshold applies to the quick-layer buttons. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_accel",
   "name": "MENU KNOB ACCEL",
   "how_to_get_there": "Hold HOME, choose CONTROL with ALGORITHM and KNOB ACCEL with PRESETS.",
   "what_it_is": "Wide numeric values can move two to four steps per click when ON. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_latch",
   "name": "MENU FX LATCH",
   "how_to_get_there": "Hold HOME, choose CONTROL with ALGORITHM and FX LATCH with PRESETS.",
   "what_it_is": "ON leaves selected FX effects and macros active after release. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_bpmlock",
   "name": "MENU BPM LOCK",
   "how_to_get_there": "Hold HOME, choose CONTROL with ALGORITHM and BPM LOCK with PRESETS.",
   "what_it_is": "Tempo remains adjustable with GLO held or from GLOBAL. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_eq",
   "name": "MENU SPEAKER EQ",
   "how_to_get_there": "Hold HOME, choose AUDIO with ALGORITHM and SPEAKER EQ with PRESETS.",
   "what_it_is": "This equalizer affects headphones and USB audio as well as the speaker. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_usb_level",
   "name": "MENU USB LEVEL",
   "how_to_get_there": "Hold HOME, choose AUDIO with ALGORITHM and USB LEVEL with PRESETS.",
   "what_it_is": "FIXED sends full USB audio level while MASTER still controls the speaker and headphones. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_serial",
   "name": "MENU USB SERIAL",
   "how_to_get_there": "Hold HOME, choose SYSTEM with ALGORITHM and USB SERIAL with PRESETS.",
   "what_it_is": "Changing this reconnects the USB device when the menu closes; USB MIDI and audio reconnect too. HOME queues changed settings to save when stopped without a question.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "8-61",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/menu_items.c",
     "lines": "127-162",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-481",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
    }
   ]
  },
  {
   "id": "menu_calibration",
   "name": "HARDWARE CALIBRATION",
   "how_to_get_there": "Choose MENU > SYSTEM > CALIBRATION and press OCT+.",
   "what_it_is": "Teach each button and encoder; a piano key or 30 seconds without input restores the previous mapping.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "470-473",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "1210-1297",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1297"
    }
   ]
  },
  {
   "id": "layer_fx",
   "name": "FX layer",
   "how_to_get_there": "Hold or double-tap FX.",
   "what_it_is": "White keys hold performance effects, the first four black keys mute tracks and KNOB 1–4 are macros.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_layer.c",
     "lines": "40-49",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L49"
    }
   ]
  },
  {
   "id": "layer_glo",
   "name": "GLO layer",
   "how_to_get_there": "Hold or double-tap GLO.",
   "what_it_is": "Track mutes, temporary solos, unmute all, tap tempo and four track levels.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_layer.c",
     "lines": "315-352",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L315-L352"
    }
   ]
  },
  {
   "id": "layer_scl",
   "name": "SEL layer",
   "how_to_get_there": "Hold or double-tap SEL.",
   "what_it_is": "Keys choose a root and knobs choose root, scale, chord and voicing.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_layer.c",
     "lines": "330-331",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
    }
   ]
  },
  {
   "id": "layer_edit",
   "name": "EDIT layer",
   "how_to_get_there": "Hold or double-tap EDIT.",
   "what_it_is": "White keys select an engine or ask to initialize its sound; knobs browse engines and sounds or mark favourites.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_layer.c",
     "lines": "332-338",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
    }
   ]
  },
  {
   "id": "name",
   "name": "NAME",
   "how_to_get_there": "Choose SAVE or EDIT rename on USER, PROJECT or SETLIST.",
   "what_it_is": "Keys and two knobs edit a twelve-character name; OCT+ writes while stopped and OCT- cancels.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_name.c",
     "lines": "76-115",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L76-L115"
    }
   ]
  },
  {
   "id": "dialog",
   "name": "Confirmation",
   "how_to_get_there": "Choose an action that asks.",
   "what_it_is": "OCT+ accepts and OCT- cancels, with save confirmations opening NAME before the write.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "1033-1083",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1083"
    }
   ]
  },
  {
   "id": "power_on",
   "name": "Power-on",
   "how_to_get_there": "Switch on.",
   "what_it_is": "Restores recovery and saved view; a recovery without a saved song destination also selects the first unreadable setlist song, normally song 1, for a quiet-time write without asking even when nothing is edited.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/main.c",
     "lines": "155-171",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L155-L171"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/session.c",
     "lines": "23-55",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L23-L55"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/setlist.c",
     "lines": "57-64",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L57-L64"
    }
   ]
  },
  {
   "id": "calibration",
   "name": "Hardware calibration",
   "how_to_get_there": "Hold both OCT buttons at power-on, or use MENU > SYSTEM > CALIBRATION.",
   "what_it_is": "Teaches buttons and encoder directions; a piano key or 30-second pause cancels and restores the old mapping, with a save request after the power-on route returns or after MENU closes.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_input.c",
     "lines": "1238-1297",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1238-L1297"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/main.c",
     "lines": "165-167",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "421-426",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/ui_menu.c",
     "lines": "470-473",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
    }
   ]
  },
  {
   "id": "update",
   "name": "Update countdown / UBOOT",
   "how_to_get_there": "Hold OCT- and OCT+ for five seconds.",
   "what_it_is": "Shows a countdown after two seconds, then stops audio and enters update mode; releasing early cancels.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/main.c",
     "lines": "195-220",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L195-L220"
    }
   ]
  },
  {
   "id": "crash",
   "name": "Crash / failed start",
   "how_to_get_there": "Appears after a processor fault or repeated failed starts.",
   "what_it_is": "A crash shows diagnostic values and restarts after four seconds; two failed starts enter UBOOT.",
   "source": [
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/main.c",
     "lines": "74-94",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L74-L94"
    },
    {
     "kind": "source",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "firmware/src/main.c",
     "lines": "277-288",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L277-L288"
    }
   ]
  }
 ],
 "controls": {
  "button_fx": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the remembered FX page, then cycles FX, SLICER, DLY, REVERB and CHORUS on release.",
    "short_label": "FX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "389-409",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L389-L409"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Opens the FX layer while held for effects and macros; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "PERFORM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "40-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L49"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "double_press",
    "action": "Keeps the FX layer open without holding; press FX again to close; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "LOCK FX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-171",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L171"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Closes its quick layer after a hold unless a layer key remains down or the layer was locked open.",
    "short_label": "CLOSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "125-135",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L125-L135"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "234-241",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L234-L241"
     }
    ]
   }
  ],
  "button_sel": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the remembered scale page, then alternates SCL and CHORD on release.",
    "short_label": "SCL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "389-409",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L389-L409"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Opens the SEL layer while held for root, scale, chord and voicing; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "SET KEY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "40-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L49"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "double_press",
    "action": "Keeps the SEL layer open without holding; press SEL again to close; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "LOCK SEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-171",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L171"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Closes its quick layer after a hold unless a layer key remains down or the layer was locked open.",
    "short_label": "CLOSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "125-135",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L125-L135"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "234-241",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L234-L241"
     }
    ]
   }
  ],
  "button_env": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the remembered envelope page, then alternates ENV and ENV DEST on release.",
    "short_label": "ENV",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "389-409",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L389-L409"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   }
  ],
  "button_lfo": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the remembered LFO page, then cycles LFO, LFO DEST and MOD on release.",
    "short_label": "LFO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "389-409",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L389-L409"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Has no hold shortcut; releasing it opens or advances its page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1131-1141",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1131-L1141"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "40-46",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L46"
     }
    ]
   }
  ],
  "button_edit": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the remembered engine page, then cycles its visible EDIT, SLICES, DRUM MIX and VOICE pages on release.",
    "short_label": "EDIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "837-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L837-L859"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Opens the EDIT layer while held for engine selection and sound browsing; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "PICK ENGINE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "40-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L49"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "double_press",
    "action": "Keeps the EDIT layer open without holding; press EDIT again to close; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "LOCK EDIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-171",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L171"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Closes its quick layer after a hold unless a layer key remains down or the layer was locked open.",
    "short_label": "CLOSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "125-135",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L125-L135"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "234-241",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L234-L241"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On release, clears the cursor step and advances immediately without a question or undo; quiet-time saving can later keep the cleared sequence.",
    "short_label": "CLEAR STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "844-849",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L844-L849"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "280-288",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L280-L288"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "press",
    "action": "On release, opens NAME to rename the selected saved sound or song while stopped; OCT+ writes it at once without a second question or flash undo.",
    "short_label": "RENAME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "851-853",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L851-L853"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "105-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L105-L115"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "206-236",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L206-L236"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "press",
    "action": "On release, opens NAME to rename the selected saved sound or song while stopped; OCT+ writes it at once without a second question or flash undo.",
    "short_label": "RENAME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "851-853",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L851-L853"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "105-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L105-L115"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "206-236",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L206-L236"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "press",
    "action": "On release, opens NAME to rename the selected saved sound or song while stopped; OCT+ writes it at once without a second question or flash undo.",
    "short_label": "RENAME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "851-853",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L851-L853"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "105-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L105-L115"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "206-236",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L206-L236"
     }
    ]
   }
  ],
  "button_glo": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "On release, opens MIXER from another group, then GLOBAL, SYSTEM and MIXER on successive taps.",
    "short_label": "GLO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Opens the GLO layer while held for mutes, solos, levels and tap tempo; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "MIX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "40-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L49"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "double_press",
    "action": "Keeps the GLO layer open without holding; press GLO again to close; its first opening also requests saving the seen flag with settings when stopped, without a question.",
    "short_label": "LOCK GLO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-171",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L171"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "197-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L197-L221"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "174-181",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L174-L181"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Closes its quick layer after a hold unless a layer key remains down or the layer was locked open.",
    "short_label": "CLOSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "125-135",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L125-L135"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "234-241",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L234-L241"
     }
    ]
   }
  ],
  "button_arp": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the remembered arpeggiator page, then alternates ARP and ARP 2 on release.",
    "short_label": "ARP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "389-409",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L389-L409"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   }
  ],
  "button_seq": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "On release, opens the remembered sequencer page and advances through its pages on further taps.",
    "short_label": "SEQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1085-1092",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1085-L1092"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "long_press",
    "action": "After about 0.7 seconds, opens SONG directly without changing recording arming.",
    "short_label": "SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "800-814",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L800-L814"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1087-1092",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1087-L1092"
     }
    ]
   }
  ],
  "button_home": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Returns to HOME on release.",
    "short_label": "HOME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1093-1094",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1093-L1094"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "long_press",
    "action": "Held about 0.7 s: opens the MENU (or closes it).",
    "short_label": "MENU",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "800-814",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L800-L814"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "984-996",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L984-L996"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "press",
    "action": "Closes the menu.",
    "short_label": "CLOSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "984-996",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L984-L996"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press",
    "action": "While FX is physically held, HOME is ignored; with the FX layer locked open, HOME closes the layer and returns HOME on release.",
    "short_label": "LAYER HOME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-961",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L961"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L153"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "press",
    "action": "Closes the menu on release and requests a settings save when stopped, skipping unchanged data without a question.",
    "short_label": "CLOSE MENU",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "984-989",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L984-L989"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1050-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press",
    "action": "While this layer’s button is physically held, HOME is ignored; when the layer is locked open, HOME closes it and returns HOME on release.",
    "short_label": "LAYER HOME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-961",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L961"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L153"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press",
    "action": "While this layer’s button is physically held, HOME is ignored; when the layer is locked open, HOME closes it and returns HOME on release.",
    "short_label": "LAYER HOME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-961",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L961"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L153"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press",
    "action": "While this layer’s button is physically held, HOME is ignored; when the layer is locked open, HOME closes it and returns HOME on release.",
    "short_label": "LAYER HOME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-961",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L961"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "138-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L138-L153"
     }
    ]
   }
  ],
  "button_save": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "On release, opens USER with SAVE selected; repeated taps then visit PROJECT, TOOLS, PRESETS and USER.",
    "short_label": "SAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "389-409",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L389-L409"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "835-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L835-L859"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press",
    "action": "Ignored while a layer's button is held (no undo, no page).",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-961",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L961"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "long_press",
    "action": "After about 0.7 seconds, swaps the last sound or pattern load with its undo copy; another hold redoes it, but ordinary knob edits and flash replacements have no undo.",
    "short_label": "UNDO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1027-1032",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1027-L1032"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "547-597",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L547-L597"
     }
    ]
   }
  ],
  "button_play_stop": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Starts or stops all four tracks immediately on press.",
    "short_label": "PLAY/STOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1101-1109",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1101-L1109"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "press",
    "action": "Starts the chain from its first row, or stops it if already playing.",
    "short_label": "PLAY SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1101-1109",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1101-L1109"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "253-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L253-L264"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press",
    "action": "With the GLO layer open, starts if stopped or restarts from the beginning if playing on internal clock; external-clock playback refuses the restart.",
    "short_label": "RESTART",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "386-396",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L386-L396"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Stops playback that began while naming, allowing the pending save, and cannot start playback here.",
    "short_label": "STOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1017-1025",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1017-L1025"
     }
    ]
   }
  ],
  "button_rec": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Arms or disarms this track’s recording on release and starts playback when arming while stopped.",
    "short_label": "REC ARM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "331-348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L331-L348"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "press",
    "action": "Does not arm; tells you to go to SEQ to record.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "334-344",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L334-L344"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "long_press",
    "action": "After about 0.7 seconds, asks to clear this track’s steps and automation if any exist; OCT+ clears them in memory with one load undo, and quiet-time saving can later keep the change.",
    "short_label": "CLEAR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "394-412",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L394-L412"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1062-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1062-L1075"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "800-814",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L800-L814"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "long_press",
    "action": "After about 0.7 seconds, asks to clear this track’s steps and automation if any exist; OCT+ clears them in memory with one load undo, and quiet-time saving can later keep the change.",
    "short_label": "CLEAR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "394-412",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L394-L412"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1062-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1062-L1075"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "800-814",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L800-L814"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "long_press",
    "action": "After about 0.7 seconds, asks to clear this track’s steps and automation if any exist; OCT+ clears them in memory with one load undo, and quiet-time saving can later keep the change.",
    "short_label": "CLEAR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "394-412",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L394-L412"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1062-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1062-L1075"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "800-814",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L800-L814"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "long_press",
    "action": "After about 0.7 seconds, asks to clear this track’s steps and automation if any exist; OCT+ clears them in memory with one load undo, and quiet-time saving can later keep the change.",
    "short_label": "CLEAR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "394-412",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L394-L412"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1062-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1062-L1075"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "800-814",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L800-L814"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "press",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "998-1000",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L998-L1000"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "press",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "998-1000",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L998-L1000"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "998-1000",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L998-L1000"
     }
    ]
   }
  ],
  "button_oct_down": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Shifts the keys down an octave (to -3).",
    "short_label": "OCT -",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1128",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1128"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_up",
    "action": "Both together: octave back to 0.",
    "short_label": "OCT RESET",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1128",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1128"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_up",
    "action": "Held together for 5 s: enters update (boot) mode for installing firmware; a countdown shows from 2 s, letting go cancels.",
    "short_label": "UPDATE 5s",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "195-220",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L195-L220"
     }
    ]
   },
   {
    "mode": "power_on",
    "gesture": "power_on_holding:button_oct_up",
    "action": "Starts panel calibration; completing or cancelling it requests a settings write without a question, while a piano key or 30 seconds without input cancels the teaching.",
    "short_label": "CALIBRATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1289-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1289-L1297"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "release",
    "action": "Drops the selected action, or returns HOME if none is selected; PHRASES returns HOME directly.",
    "short_label": "BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "712-729",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L712-L729"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1142-1148",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1142-L1148"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "release",
    "action": "Cancels the question without applying its action.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1077-1083",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1077-L1083"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "release",
    "action": "Cancels naming without writing anything.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "270-273",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L270-L273"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "release",
    "action": "On release, steps to the previous menu value or returns from ABOUT to the tabs.",
    "short_label": "PREVIOUS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "56-63",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L56-L63"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "429-480",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L429-L480"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "release",
    "action": "On release, restores the track levels, mutes and tempo captured when this GLO layer opened.",
    "short_label": "PUT BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "427-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L427-L433"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "release",
    "action": "On release, restores the scale, root, transpose, key mode and chord choices captured when this SEL layer opened.",
    "short_label": "PUT BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "434-439",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L434-L439"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "release",
    "action": "On release, undoes sound browsing since this EDIT layer opened, if it loaded a sound.",
    "short_label": "PUT BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "423-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L423-L426"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "With FX LATCH on, releasing OCT- switches off every latched performance effect and resets all four effect macros.",
    "short_label": "ALL OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "418-422",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L418-L422"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "release",
    "action": "Returns to the menu tabs.",
    "short_label": "MENU BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-452",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L452"
     }
    ]
   }
  ],
  "button_oct_up": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Shifts the keys up an octave (to +3).",
    "short_label": "OCT +",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1128",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1128"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_down",
    "action": "Both together: octave back to 0.",
    "short_label": "OCT RESET",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1128",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1128"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_down",
    "action": "Held together for 5 s: enters update (boot) mode for installing firmware; a countdown shows from 2 s, letting go cancels.",
    "short_label": "UPDATE 5s",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "195-220",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L195-L220"
     }
    ]
   },
   {
    "mode": "power_on",
    "gesture": "power_on_holding:button_oct_down",
    "action": "Starts panel calibration; completing or cancelling it requests a settings write without a question, while a piano key or 30 seconds without input cancels the teaching.",
    "short_label": "CALIBRATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1289-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1289-L1297"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "release",
    "action": "Performs LOAD with sound undo, asks before ERASE or replacing a used sound, or opens NAME for SAVE; OCT+ in NAME writes the sound and any copied pattern at once without flash undo.",
    "short_label": "SOUND ACT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "release",
    "action": "Loads the selected factory phrase or saved user pattern into this track, asking before replacing edited steps and keeping a pattern undo copy.",
    "short_label": "LOAD PHRASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "release",
    "action": "Performs LOAD immediately without a question or undo and makes A–C the destination for later automatic saves, which replace that saved song after the quiet pause without asking; SAVE opens naming while stopped, asks before a used slot and writes on OCT+ in NAME.",
    "short_label": "PROJECT ACT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "938-949",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "57-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L57-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "release",
    "action": "Asks before clearing the selected track’s sequence, initializing its sound, deleting the selected song row or clearing the chain; the change is in memory and later quiet-time saving can keep it.",
    "short_label": "TOOLS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "release",
    "action": "Starts the chain from its first row, or stops it if already playing.",
    "short_label": "PLAY SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "release",
    "action": "Splits or joins the selected user-sample slice without asking or undo; its markers save after leaving SLICES once stopped, but samples too long to leave space for markers keep those edits only until power is lost.",
    "short_label": "SLICE ACT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "release",
    "action": "While stopped, LOAD queues a song and later makes it the automatic-save destination, so edits replace that saved song without asking; SAVE opens NAME, but confirming an occupied extended destination redirects the write to A, B, C or recovery D.",
    "short_label": "SETLIST ACT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "49-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L49-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "90-129",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L90-L129"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "938-949",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "release",
    "action": "Asks to clear this track’s recorded parameter movements; OCT+ clears them in memory with one load undo and quiet-time saving can keep the result.",
    "short_label": "CLEAR AUTO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "622-709",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L622-L709"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "release",
    "action": "Confirms the question; a save opens NAME before writing, and used extended SETLIST songs wrongly redirect that save to A, B, C or recovery D.",
    "short_label": "CONFIRM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1075",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1075"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "release",
    "action": "While stopped, writes the named user sound or song, or its renamed copy, immediately without another question or flash undo.",
    "short_label": "WRITE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "206-236",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L206-L236"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "release",
    "action": "On release, advances the selected menu value or opens CALIBRATION or ABOUT; after MENU calibration completes or is cancelled, closing MENU requests the settings save.",
    "short_label": "NEXT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "56-63",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L56-L63"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "429-480",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L429-L480"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press",
    "action": "Does nothing here and does not shift the octave.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "411-443",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L411-L443"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1124",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1124"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press",
    "action": "Does nothing here and does not shift the octave.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "411-443",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L411-L443"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1124",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1124"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press",
    "action": "Does nothing here and does not shift the octave.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "411-443",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L411-L443"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1120-1124",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1120-L1124"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "release",
    "action": "LOAD is refused during playback; while stopped it waits for five seconds of quiet audio and unchanged state, saves the previous song and order, then loads without undo and makes the new song the destination for later automatic writes without asking, while a readable ordinary D blocks the queued load and restarting playback cancels it.",
    "short_label": "LOAD SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "49-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L49-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "90-129",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L90-L129"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "938-949",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "release",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   }
  ],
  "encoder_algorithm": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Selects track 1–4 when no quick layer, menu, dialog or name screen owns the controls.",
    "short_label": "TRACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1170-1173",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1170-L1173"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "turn",
    "action": "Moves between DISPLAY, CONTROL, AUDIO and SYSTEM tabs.",
    "short_label": "MENU TAB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "429-480",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L429-L480"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1081-1083",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1081-L1083"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   }
  ],
  "encoder_presets": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Browses sounds across the engines and used user presets on HOME, PRESETS and sound pages, keeping the steps and a sound undo copy.",
    "short_label": "SOUND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "773-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L773-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "448-455",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L448-L455"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "SOUND SLOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "PHRASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "PROJECT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "ROW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "turn",
    "action": "Moves the step cursor or list selection; on SONG selects a chain row and on SETLIST selects an entry.",
    "short_label": "SONG PICK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-537",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L537"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "780-794",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L780-L794"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "turn",
    "action": "Moves through the rows of the menu tab.",
    "short_label": "MENU ROW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "429-480",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L429-L480"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "turn",
    "action": "Does nothing while this quick layer owns the controls.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "953-968",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L953-L968"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1081-1083",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1081-L1083"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Scrolls through ABOUT and its credits.",
    "short_label": "SCROLL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   }
  ],
  "encoder_select": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Sets tempo from 40 to 240 BPM unless BPM LOCK is on; holding GLO allows tempo changes despite the lock.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1174-1183",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1174-L1183"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L115"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn_while_holding:button_glo",
    "action": "Sets the tempo while GLO is held, even when BPM LOCK is on.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1174-1183",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1174-L1183"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1081-1083",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1081-L1083"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   }
  ],
  "encoder_knob1": [
   {
    "mode": "home",
    "gesture": "turn",
    "action": "Edits the engine's main value 1; the engine-specific HOME entries name it.",
    "short_label": "MAIN 1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "429-435",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L429-L435"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Sets attack.",
    "short_label": "ATTACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "346",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L346"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env_dest",
    "gesture": "turn",
    "action": "Sets env>filter.",
    "short_label": "ENV>FILTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "347",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L347"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Sets rate.",
    "short_label": "LFO RATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L348"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo_dest",
    "gesture": "turn",
    "action": "Sets lfo>pitch.",
    "short_label": "LFO>PITCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "349",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L349"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mod",
    "gesture": "turn",
    "action": "Chooses which of four modulation routes the other knobs edit.",
    "short_label": "MOD SLOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "350",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L350"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "30-33",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L30-L33"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "603-605",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L603-L605"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Sets distortion.",
    "short_label": "DISTORTION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "351",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L351"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "5-8",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L5-L8"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slicer",
    "gesture": "turn",
    "action": "Sets slicer type.",
    "short_label": "SLICER TYPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L352"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "dly",
    "gesture": "turn",
    "action": "Sets time.",
    "short_label": "TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "353",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L353"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "reverb",
    "gesture": "turn",
    "action": "Chooses ROOM or SPRING reverb.",
    "short_label": "TYPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "354",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L354"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chorus",
    "gesture": "turn",
    "action": "Sets rate.",
    "short_label": "CHORUS RATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "355",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L355"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "turn",
    "action": "Sets root.",
    "short_label": "ROOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "356",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L356"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "7-12",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L7-L12"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chord",
    "gesture": "turn",
    "action": "Sets chord.",
    "short_label": "CHORD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "357",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L357"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit1",
    "gesture": "turn",
    "action": "Sets engine value 1; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2",
    "gesture": "turn",
    "action": "Sets engine value 5; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "turn",
    "action": "Chooses a slice marker or the end marker.",
    "short_label": "MARKER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L360"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "115-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L115-L153"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "155-199",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L155-L199"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice",
    "gesture": "turn",
    "action": "Sets poly/mono.",
    "short_label": "POLY/MONO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L366"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice2",
    "gesture": "turn",
    "action": "Sets allocation.",
    "short_label": "ALLOCATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "global",
    "gesture": "turn",
    "action": "Sets bpm.",
    "short_label": "BPM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "368",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L368"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "system",
    "gesture": "turn",
    "action": "Changes an unused stored field while the screen continues to show USB connection state.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "369",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L369"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "127-130",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L127-L130"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "846-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L846-L859"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "turn",
    "action": "Loads the next or previous sound for audition in memory.",
    "short_label": "SOUND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "370",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L370"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "567-579",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L567-L579"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "964-970",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L964-L970"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "turn",
    "action": "Chooses a user sound slot.",
    "short_label": "SLOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "371",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L371"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "670-683",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L670-L683"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "turn",
    "action": "Chooses the project slot.",
    "short_label": "SLOT A-D",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "372",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L372"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "685-699",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L685-L699"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "911-913",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L911-L913"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "turn",
    "action": "Selects clearing this track’s steps and automation for OCT+ to ask, applying it in memory with one pattern undo and later quiet-time saving.",
    "short_label": "CLEAR SEQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "373",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L373"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1050-1066",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1050-L1066"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Sets arp mode.",
    "short_label": "ARP MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "374",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L374"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "arp2",
    "gesture": "turn",
    "action": "Sets swing.",
    "short_label": "SWING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "375",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L375"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "turn",
    "action": "Moves the step cursor.",
    "short_label": "CURSOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "468-501",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L468-L501"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "turn",
    "action": "Moves the step cursor.",
    "short_label": "CURSOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "425-438",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L425-L438"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "turn",
    "action": "Sets length.",
    "short_label": "LENGTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "377",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L377"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "turn",
    "action": "Chooses a factory phrase or a pattern stored in a user sound.",
    "short_label": "PATTERN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "378",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L378"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "588-601",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L588-L601"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "655-662",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L655-L662"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "675-713",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L675-L713"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mixer",
    "gesture": "turn",
    "action": "Sets level.",
    "short_label": "LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "379",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L379"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "303-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L303-L331"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "turn",
    "action": "Chooses a song row, including the next unused row.",
    "short_label": "ROW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "380",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L380"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "534-554",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L534-L554"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "turn",
    "action": "Moves the step cursor.",
    "short_label": "CURSOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "381",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L381"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "516-527",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L516-L527"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "turn",
    "action": "Turns recorded automation playback on or off.",
    "short_label": "PLAY ON/OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "382",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L382"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "528-533",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L528-L533"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "635-639",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L635-L639"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "turn",
    "action": "Chooses a setlist position and queues saving the selection automatically during a quiet pause without a question.",
    "short_label": "SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L383"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-515",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L515"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "627-634",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L634"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "36-48",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L36-L48"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "90-110",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L90-L110"
     }
    ]
   },
   {
    "mode": "drum_mix",
    "gesture": "turn",
    "action": "Sets the focused drum lane's level, capped at its unity level.",
    "short_label": "DRUM LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "384",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L384"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "112",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L112"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "404-407",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L404-L407"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_analog",
    "gesture": "turn",
    "action": "Sets cutoff for the selected sound.",
    "short_label": "CUTOFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_analog",
    "gesture": "turn",
    "action": "Sets wave for the selected sound.",
    "short_label": "WAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_analog",
    "gesture": "turn",
    "action": "Sets cutoff for the selected sound.",
    "short_label": "CUTOFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phase",
    "gesture": "turn",
    "action": "Sets phase shape for the selected sound.",
    "short_label": "PHASE SHAPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_phase",
    "gesture": "turn",
    "action": "Sets wave for the selected sound.",
    "short_label": "WAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_phase",
    "gesture": "turn",
    "action": "Sets detune for the selected sound.",
    "short_label": "DETUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_lofi",
    "gesture": "turn",
    "action": "Sets wave for the selected sound.",
    "short_label": "WAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit1_lofi",
    "gesture": "turn",
    "action": "Sets chip for the selected sound.",
    "short_label": "CHIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit2_lofi",
    "gesture": "turn",
    "action": "Sets sweep for the selected sound.",
    "short_label": "SWEEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "home_sample",
    "gesture": "turn",
    "action": "Sets sample set for the selected sound.",
    "short_label": "SAMPLE SET",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_sample",
    "gesture": "turn",
    "action": "Sets sample set for the selected sound.",
    "short_label": "SAMPLE SET",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_sample",
    "gesture": "turn",
    "action": "Sets cutoff for the selected sound.",
    "short_label": "CUTOFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_voice",
    "gesture": "turn",
    "action": "Sets vowel for the selected sound.",
    "short_label": "VOWEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_voice",
    "gesture": "turn",
    "action": "Sets vowel for the selected sound.",
    "short_label": "VOWEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_voice",
    "gesture": "turn",
    "action": "Sets buzz for the selected sound.",
    "short_label": "BUZZ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_trio",
    "gesture": "turn",
    "action": "Sets cutoff for the selected sound.",
    "short_label": "CUTOFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_trio",
    "gesture": "turn",
    "action": "Sets wave for the selected sound.",
    "short_label": "WAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_trio",
    "gesture": "turn",
    "action": "Sets mode for the selected sound.",
    "short_label": "OSC MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_wheel",
    "gesture": "turn",
    "action": "Sets register for the selected sound.",
    "short_label": "REGISTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_wheel",
    "gesture": "turn",
    "action": "Sets register for the selected sound.",
    "short_label": "REGISTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_wheel",
    "gesture": "turn",
    "action": "Sets percussion for the selected sound.",
    "short_label": "PERCUSSION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_grain",
    "gesture": "turn",
    "action": "Sets position for the selected sound.",
    "short_label": "GRAIN POS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_grain",
    "gesture": "turn",
    "action": "Sets source for the selected sound.",
    "short_label": "GRAIN SOURCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_grain",
    "gesture": "turn",
    "action": "Sets pitch for the selected sound.",
    "short_label": "PITCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phys",
    "gesture": "turn",
    "action": "Sets model structure, membrane harmonics on MEMB or sympathetic-string tuning on SYMP.",
    "short_label": "STRUCTURE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit1_phys",
    "gesture": "turn",
    "action": "Sets model for the selected sound.",
    "short_label": "MODEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit2_phys",
    "gesture": "turn",
    "action": "Sets strike position, or sympathetic-string level on SYMP.",
    "short_label": "EXCITE POS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "home_drum",
    "gesture": "turn",
    "action": "Sets tune for the selected drum lane.",
    "short_label": "TUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_drum",
    "gesture": "turn",
    "action": "Chooses the whole track's drum kit.",
    "short_label": "KIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_drum",
    "gesture": "turn",
    "action": "Sets snap for the selected drum lane.",
    "short_label": "SNAP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_noise",
    "gesture": "turn",
    "action": "Sets frequency for the selected sound.",
    "short_label": "FREQUENCY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit1_noise",
    "gesture": "turn",
    "action": "Sets mode for the selected sound.",
    "short_label": "NOISE MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit2_noise",
    "gesture": "turn",
    "action": "Sets key track for the selected sound.",
    "short_label": "KEY TRACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "home_fm6",
    "gesture": "turn",
    "action": "Sets mod level for the selected sound.",
    "short_label": "MOD LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_fm6",
    "gesture": "turn",
    "action": "Sets algorithm for the selected sound.",
    "short_label": "ALGORITHM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_fm6",
    "gesture": "turn",
    "action": "Sets mod envelope for the selected sound.",
    "short_label": "MOD ENVELOPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_slice",
    "gesture": "turn",
    "action": "Sets source for the selected sound.",
    "short_label": "SLICE SOURCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_slice",
    "gesture": "turn",
    "action": "Sets source for the selected sound.",
    "short_label": "SLICE SOURCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_slice",
    "gesture": "turn",
    "action": "Sets play mode for the selected sound.",
    "short_label": "PLAY MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "turn",
    "action": "Changes the selected setting now; HOME requests a settings write when stopped, without a question or panel undo, and unchanged settings skip the write.",
    "short_label": "MENU VALUE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-24",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L24"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   },
   {
    "mode": "menu_color",
    "gesture": "turn",
    "action": "Chooses the display palette, wrapping at the ends.",
    "short_label": "COLOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_style",
    "gesture": "turn",
    "action": "Chooses filled FLAT cards or the LINE layout.",
    "short_label": "STYLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_large",
    "gesture": "turn",
    "action": "Turns larger value cards and labels off or on.",
    "short_label": "LARGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_anim",
    "gesture": "turn",
    "action": "Turns animated value changes off or on.",
    "short_label": "ANIM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_leds",
    "gesture": "turn",
    "action": "Chooses OFF, DIM LO, DIM HI or INV for idle lights.",
    "short_label": "LEDS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_hold",
    "gesture": "turn",
    "action": "Sets the quick-layer hold time to 0.3, 0.4, 0.5 or 0.6 seconds.",
    "short_label": "HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_accel",
    "gesture": "turn",
    "action": "Turns faster value changes during a fast knob turn off or on.",
    "short_label": "KNOB ACCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_latch",
    "gesture": "turn",
    "action": "Turns latched performance effects off or on.",
    "short_label": "FX LATCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_bpmlock",
    "gesture": "turn",
    "action": "Locks ordinary SELECT turns from changing tempo when ON.",
    "short_label": "BPM LOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_eq",
    "gesture": "turn",
    "action": "Chooses FLAT, LOWCUT or BASS+ tone shaping.",
    "short_label": "SPEAKER EQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_usb_level",
    "gesture": "turn",
    "action": "Chooses MASTER-controlled or FIXED USB audio level.",
    "short_label": "USB LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_serial",
    "gesture": "turn",
    "action": "Turns the USB serial console off or on.",
    "short_label": "USB SERIAL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_calibration",
    "gesture": "turn",
    "action": "When prompted for this knob, turn it clockwise to teach its mapping.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "turn_while_holding:button_fx",
    "action": "Sweeps the master low-pass filter to the left and high-pass filter to the right.",
    "short_label": "FILTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "356-362",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L356-L362"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes track 1’s level and records that movement when the track is recording.",
    "short_label": "LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "363-366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L363-L366"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "turn_while_holding:button_sel",
    "action": "Sets the root note.",
    "short_label": "ROOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "48-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L48-L49"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "turn_while_holding:button_edit",
    "action": "Steps to another engine.",
    "short_label": "ENGINE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "367-383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L367-L383"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Moves the text cursor.",
    "short_label": "TEXT CURSOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "190-203",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L190-L203"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   }
  ],
  "encoder_knob2": [
   {
    "mode": "home",
    "gesture": "turn",
    "action": "Edits the engine's main value 2; the engine-specific HOME entries name it.",
    "short_label": "MAIN 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "429-435",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L429-L435"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Sets decay.",
    "short_label": "DECAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "346",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L346"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env_dest",
    "gesture": "turn",
    "action": "Sets env>pitch.",
    "short_label": "ENV>PITCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "347",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L347"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Sets wave.",
    "short_label": "LFO WAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L348"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo_dest",
    "gesture": "turn",
    "action": "Sets lfo>filter.",
    "short_label": "LFO>FILTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "349",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L349"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mod",
    "gesture": "turn",
    "action": "Sets source.",
    "short_label": "SOURCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "350",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L350"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "30-33",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L30-L33"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "603-605",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L603-L605"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Sets chorus send.",
    "short_label": "CHORUS SEND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "351",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L351"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "5-8",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L5-L8"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slicer",
    "gesture": "turn",
    "action": "Sets pattern.",
    "short_label": "PATTERN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L352"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "dly",
    "gesture": "turn",
    "action": "Sets feedback.",
    "short_label": "DELAY FB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "353",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L353"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "reverb",
    "gesture": "turn",
    "action": "Sets size.",
    "short_label": "SIZE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "354",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L354"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chorus",
    "gesture": "turn",
    "action": "Sets depth.",
    "short_label": "DEPTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "355",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L355"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "turn",
    "action": "Sets scale.",
    "short_label": "SCALE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "356",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L356"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "7-12",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L7-L12"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chord",
    "gesture": "turn",
    "action": "Sets voicing.",
    "short_label": "VOICING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "357",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L357"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit1",
    "gesture": "turn",
    "action": "Sets engine value 2; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2",
    "gesture": "turn",
    "action": "Sets engine value 6; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 6",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "turn",
    "action": "Moves the selected marker in memory, then saves its slice table after leaving this page while stopped without a question or undo, unless the sample leaves no room for it.",
    "short_label": "MOVE MARKER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L360"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "115-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L115-L153"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "155-199",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L155-L199"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/slice_store.c",
      "lines": "71-105",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/slice_store.c#L71-L105"
     }
    ]
   },
   {
    "mode": "voice",
    "gesture": "turn",
    "action": "Sets glide.",
    "short_label": "GLIDE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L366"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice2",
    "gesture": "turn",
    "action": "Sets detune.",
    "short_label": "UNISON TUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "global",
    "gesture": "turn",
    "action": "Sets swing.",
    "short_label": "SWING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "368",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L368"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "system",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "369",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L369"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "127-130",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L127-L130"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "846-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L846-L859"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "turn",
    "action": "Chooses another engine.",
    "short_label": "ENGINE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "370",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L370"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "567-579",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L567-L579"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "964-970",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L964-L970"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "turn",
    "action": "Selects LOAD for OCT+ to replace the track's sound in memory.",
    "short_label": "LOAD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "371",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L371"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "670-683",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L670-L683"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "372",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L372"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "685-699",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L685-L699"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "911-913",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L911-L913"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "turn",
    "action": "Selects resetting this track’s sound to its first engine preset for OCT+ to ask, keeping the steps and one sound undo copy before later quiet-time saving.",
    "short_label": "INIT SOUND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "373",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L373"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1050-1066",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1050-L1066"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Sets arp rate.",
    "short_label": "ARP RATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "374",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L374"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "arp2",
    "gesture": "turn",
    "action": "Sets probability.",
    "short_label": "PROBABILITY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "375",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L375"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "turn",
    "action": "Transposes all notes on the step or adds the last note to an empty step.",
    "short_label": "NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "468-501",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L468-L501"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "turn",
    "action": "Chooses the drum lane to edit.",
    "short_label": "DRUM LANE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "425-438",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L425-L438"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "turn",
    "action": "Sets division.",
    "short_label": "STEP DIV",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "377",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L377"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "turn",
    "action": "Nothing changes when this knob turns; OCT+ already loads the chosen phrase.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "378",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L378"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "588-601",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L588-L601"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "655-662",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L655-L662"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "675-713",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L675-L713"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mixer",
    "gesture": "turn",
    "action": "Sets pan.",
    "short_label": "PAN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "379",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L379"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "303-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L303-L331"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "turn",
    "action": "Sets the row's project slot; turning at an unused row first creates it.",
    "short_label": "SLOT A-D",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "380",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L380"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "534-554",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L534-L554"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "turn",
    "action": "Sets the whole step's chance from 0 to 100 percent.",
    "short_label": "CHANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "381",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L381"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "516-527",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L516-L527"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "382",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L382"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "528-533",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L528-L533"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "635-639",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L635-L639"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "turn",
    "action": "Moves the chosen song through the setlist while stopped and queues saving the new order automatically during a quiet pause without a question.",
    "short_label": "ORDER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L383"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-515",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L515"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "627-634",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L634"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "36-48",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L36-L48"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "90-110",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L90-L110"
     }
    ]
   },
   {
    "mode": "drum_mix",
    "gesture": "turn",
    "action": "Sets the focused drum lane's pan.",
    "short_label": "DRUM PAN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "384",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L384"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "112",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L112"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "404-407",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L404-L407"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_analog",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_analog",
    "gesture": "turn",
    "action": "Sets detune for the selected sound.",
    "short_label": "OSC DETUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_analog",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phase",
    "gesture": "turn",
    "action": "Sets env depth for the selected sound.",
    "short_label": "ENV DEPTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_phase",
    "gesture": "turn",
    "action": "Sets wave 2 for the selected sound.",
    "short_label": "WAVE 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_phase",
    "gesture": "turn",
    "action": "Sets line for the selected sound.",
    "short_label": "LINE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_lofi",
    "gesture": "turn",
    "action": "Sets pulse duty, or chooses a waveform table when WAVE is WRAM.",
    "short_label": "DUTY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit1_lofi",
    "gesture": "turn",
    "action": "Sets wave for the selected sound.",
    "short_label": "CHIP WAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit2_lofi",
    "gesture": "turn",
    "action": "Sets vibrato for the selected sound.",
    "short_label": "VIBRATO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "home_sample",
    "gesture": "turn",
    "action": "Sets cutoff for the selected sound.",
    "short_label": "CUTOFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_sample",
    "gesture": "turn",
    "action": "Sets tune for the selected sound.",
    "short_label": "SAMPLE TUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_sample",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_voice",
    "gesture": "turn",
    "action": "Sets buzz for the selected sound.",
    "short_label": "BUZZ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_voice",
    "gesture": "turn",
    "action": "Sets vowel 2 for the selected sound.",
    "short_label": "VOWEL 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_voice",
    "gesture": "turn",
    "action": "Sets breath for the selected sound.",
    "short_label": "BREATH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_trio",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_trio",
    "gesture": "turn",
    "action": "Sets interval 2 for the selected sound.",
    "short_label": "INTERVAL 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_trio",
    "gesture": "turn",
    "action": "Sets cutoff for the selected sound.",
    "short_label": "CUTOFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_wheel",
    "gesture": "turn",
    "action": "Sets percussion for the selected sound.",
    "short_label": "PERCUSSION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_wheel",
    "gesture": "turn",
    "action": "Sets sub for the selected sound.",
    "short_label": "SUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_wheel",
    "gesture": "turn",
    "action": "Sets key click for the selected sound.",
    "short_label": "KEY CLICK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_grain",
    "gesture": "turn",
    "action": "Sets grain size for the selected sound.",
    "short_label": "GRAIN SIZE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_grain",
    "gesture": "turn",
    "action": "Sets position for the selected sound.",
    "short_label": "POSITION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_grain",
    "gesture": "turn",
    "action": "Sets spread for the selected sound.",
    "short_label": "SPREAD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phys",
    "gesture": "turn",
    "action": "Sets brightness for the selected sound.",
    "short_label": "BRIGHTNESS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit1_phys",
    "gesture": "turn",
    "action": "Sets model structure, membrane harmonics on MEMB or sympathetic-string tuning on SYMP.",
    "short_label": "STRUCTURE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit2_phys",
    "gesture": "turn",
    "action": "Sets accent for the selected sound.",
    "short_label": "EXCITE HIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "home_drum",
    "gesture": "turn",
    "action": "Sets tone for the selected drum lane.",
    "short_label": "TONE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_drum",
    "gesture": "turn",
    "action": "Sets tune for the selected drum lane.",
    "short_label": "DRUM TUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_drum",
    "gesture": "turn",
    "action": "Sets accent for the selected drum lane.",
    "short_label": "DRUM ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_noise",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit1_noise",
    "gesture": "turn",
    "action": "Sets colour for the selected sound.",
    "short_label": "COLOUR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit2_noise",
    "gesture": "turn",
    "action": "Sets particle density, or register length on LFSR and META.",
    "short_label": "DENSITY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "home_fm6",
    "gesture": "turn",
    "action": "Sets mod ratio for the selected sound.",
    "short_label": "MOD RATIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_fm6",
    "gesture": "turn",
    "action": "Sets feedback for the selected sound.",
    "short_label": "FM FEEDBACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_fm6",
    "gesture": "turn",
    "action": "Sets velocity mod for the selected sound.",
    "short_label": "VELOCITY MOD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_slice",
    "gesture": "turn",
    "action": "Sets division for the selected sound.",
    "short_label": "SLICE COUNT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_slice",
    "gesture": "turn",
    "action": "Sets division for the selected sound.",
    "short_label": "SLICE COUNT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_slice",
    "gesture": "turn",
    "action": "Sets reverse for the selected sound.",
    "short_label": "REVERSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "turn",
    "action": "Changes the selected setting now; HOME requests a settings write when stopped, without a question or panel undo, and unchanged settings skip the write.",
    "short_label": "MENU VALUE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-24",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L24"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   },
   {
    "mode": "menu_color",
    "gesture": "turn",
    "action": "Chooses the display palette, wrapping at the ends.",
    "short_label": "COLOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_style",
    "gesture": "turn",
    "action": "Chooses filled FLAT cards or the LINE layout.",
    "short_label": "STYLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_large",
    "gesture": "turn",
    "action": "Turns larger value cards and labels off or on.",
    "short_label": "LARGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_anim",
    "gesture": "turn",
    "action": "Turns animated value changes off or on.",
    "short_label": "ANIM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_leds",
    "gesture": "turn",
    "action": "Chooses OFF, DIM LO, DIM HI or INV for idle lights.",
    "short_label": "LEDS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_hold",
    "gesture": "turn",
    "action": "Sets the quick-layer hold time to 0.3, 0.4, 0.5 or 0.6 seconds.",
    "short_label": "HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_accel",
    "gesture": "turn",
    "action": "Turns faster value changes during a fast knob turn off or on.",
    "short_label": "KNOB ACCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_latch",
    "gesture": "turn",
    "action": "Turns latched performance effects off or on.",
    "short_label": "FX LATCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_bpmlock",
    "gesture": "turn",
    "action": "Locks ordinary SELECT turns from changing tempo when ON.",
    "short_label": "BPM LOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_eq",
    "gesture": "turn",
    "action": "Chooses FLAT, LOWCUT or BASS+ tone shaping.",
    "short_label": "SPEAKER EQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_usb_level",
    "gesture": "turn",
    "action": "Chooses MASTER-controlled or FIXED USB audio level.",
    "short_label": "USB LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_serial",
    "gesture": "turn",
    "action": "Turns the USB serial console off or on.",
    "short_label": "USB SERIAL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_calibration",
    "gesture": "turn",
    "action": "When prompted for this knob, turn it clockwise to teach its mapping.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "turn_while_holding:button_fx",
    "action": "Raises the master bit-crushing effect.",
    "short_label": "CRUSH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "356-362",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L356-L362"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes track 2’s level and records that movement when the track is recording.",
    "short_label": "LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "363-366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L363-L366"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "turn_while_holding:button_sel",
    "action": "Selects the scale.",
    "short_label": "SCALE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "48-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L48-L49"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "turn_while_holding:button_edit",
    "action": "Browses sounds in the selected engine.",
    "short_label": "SOUND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "367-383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L367-L383"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Changes the character at the cursor.",
    "short_label": "CHARACTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "190-203",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L190-L203"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   }
  ],
  "encoder_knob3": [
   {
    "mode": "home",
    "gesture": "turn",
    "action": "Edits the engine's main value 3; the engine-specific HOME entries name it.",
    "short_label": "MAIN 3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "429-435",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L429-L435"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Sets sustain.",
    "short_label": "SUSTAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "346",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L346"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env_dest",
    "gesture": "turn",
    "action": "Sets env>shape.",
    "short_label": "ENV>SHAPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "347",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L347"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Sets phase.",
    "short_label": "PHASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L348"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo_dest",
    "gesture": "turn",
    "action": "Sets lfo>shape.",
    "short_label": "LFO>SHAPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "349",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L349"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mod",
    "gesture": "turn",
    "action": "Sets destination.",
    "short_label": "DESTINATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "350",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L350"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "30-33",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L30-L33"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "603-605",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L603-L605"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Sets delay send.",
    "short_label": "DELAY SEND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "351",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L351"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "5-8",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L5-L8"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slicer",
    "gesture": "turn",
    "action": "Sets rate.",
    "short_label": "RATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L352"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "dly",
    "gesture": "turn",
    "action": "Sets colour.",
    "short_label": "DELAY TONE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "353",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L353"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "reverb",
    "gesture": "turn",
    "action": "Sets damp.",
    "short_label": "REVERB DAMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "354",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L354"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chorus",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "355",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L355"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "turn",
    "action": "Chooses OFF, SNAP, WHITE or SEQ scale mapping.",
    "short_label": "KEY MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "356",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L356"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "7-12",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L7-L12"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chord",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "357",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L357"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit1",
    "gesture": "turn",
    "action": "Sets engine value 3; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2",
    "gesture": "turn",
    "action": "Sets engine value 7; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 7",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "turn",
    "action": "Selects SPLIT for OCT+ to divide the selected user slice without a question.",
    "short_label": "SPLIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L360"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "115-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L115-L153"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "155-199",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L155-L199"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice",
    "gesture": "turn",
    "action": "Sets glide mode.",
    "short_label": "GLIDE MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L366"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice2",
    "gesture": "turn",
    "action": "Sets pan.",
    "short_label": "PAN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "global",
    "gesture": "turn",
    "action": "Sets clock src.",
    "short_label": "CLOCK SRC",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "368",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L368"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "system",
    "gesture": "turn",
    "action": "Chooses channel-to-track routing or routes incoming notes to the selected track.",
    "short_label": "MIDI ROUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "369",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L369"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "127-130",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L127-L130"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "846-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L846-L859"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "turn",
    "action": "Marks or unmarks the sound as a favourite and queues the preference to save when stopped without a question.",
    "short_label": "FAVOURITE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "370",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L370"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "567-579",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L567-L579"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "964-970",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L964-L970"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "turn",
    "action": "Selects ERASE for OCT+ to ask before erasing the chosen user sound while stopped.",
    "short_label": "ERASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "371",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L371"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "670-683",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L670-L683"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "turn",
    "action": "Selects LOAD for OCT+ to replace the music without a panel question or undo and make A–C the automatic-save destination, so later edits can replace that saved song without asking.",
    "short_label": "LOAD PROJ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "372",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L372"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "685-699",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L685-L699"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "911-913",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L911-L913"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "938-949",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "turn",
    "action": "Selects deleting the current chain row for OCT+ to ask, with no row undo and later quiet-time saving of the resulting chain.",
    "short_label": "DELETE ROW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "373",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L373"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1050-1066",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1050-L1066"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Sets arp octaves.",
    "short_label": "ARP OCTAVES",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "374",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L374"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "arp2",
    "gesture": "turn",
    "action": "Sets latch.",
    "short_label": "LATCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "375",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L375"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "turn",
    "action": "Chooses NOTE, TIE or REST for the cursor step.",
    "short_label": "NOTE/TIE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "468-501",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L468-L501"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "turn",
    "action": "Adds the lane's hit clockwise or removes it counterclockwise.",
    "short_label": "HIT ON/OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "425-438",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L425-L438"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "turn",
    "action": "Sets swing.",
    "short_label": "SWING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "377",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L377"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "378",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L378"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "588-601",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L588-L601"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "655-662",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L655-L662"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "675-713",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L675-L713"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mixer",
    "gesture": "turn",
    "action": "Sets reverb send.",
    "short_label": "REVERB SEND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "379",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L379"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "303-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L303-L331"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "turn",
    "action": "Sets row repeats from 1 to 16 and creates the row if needed.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "380",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L380"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "534-554",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L534-L554"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "turn",
    "action": "Sets one to four repeats for the whole step.",
    "short_label": "RATCHET",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "381",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L381"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "516-527",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L516-L527"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "382",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L382"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "528-533",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L528-L533"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "635-639",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L635-L639"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "turn",
    "action": "Selects LOAD for OCT+ to request a song while stopped, saving the previous song before loading and making the new song the destination for later automatic writes without a question or flash undo.",
    "short_label": "QUEUE SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L383"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-515",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L515"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "627-634",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L634"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "49-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L49-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "938-949",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
     }
    ]
   },
   {
    "mode": "drum_mix",
    "gesture": "turn",
    "action": "Sets the focused drum lane's chorus send.",
    "short_label": "DRUM CHORUS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "384",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L384"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "112",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L112"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "404-407",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L404-L407"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_analog",
    "gesture": "turn",
    "action": "Sets attack for the selected sound.",
    "short_label": "ATTACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_analog",
    "gesture": "turn",
    "action": "Sets osc mix for the selected sound.",
    "short_label": "OSC MIX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_analog",
    "gesture": "turn",
    "action": "Sets drive for the selected sound.",
    "short_label": "DRIVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phase",
    "gesture": "turn",
    "action": "Sets detune for the selected sound.",
    "short_label": "PHS DETUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_phase",
    "gesture": "turn",
    "action": "Sets phase shape for the selected sound.",
    "short_label": "PHASE SHAPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_phase",
    "gesture": "turn",
    "action": "Sets sub for the selected sound.",
    "short_label": "SUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_lofi",
    "gesture": "turn",
    "action": "Sets bit crushing, or the stepped envelope when CHIP is STEP.",
    "short_label": "CRUSH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit1_lofi",
    "gesture": "turn",
    "action": "Sets pulse duty, or chooses a waveform table when WAVE is WRAM.",
    "short_label": "DUTY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit2_lofi",
    "gesture": "turn",
    "action": "Sets arp for the selected sound.",
    "short_label": "ARP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "home_sample",
    "gesture": "turn",
    "action": "Sets attack for the selected sound.",
    "short_label": "ATTACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_sample",
    "gesture": "turn",
    "action": "Sets bit depth for the selected sound.",
    "short_label": "BIT DEPTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_sample",
    "gesture": "turn",
    "action": "Sets drive for the selected sound.",
    "short_label": "DRIVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_voice",
    "gesture": "turn",
    "action": "Sets breath for the selected sound.",
    "short_label": "BREATH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_voice",
    "gesture": "turn",
    "action": "Sets talk for the selected sound.",
    "short_label": "TALK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_voice",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_trio",
    "gesture": "turn",
    "action": "Sets pulse width for the selected sound.",
    "short_label": "PULSE WIDTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_trio",
    "gesture": "turn",
    "action": "Sets interval 3 for the selected sound.",
    "short_label": "INTERVAL 3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_trio",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_wheel",
    "gesture": "turn",
    "action": "Sets drive for the selected sound.",
    "short_label": "DRIVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_wheel",
    "gesture": "turn",
    "action": "Sets body for the selected sound.",
    "short_label": "BODY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_wheel",
    "gesture": "turn",
    "action": "Sets drive for the selected sound.",
    "short_label": "DRIVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_grain",
    "gesture": "turn",
    "action": "Sets density for the selected sound.",
    "short_label": "DENSITY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_grain",
    "gesture": "turn",
    "action": "Sets grain size for the selected sound.",
    "short_label": "GRAIN SIZE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_grain",
    "gesture": "turn",
    "action": "Sets random for the selected sound.",
    "short_label": "RANDOM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phys",
    "gesture": "turn",
    "action": "Sets damp for the selected sound.",
    "short_label": "PHYS DAMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit1_phys",
    "gesture": "turn",
    "action": "Sets brightness for the selected sound.",
    "short_label": "BRIGHTNESS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit2_phys",
    "gesture": "turn",
    "action": "Sets bowed excitation, membrane pitch bend on MEMB or bridge buzz on SYMP.",
    "short_label": "BOW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "home_drum",
    "gesture": "turn",
    "action": "Sets decay for the selected drum lane.",
    "short_label": "DRUM DECAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_drum",
    "gesture": "turn",
    "action": "Sets tone for the selected drum lane.",
    "short_label": "TONE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_drum",
    "gesture": "turn",
    "action": "Sets kick type for the selected drum lane.",
    "short_label": "KICK TYPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_noise",
    "gesture": "turn",
    "action": "Sets colour for the selected sound.",
    "short_label": "NOISE COLOUR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit1_noise",
    "gesture": "turn",
    "action": "Sets frequency for the selected sound.",
    "short_label": "FREQUENCY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit2_noise",
    "gesture": "turn",
    "action": "Sets drift for the selected sound.",
    "short_label": "DRIFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "home_fm6",
    "gesture": "turn",
    "action": "Sets mod envelope for the selected sound.",
    "short_label": "MOD ENVELOPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_fm6",
    "gesture": "turn",
    "action": "Sets mod level for the selected sound.",
    "short_label": "MOD LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_fm6",
    "gesture": "turn",
    "action": "Sets detune for the selected sound.",
    "short_label": "FM DETUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_slice",
    "gesture": "turn",
    "action": "Sets pitch for the selected sound.",
    "short_label": "PITCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_slice",
    "gesture": "turn",
    "action": "Sets start slice for the selected sound.",
    "short_label": "START SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_slice",
    "gesture": "turn",
    "action": "Sets decay for the selected sound.",
    "short_label": "SLICE DECAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "turn",
    "action": "Changes the selected setting now; HOME requests a settings write when stopped, without a question or panel undo, and unchanged settings skip the write.",
    "short_label": "MENU VALUE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-24",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L24"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   },
   {
    "mode": "menu_color",
    "gesture": "turn",
    "action": "Chooses the display palette, wrapping at the ends.",
    "short_label": "COLOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_style",
    "gesture": "turn",
    "action": "Chooses filled FLAT cards or the LINE layout.",
    "short_label": "STYLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_large",
    "gesture": "turn",
    "action": "Turns larger value cards and labels off or on.",
    "short_label": "LARGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_anim",
    "gesture": "turn",
    "action": "Turns animated value changes off or on.",
    "short_label": "ANIM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_leds",
    "gesture": "turn",
    "action": "Chooses OFF, DIM LO, DIM HI or INV for idle lights.",
    "short_label": "LEDS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_hold",
    "gesture": "turn",
    "action": "Sets the quick-layer hold time to 0.3, 0.4, 0.5 or 0.6 seconds.",
    "short_label": "HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_accel",
    "gesture": "turn",
    "action": "Turns faster value changes during a fast knob turn off or on.",
    "short_label": "KNOB ACCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_latch",
    "gesture": "turn",
    "action": "Turns latched performance effects off or on.",
    "short_label": "FX LATCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_bpmlock",
    "gesture": "turn",
    "action": "Locks ordinary SELECT turns from changing tempo when ON.",
    "short_label": "BPM LOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_eq",
    "gesture": "turn",
    "action": "Chooses FLAT, LOWCUT or BASS+ tone shaping.",
    "short_label": "SPEAKER EQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_usb_level",
    "gesture": "turn",
    "action": "Chooses MASTER-controlled or FIXED USB audio level.",
    "short_label": "USB LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_serial",
    "gesture": "turn",
    "action": "Turns the USB serial console off or on.",
    "short_label": "USB SERIAL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_calibration",
    "gesture": "turn",
    "action": "When prompted for this knob, turn it clockwise to teach its mapping.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "turn_while_holding:button_fx",
    "action": "Sends the dry mix into delay and reverb.",
    "short_label": "THROW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "356-362",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L356-L362"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes track 3’s level and records that movement when the track is recording.",
    "short_label": "LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "363-366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L363-L366"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "turn_while_holding:button_sel",
    "action": "Selects the one-finger chord type.",
    "short_label": "CHORD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "48-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L48-L49"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "turn_while_holding:button_edit",
    "action": "Marks or unmarks the sound as a favourite, requesting a settings save when stopped.",
    "short_label": "FAVOURITE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "367-383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L367-L383"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "190-203",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L190-L203"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   }
  ],
  "encoder_knob4": [
   {
    "mode": "home",
    "gesture": "turn",
    "action": "Edits the engine's main value 4; the engine-specific HOME entries name it.",
    "short_label": "MAIN 4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "429-435",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L429-L435"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Sets release.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "346",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L346"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "env_dest",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "347",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L347"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Sets fade.",
    "short_label": "FADE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L348"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "lfo_dest",
    "gesture": "turn",
    "action": "Sets lfo>amp.",
    "short_label": "LFO>AMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "349",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L349"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mod",
    "gesture": "turn",
    "action": "Sets amount.",
    "short_label": "AMOUNT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "350",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L350"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "30-33",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L30-L33"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "603-605",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L603-L605"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Sets reverb send.",
    "short_label": "REVERB SEND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "351",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L351"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "5-8",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L5-L8"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slicer",
    "gesture": "turn",
    "action": "Sets depth.",
    "short_label": "DEPTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L352"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "dly",
    "gesture": "turn",
    "action": "Sets mix.",
    "short_label": "MIX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "353",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L353"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "reverb",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "354",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L354"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chorus",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "355",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L355"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "turn",
    "action": "Sets transpose.",
    "short_label": "TRANSPOSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "356",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L356"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "7-12",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L7-L12"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chord",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "357",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L357"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit1",
    "gesture": "turn",
    "action": "Sets engine value 4; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2",
    "gesture": "turn",
    "action": "Sets engine value 8; the engine-specific EDIT entries name it.",
    "short_label": "ENGINE 8",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "turn",
    "action": "Selects JOIN for OCT+ to remove the selected slice boundary without a question.",
    "short_label": "JOIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L360"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "115-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L115-L153"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "155-199",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L155-L199"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice",
    "gesture": "turn",
    "action": "Sets priority.",
    "short_label": "PRIORITY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L366"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "voice2",
    "gesture": "turn",
    "action": "Sets mute.",
    "short_label": "MUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "global",
    "gesture": "turn",
    "action": "Sets tune.",
    "short_label": "TUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "368",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L368"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "system",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "369",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L369"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "127-130",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L127-L130"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "846-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L846-L859"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "turn",
    "action": "Selects ALL or favourites and queues the changed preference to save when stopped without a question.",
    "short_label": "LIST FILTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "370",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L370"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "567-579",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L567-L579"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "964-970",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L964-L970"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "turn",
    "action": "Selects SAVE for OCT+ to ask before an overwrite, open NAME and write the sound after NAME is accepted while stopped.",
    "short_label": "SAVE SOUND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "371",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L371"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "670-683",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L670-L683"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "turn",
    "action": "Selects SAVE for OCT+ to ask before an overwrite, open NAME and write the project after NAME is accepted while stopped.",
    "short_label": "SAVE PROJ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "372",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L372"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "685-699",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L685-L699"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "911-913",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L911-L913"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "turn",
    "action": "Selects clearing the whole chain for OCT+ to ask, with no chain undo and later quiet-time saving of the cleared chain.",
    "short_label": "CLEAR SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "373",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L373"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1050-1066",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1050-L1066"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Sets arp gate.",
    "short_label": "ARP GATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "374",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L374"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "arp2",
    "gesture": "turn",
    "action": "Sets note order.",
    "short_label": "NOTE ORDER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "375",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L375"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "turn",
    "action": "Chooses accent, slide, both or neither for the cursor step.",
    "short_label": "ACC/SLIDE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "468-501",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L468-L501"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "turn",
    "action": "Adds the lane's accent clockwise or removes it counterclockwise.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "425-438",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L425-L438"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "turn",
    "action": "Sets gate.",
    "short_label": "GATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "377",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L377"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "378",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L378"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "588-601",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L588-L601"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "655-662",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L655-L662"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "675-713",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L675-L713"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "mixer",
    "gesture": "turn",
    "action": "Sets mute.",
    "short_label": "MUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "379",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L379"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "303-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L303-L331"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "380",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L380"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "534-554",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L534-L554"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "381",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L381"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "516-527",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L516-L527"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "turn",
    "action": "Selects clearing this track's recorded automation for OCT+ confirmation.",
    "short_label": "CLEAR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "382",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L382"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "528-533",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L528-L533"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "635-639",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L635-L639"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "turn",
    "action": "Selects SAVE for OCT+ to open NAME while stopped, but accepting an overwrite of an occupied extended song wrongly redirects writing to A, B, C or recovery D without flash undo.",
    "short_label": "SAVE SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L383"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-515",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L515"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "627-634",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L634"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "627-635",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L635"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1041",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1041"
     }
    ]
   },
   {
    "mode": "drum_mix",
    "gesture": "turn",
    "action": "Sets the focused drum lane's reverb send.",
    "short_label": "DRUM REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "384",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L384"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "112",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L112"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "404-407",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L404-L407"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_analog",
    "gesture": "turn",
    "action": "Sets release for the selected sound.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_analog",
    "gesture": "turn",
    "action": "Sets noise for the selected sound.",
    "short_label": "NOISE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_analog",
    "gesture": "turn",
    "action": "Sets key track for the selected sound.",
    "short_label": "KEY TRACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phase",
    "gesture": "turn",
    "action": "Sets release for the selected sound.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_phase",
    "gesture": "turn",
    "action": "Sets env depth for the selected sound.",
    "short_label": "ENV DEPTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_phase",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_lofi",
    "gesture": "turn",
    "action": "Sets release for the selected sound.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit1_lofi",
    "gesture": "turn",
    "action": "Sets bit crushing, or the stepped envelope when CHIP is STEP.",
    "short_label": "CHIP CRUSH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit2_lofi",
    "gesture": "turn",
    "action": "Sets tone for the selected sound.",
    "short_label": "CHIP TONE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "home_sample",
    "gesture": "turn",
    "action": "Sets release for the selected sound.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_sample",
    "gesture": "turn",
    "action": "Sets loop for the selected sound.",
    "short_label": "LOOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_sample",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_voice",
    "gesture": "turn",
    "action": "Sets talk for the selected sound.",
    "short_label": "TALK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_voice",
    "gesture": "turn",
    "action": "Sets shift for the selected sound.",
    "short_label": "SHIFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_voice",
    "gesture": "turn",
    "action": "Sets random for the selected sound.",
    "short_label": "RANDOM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_trio",
    "gesture": "turn",
    "action": "Sets interval 2 for the selected sound.",
    "short_label": "INTERVAL 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_trio",
    "gesture": "turn",
    "action": "Sets detune for the selected sound.",
    "short_label": "DETUNE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_trio",
    "gesture": "turn",
    "action": "Sets pulse width for the selected sound.",
    "short_label": "PULSE WIDTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_wheel",
    "gesture": "turn",
    "action": "Sets rotor for the selected sound.",
    "short_label": "ROTOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_wheel",
    "gesture": "turn",
    "action": "Sets top for the selected sound.",
    "short_label": "TOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_wheel",
    "gesture": "turn",
    "action": "Sets rotor for the selected sound.",
    "short_label": "ROTOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_grain",
    "gesture": "turn",
    "action": "Sets spread for the selected sound.",
    "short_label": "SPREAD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_grain",
    "gesture": "turn",
    "action": "Sets density for the selected sound.",
    "short_label": "DENSITY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_grain",
    "gesture": "turn",
    "action": "Sets tone for the selected sound.",
    "short_label": "GRAIN TONE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phys",
    "gesture": "turn",
    "action": "Sets strike position, or sympathetic-string level on SYMP.",
    "short_label": "POSITION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit1_phys",
    "gesture": "turn",
    "action": "Sets damp for the selected sound.",
    "short_label": "DAMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit2_phys",
    "gesture": "turn",
    "action": "Sets exciter for the selected sound.",
    "short_label": "EXCITER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "home_drum",
    "gesture": "turn",
    "action": "Sets snap for the selected drum lane.",
    "short_label": "SNAP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_drum",
    "gesture": "turn",
    "action": "Sets decay for the selected drum lane.",
    "short_label": "DRUM DECAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_drum",
    "gesture": "turn",
    "action": "Sets drive for the selected drum lane.",
    "short_label": "DRIVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_noise",
    "gesture": "turn",
    "action": "Sets release for the selected sound.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit1_noise",
    "gesture": "turn",
    "action": "Sets resonance for the selected sound.",
    "short_label": "RESONANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit2_noise",
    "gesture": "turn",
    "action": "Sets bit crushing, or register clock offset on LFSR and META.",
    "short_label": "NOISE CRUSH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "home_fm6",
    "gesture": "turn",
    "action": "Sets patch slot for the selected sound.",
    "short_label": "PATCH SLOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_fm6",
    "gesture": "turn",
    "action": "Sets mod ratio for the selected sound.",
    "short_label": "MOD RATIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_fm6",
    "gesture": "turn",
    "action": "Sets patch slot for the selected sound.",
    "short_label": "PATCH SLOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_slice",
    "gesture": "turn",
    "action": "Sets decay for the selected sound.",
    "short_label": "SLICE DECAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     }
    ]
   },
   {
    "mode": "edit1_slice",
    "gesture": "turn",
    "action": "Sets pitch for the selected sound.",
    "short_label": "PITCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_slice",
    "gesture": "turn",
    "action": "Sets tone for the selected sound.",
    "short_label": "SLICE TONE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1196-1205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1196-L1205"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "turn",
    "action": "Changes the selected setting now; HOME requests a settings write when stopped, without a question or panel undo, and unchanged settings skip the write.",
    "short_label": "MENU VALUE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-24",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L24"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "turn",
    "action": "Nothing on this page.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "450-456",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L450-L456"
     }
    ]
   },
   {
    "mode": "menu_color",
    "gesture": "turn",
    "action": "Chooses the display palette, wrapping at the ends.",
    "short_label": "COLOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_style",
    "gesture": "turn",
    "action": "Chooses filled FLAT cards or the LINE layout.",
    "short_label": "STYLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_large",
    "gesture": "turn",
    "action": "Turns larger value cards and labels off or on.",
    "short_label": "LARGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_anim",
    "gesture": "turn",
    "action": "Turns animated value changes off or on.",
    "short_label": "ANIM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_leds",
    "gesture": "turn",
    "action": "Chooses OFF, DIM LO, DIM HI or INV for idle lights.",
    "short_label": "LEDS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_hold",
    "gesture": "turn",
    "action": "Sets the quick-layer hold time to 0.3, 0.4, 0.5 or 0.6 seconds.",
    "short_label": "HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_accel",
    "gesture": "turn",
    "action": "Turns faster value changes during a fast knob turn off or on.",
    "short_label": "KNOB ACCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_latch",
    "gesture": "turn",
    "action": "Turns latched performance effects off or on.",
    "short_label": "FX LATCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_bpmlock",
    "gesture": "turn",
    "action": "Locks ordinary SELECT turns from changing tempo when ON.",
    "short_label": "BPM LOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_eq",
    "gesture": "turn",
    "action": "Chooses FLAT, LOWCUT or BASS+ tone shaping.",
    "short_label": "SPEAKER EQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_usb_level",
    "gesture": "turn",
    "action": "Chooses MASTER-controlled or FIXED USB audio level.",
    "short_label": "USB LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_serial",
    "gesture": "turn",
    "action": "Turns the USB serial console off or on.",
    "short_label": "USB SERIAL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_calibration",
    "gesture": "turn",
    "action": "When prompted for this knob, turn it clockwise to teach its mapping.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "turn_while_holding:button_fx",
    "action": "Sets the buffered effect’s level, or harmonizer feedback while an octave effect is held.",
    "short_label": "FX DEPTH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "356-362",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L356-L362"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes track 4’s level and records that movement when the track is recording.",
    "short_label": "LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "363-366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L363-L366"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "turn_while_holding:button_sel",
    "action": "Selects the chord voicing.",
    "short_label": "VOICING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "48-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L48-L49"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "turn_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "367-383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L367-L383"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "turn",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "190-203",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L190-L203"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "266-269",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L266-L269"
     }
    ]
   }
  ],
  "knob_master": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Sets speaker and headphone volume, and USB audio volume unless USB LEVEL is FIXED.",
    "short_label": "VOLUME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "186-193",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L186-L193"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/fx.c",
      "lines": "435-454",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/fx.c#L435-L454"
     }
    ]
   }
  ],
  "key_f3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "F3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 1 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 1 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master repeat 1/8 effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback; this effect cannot run below about 81 BPM.",
    "short_label": "RPT 1/8",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "105-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L105-L115"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-233",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L233"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Solos track 1 while held.",
    "short_label": "SOLO T1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "release",
    "action": "Ends track 1’s temporary solo when its key is released.",
    "short_label": "SOLO OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to F.",
    "short_label": "ROOT F",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the ANALOG engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "ANALOG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types AB phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE AB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_fs3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "F#3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 1 (KICK) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "KICK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Mutes track 1 while held; with FX LATCH it toggles that temporary mute.",
    "short_label": "HOLD MUTE 1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this temporary track mute unless FX LATCH is enabled.",
    "short_label": "UNMUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Mutes or unmutes track 1 (stays).",
    "short_label": "MUTE T1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to F#.",
    "short_label": "ROOT F#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Moves the text cursor left.",
    "short_label": "CURSOR <",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_g3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "G3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 2 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 2 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master repeat 1/16 effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "RPT 1/16",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Solos track 2 while held.",
    "short_label": "SOLO T2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "release",
    "action": "Ends track 2’s temporary solo when its key is released.",
    "short_label": "SOLO OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to G.",
    "short_label": "ROOT G",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the FM6 engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "FM6",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types CD phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE CD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_gs3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "G#3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 2 (SNARE) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "SNARE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Mutes track 2 while held; with FX LATCH it toggles that temporary mute.",
    "short_label": "HOLD MUTE 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this temporary track mute unless FX LATCH is enabled.",
    "short_label": "UNMUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Mutes or unmutes track 2 (stays).",
    "short_label": "MUTE T2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to G#.",
    "short_label": "ROOT G#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types a space.",
    "short_label": "SPACE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_a3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "A3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 3 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 3 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master repeat 1/32 effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "RPT 1/32",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Solos track 3 while held.",
    "short_label": "SOLO T3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "release",
    "action": "Ends track 3’s temporary solo when its key is released.",
    "short_label": "SOLO OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to A.",
    "short_label": "ROOT A",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the PHASE engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "PHASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types EF phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE EF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_as3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "A#3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 3 (CLAP) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "CLAP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Mutes track 3 while held; with FX LATCH it toggles that temporary mute.",
    "short_label": "HOLD MUTE 3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this temporary track mute unless FX LATCH is enabled.",
    "short_label": "UNMUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Mutes or unmutes track 3 (stays).",
    "short_label": "MUTE T3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to A#.",
    "short_label": "ROOT A#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Moves the text cursor right.",
    "short_label": "CURSOR >",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_b3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "B3",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 4 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 4 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master reverse effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback; this effect cannot run below about 81 BPM.",
    "short_label": "REVERSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "105-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L105-L115"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-233",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L233"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Solos track 4 while held.",
    "short_label": "SOLO T4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "release",
    "action": "Ends track 4’s temporary solo when its key is released.",
    "short_label": "SOLO OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "342-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L342-L352"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to B.",
    "short_label": "ROOT B",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the LOFI engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "LOFI",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types GH phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE GH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_c4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "C4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 5 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 5 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master low-pass filter effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "LPF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Unmutes all tracks.",
    "short_label": "UNMUTE ALL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "324-326",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L324-L326"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to C.",
    "short_label": "ROOT C",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the SAMPLE engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "SAMPLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types IJK phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE IJK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_cs4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "C#4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 4 (C.HAT) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "C.HAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Mutes track 4 while held; with FX LATCH it toggles that temporary mute.",
    "short_label": "HOLD MUTE 4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this temporary track mute unless FX LATCH is enabled.",
    "short_label": "UNMUTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Mutes or unmutes track 4 (stays).",
    "short_label": "MUTE T4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L328"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to C#.",
    "short_label": "ROOT C#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Deletes the character before the cursor (held: repeats).",
    "short_label": "DELETE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_d4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "D4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 6 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 6",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 6 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master high-pass filter effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "HPF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to D.",
    "short_label": "ROOT D",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the VOICE engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "VOICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types LM phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE LM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_ds4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "D#4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 5 (O.HAT) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "O.HAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to D#.",
    "short_label": "ROOT D#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Switches letters and numbers.",
    "short_label": "ABC/123",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_e4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "E4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 7 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 7",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 7 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master tape stop effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "TAPE STOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to E.",
    "short_label": "ROOT E",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the TRIO engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "TRIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types NO phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE NO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_f4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "F4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 8 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 8",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 8 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master freeze effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "FREEZE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Taps the tempo on internal clock, taking effect from the third tap and restarting the tap group after two seconds without a tap.",
    "short_label": "TAP TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "288-312",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L288-L312"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "327-328",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L327-L328"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to F.",
    "short_label": "ROOT F",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the WHEEL engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "WHEEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types PQ phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE PQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_fs4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "F#4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 6 (TOM) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "TOM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to F#.",
    "short_label": "ROOT F#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Moves the text cursor left.",
    "short_label": "CURSOR <",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_g4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "G4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 9 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 9",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 9 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master octave-up harmonizer effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "OCT UP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to G.",
    "short_label": "ROOT G",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the GRAIN engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "GRAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types RS phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE RS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_gs4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "G#4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 7 (RIM) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "RIM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to G#.",
    "short_label": "ROOT G#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types a space.",
    "short_label": "SPACE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_a4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "A4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 10 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 10",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 10 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Holds the master octave-down harmonizer effect; FX LATCH instead toggles it, and repeat or reverse begins at the next sixteenth during playback.",
    "short_label": "OCT DOWN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "231-258",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L231-L258"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-483",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L483"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "release",
    "action": "Ends this performance effect unless FX LATCH is enabled.",
    "short_label": "FX OFF",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L484"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "108-137",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L108-L137"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to A.",
    "short_label": "ROOT A",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the PHYS engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "PHYS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types TU phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE TU",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_as4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "A#4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Selects drum lane 8 (BELL) and plays it and focuses that lane for sound editing and DRUM MIX.",
    "short_label": "BELL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "399-411",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L399-L411"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to A#.",
    "short_label": "ROOT A#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Moves the text cursor right.",
    "short_label": "CURSOR >",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_b4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "B4",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 11 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 11",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 11 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to B.",
    "short_label": "ROOT B",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the NOISE engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "NOISE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types VW phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE VW",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_c5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "C5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 12 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 12",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 12 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to C.",
    "short_label": "ROOT C",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the SLICE engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types XYZ phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE XYZ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_cs5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "C#5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "hold",
    "action": "ACC: while held, the white step keys set or clear accents instead of hits.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to C#.",
    "short_label": "ROOT C#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Deletes the character before the cursor (held: repeats).",
    "short_label": "DELETE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_d5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "D5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 13 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 13",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 13 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to D.",
    "short_label": "ROOT D",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Selects the DRUM engine and its first sound when changing engines, keeping the steps and a sound undo copy.",
    "short_label": "DRUM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/engines.c",
      "lines": "77-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/engines.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "272-285",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L272-L285"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types 123 phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE 123",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_ds5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "D#5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Previous page of 16 steps.",
    "short_label": "PAGE <",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to D#.",
    "short_label": "ROOT D#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Switches letters and numbers.",
    "short_label": "ABC/123",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_e5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "E5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 14 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 14",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 14 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to E.",
    "short_label": "ROOT E",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Asks to reset this track’s sound to its engine’s first preset while keeping the steps; OCT+ applies it in memory with sound undo and quiet-time saving can later keep it.",
    "short_label": "INIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1060-1061",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1060-L1061"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types 456 phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE 456",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_f5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "F5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 15 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 15",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 15 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to F.",
    "short_label": "ROOT F",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types 789 phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE 789",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_fs5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "F#5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, stays silent; SNAP and SEQ round its pitch down into the scale.",
    "short_label": "SILENT(WHT)",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Next page of 16 steps.",
    "short_label": "PAGE >",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "459-464",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L459-L464"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "468-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L468-L476"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to F#.",
    "short_label": "ROOT F#",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Moves the text cursor left.",
    "short_label": "CURSOR <",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "hold",
    "action": "After 0.45 seconds, repeats this cursor move or backspace every 0.09 seconds.",
    "short_label": "REPEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "25-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L25-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "255-264",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L255-L264"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "key_g5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays the selected track’s note or chord at velocity 100 and sends it on that track’s MIDI channel; playing a drum also selects its editing lane.",
    "short_label": "G5",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "397-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L397-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "447-489",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L447-L489"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releases the notes started by this key on their original track, unless another held key still owns the same notes.",
    "short_label": "RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "415-425",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L415-L425"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "480-488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L480-L488"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "press",
    "action": "With WHITE key mode, plays a scale note with C4 as the root and successive white keys following the scale on every page.",
    "short_label": "SCALE NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "77-111",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L77-L111"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "press",
    "action": "On STEP, enters or replaces the cursor note or chord while stopped or during unarmed playback, without needing REC armed; armed playback records live instead, and later automatic saving can keep the change.",
    "short_label": "STEP NOTE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "735-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L735-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "release",
    "action": "Releasing the last note-entry key advances the cursor while stopped or during unarmed playback, but not during armed live recording or song-chain playback.",
    "short_label": "NEXT STEP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "769-770",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L769-L770"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1155-1164",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1155-L1164"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press",
    "action": "Toggles the selected drum lane at step 16 of the displayed 16-step page and selects that step; holding C#5 toggles its accent instead, and later quiet-time saving can keep the change.",
    "short_label": "STEP 16",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "442-465",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L442-L465"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "press_while_holding:key_cs5",
    "action": "Toggles the selected lane’s accent at step 16 of this page, adding a hit if needed.",
    "short_label": "ACCENT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "449-458",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L449-L458"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "349-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L349-L365"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "press_while_holding:button_fx",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "389-394",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L389-L394"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "press_while_holding:button_glo",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "318-329",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L318-L329"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "press_while_holding:button_sel",
    "action": "Sets the root to G.",
    "short_label": "ROOT G",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "press_while_holding:button_edit",
    "action": "Does nothing here.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L339"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "press",
    "action": "Types 0-. phone-style (tap again within 0.8 s for the next character); in 123 mode one digit or symbol.",
    "short_label": "TYPE 0-.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "28-31",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L28-L31"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "64-72",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L64-L72"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "138-188",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L138-L188"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "press",
    "action": "Plays its slice and selects that slice’s start marker for editing.",
    "short_label": "PICK SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "200-209",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L200-L209"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Cancels teaching and restores the previous panel mapping; power-on calibration then requests a settings save without asking, while MENU calibration waits until the menu is closed.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1214",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1214"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1293-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1293-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   }
  ],
  "screen": [
   {
    "mode": "home",
    "gesture": "shows",
    "action": "Four sound controls for the selected track above the output waveform.",
    "short_label": "HOME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1093-1099",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1093-L1099"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "429-435",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L429-L435"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1438-1441",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1438-L1441"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "shows",
    "action": "Attack, decay, sustain and release for the selected track.",
    "short_label": "ENV",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "346",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L346"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1443-1445",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1443-L1445"
     }
    ]
   },
   {
    "mode": "env_dest",
    "gesture": "shows",
    "action": "Envelope amounts for filter, pitch and shape.",
    "short_label": "ENV DEST",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "347",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L347"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "shows",
    "action": "LFO rate, shape, starting phase and fade time.",
    "short_label": "LFO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L348"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1446-1448",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1446-L1448"
     }
    ]
   },
   {
    "mode": "lfo_dest",
    "gesture": "shows",
    "action": "LFO amounts for pitch, filter, shape and volume.",
    "short_label": "LFO DEST",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "349",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L349"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "mod",
    "gesture": "shows",
    "action": "Four modulation routes, with the selected route's source, destination and amount.",
    "short_label": "MOD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "350",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L350"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "30-33",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L30-L33"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "603-605",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L603-L605"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "778-789",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L778-L789"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1473-1476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1473-L1476"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "shows",
    "action": "Distortion and the chorus, delay and reverb sends; on DRUM these edits affect the selected drum lane.",
    "short_label": "FX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "351",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L351"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "5-8",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L5-L8"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1467-1469",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1467-L1469"
     }
    ]
   },
   {
    "mode": "slicer",
    "gesture": "shows",
    "action": "Rhythmic gating or stuttering, with a pattern, rate and depth.",
    "short_label": "SLICER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L352"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1470-1472",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1470-L1472"
     }
    ]
   },
   {
    "mode": "dly",
    "gesture": "shows",
    "action": "Shared delay timing, feedback, tone and mix.",
    "short_label": "DLY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "353",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L353"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "reverb",
    "gesture": "shows",
    "action": "Shared reverb model, size and damping.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "354",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L354"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "chorus",
    "gesture": "shows",
    "action": "Shared chorus rate and depth.",
    "short_label": "CHORUS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "355",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L355"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "scl",
    "gesture": "shows",
    "action": "The selected track's root, scale, keyboard mapping and transposition.",
    "short_label": "SCL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "356",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L356"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "7-12",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L7-L12"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1460-1462",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1460-L1462"
     }
    ]
   },
   {
    "mode": "chord",
    "gesture": "shows",
    "action": "One-key chord type and voicing.",
    "short_label": "CHORD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "357",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L357"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1463-1466",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1463-L1466"
     }
    ]
   },
   {
    "mode": "edit1",
    "gesture": "shows",
    "action": "The selected engine's first four sound controls.",
    "short_label": "EDIT 1",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "edit2",
    "gesture": "shows",
    "action": "The selected engine's last four sound controls.",
    "short_label": "EDIT 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "shows",
    "action": "User-sample slice markers and the actions to split or join slices.",
    "short_label": "SLICES",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L360"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "115-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L115-L153"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "155-199",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L155-L199"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "758-777",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L758-L777"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1503-1508",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1503-L1508"
     }
    ]
   },
   {
    "mode": "voice",
    "gesture": "shows",
    "action": "Voice mode, glide time, glide behavior and note priority.",
    "short_label": "VOICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L366"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "voice2",
    "gesture": "shows",
    "action": "Voice allocation, unison detuning, pan and mute; DRUM pan affects the focused lane.",
    "short_label": "VOICE 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "global",
    "gesture": "shows",
    "action": "Shared tempo, swing, clock input and tuning.",
    "short_label": "GLOBAL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "368",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L368"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "system",
    "gesture": "shows",
    "action": "USB connection state, an unused sync field, MIDI routing and CPU usage.",
    "short_label": "SYSTEM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "369",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L369"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "127-130",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L127-L130"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "846-859",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L846-L859"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "shows",
    "action": "Factory sounds, their engine, favourite status and the ALL or FAV list.",
    "short_label": "PRESETS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "370",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L370"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "567-579",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L567-L579"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "964-970",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L964-L970"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "726-738",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L726-L738"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1477-1480",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1477-L1480"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "shows",
    "action": "User sound slot, load, erase and save actions.",
    "short_label": "USER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "371",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L371"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "670-683",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L670-L683"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "749-757",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L749-L757"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1485-1488",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1485-L1488"
     }
    ]
   },
   {
    "mode": "project",
    "gesture": "shows",
    "action": "The original A–D project slots with load and save actions, with D shared by session recovery.",
    "short_label": "PROJECT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "372",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L372"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "685-699",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L685-L699"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "911-913",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L911-L913"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1481-1484",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1481-L1484"
     }
    ]
   },
   {
    "mode": "tools",
    "gesture": "shows",
    "action": "Actions for the selected track's pattern and sound, the selected song row and the song.",
    "short_label": "TOOLS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "373",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L373"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "640-648",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L640-L648"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "705-710",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L705-L710"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1499-1502",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1499-L1502"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "shows",
    "action": "Arpeggiator mode, timing, octave range and gate.",
    "short_label": "ARP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "374",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L374"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "arp2",
    "gesture": "shows",
    "action": "Arpeggiator swing, probability, hold and note ordering.",
    "short_label": "ARP 2",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "375",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L375"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "step_roll",
    "gesture": "shows",
    "action": "Note cursor, pitch, note/tie/rest and accent/slide flags above the piano roll.",
    "short_label": "STEP ROLL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "468-501",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L468-L501"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "803-836",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L803-L836"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1452-1459",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1452-L1459"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "shows",
    "action": "Step cursor, selected drum lane, its hit and its accent above the drum grid.",
    "short_label": "STEP GRID",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "376",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L376"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "425-438",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L425-L438"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "790-802",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L790-L802"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1452-1459",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1452-L1459"
     }
    ]
   },
   {
    "mode": "pattern",
    "gesture": "shows",
    "action": "Selected track's pattern length, division, swing and gate.",
    "short_label": "PATTERN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "377",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L377"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1449-1451",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1449-L1451"
     }
    ]
   },
   {
    "mode": "phrases",
    "gesture": "shows",
    "action": "Factory phrases and patterns saved with user sounds, with a load action.",
    "short_label": "PHRASES",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "378",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L378"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "588-601",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L588-L601"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "655-662",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L655-L662"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "675-713",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L675-L713"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "739-748",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L739-L748"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1495-1498",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1495-L1498"
     }
    ]
   },
   {
    "mode": "mixer",
    "gesture": "shows",
    "action": "Level, pan, reverb send and mute for the selected whole track.",
    "short_label": "MIXER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "379",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L379"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "303-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L303-L331"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "412-427",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L412-L427"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "711-725",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L711-L725"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "song",
    "gesture": "shows",
    "action": "Song rows select a project slot and repeat count.",
    "short_label": "SONG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "380",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L380"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "534-554",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L534-L554"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "669-682",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L669-L682"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1491-1494",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1491-L1494"
     }
    ]
   },
   {
    "mode": "chance",
    "gesture": "shows",
    "action": "The cursor step's probability and ratchet count.",
    "short_label": "CHANCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "381",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L381"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "516-527",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L516-L527"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "683-696",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L683-L696"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1452-1459",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1452-L1459"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "shows",
    "action": "Automation playback, an event count and the clear action.",
    "short_label": "AUTOMATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "382",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L382"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "528-533",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L528-L533"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "635-639",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L635-L639"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "697-704",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L697-L704"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "setlist",
    "gesture": "shows",
    "action": "Twelve saved-song choices, their order and project load/save actions.",
    "short_label": "SETLIST",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L383"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "510-515",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L510-L515"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "627-634",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L634"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "661-668",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L661-L668"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1489-1490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1489-L1490"
     }
    ]
   },
   {
    "mode": "drum_mix",
    "gesture": "shows",
    "action": "Level, pan, chorus and reverb send for the focused drum lane.",
    "short_label": "DRUM MIX",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "384",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L384"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "112",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L112"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "404-407",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L404-L407"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_graph.c",
      "lines": "1510-1518",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_graph.c#L1510-L1518"
     }
    ]
   },
   {
    "mode": "home_analog",
    "gesture": "shows",
    "action": "ANALOG main sound controls; the four cards name cutoff, resonance, attack, release.",
    "short_label": "HOME ANALOG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_analog",
    "gesture": "shows",
    "action": "ANALOG first sound page; the four cards name wave, detune, osc mix, noise.",
    "short_label": "OSC ANALOG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_analog",
    "gesture": "shows",
    "action": "ANALOG second sound page; the four cards name cutoff, resonance, drive, key track.",
    "short_label": "FLT ANALOG",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "117-136",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L117-L136"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phase",
    "gesture": "shows",
    "action": "PHASE main sound controls; the four cards name phase shape, env depth, detune, release.",
    "short_label": "HOME PHASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_phase",
    "gesture": "shows",
    "action": "PHASE first sound page; the four cards name wave, wave 2, phase shape, env depth.",
    "short_label": "PHS PHASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_phase",
    "gesture": "shows",
    "action": "PHASE second sound page; the four cards name detune, line, sub.",
    "short_label": "LINE PHASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phase.c",
      "lines": "210-228",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phase.c#L210-L228"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_lofi",
    "gesture": "shows",
    "action": "LOFI main sound controls; the four cards name wave, duty, crush, release.",
    "short_label": "HOME LOFI",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit1_lofi",
    "gesture": "shows",
    "action": "LOFI first sound page; the four cards name chip, wave, duty, crush.",
    "short_label": "CHIP LOFI",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "edit2_lofi",
    "gesture": "shows",
    "action": "LOFI second sound page; the four cards name sweep, vibrato, arp, tone.",
    "short_label": "MOTN LOFI",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "244-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L244-L265"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_lofi.c",
      "lines": "44-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_lofi.c#L44-L57"
     }
    ]
   },
   {
    "mode": "home_sample",
    "gesture": "shows",
    "action": "SAMPLE main sound controls; the four cards name sample set, cutoff, attack, release.",
    "short_label": "HOME SAMPLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_sample",
    "gesture": "shows",
    "action": "SAMPLE first sound page; the four cards name sample set, tune, bit depth, loop.",
    "short_label": "SET SAMPLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_sample",
    "gesture": "shows",
    "action": "SAMPLE second sound page; the four cards name cutoff, drive.",
    "short_label": "TONE SAMPLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_sample.c",
      "lines": "236-255",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L236-L255"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_voice",
    "gesture": "shows",
    "action": "VOICE main sound controls; the four cards name vowel, buzz, breath, talk.",
    "short_label": "HOME VOICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_voice",
    "gesture": "shows",
    "action": "VOICE first sound page; the four cards name vowel, vowel 2, talk, shift.",
    "short_label": "VOWL VOICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_voice",
    "gesture": "shows",
    "action": "VOICE second sound page; the four cards name buzz, breath, resonance, random.",
    "short_label": "TONE VOICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "251-270",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L251-L270"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_trio",
    "gesture": "shows",
    "action": "TRIO main sound controls; the four cards name cutoff, resonance, pulse width, interval 2.",
    "short_label": "HOME TRIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_trio",
    "gesture": "shows",
    "action": "TRIO first sound page; the four cards name wave, interval 2, interval 3, detune.",
    "short_label": "OSC TRIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_trio",
    "gesture": "shows",
    "action": "TRIO second sound page; the four cards name mode, cutoff, resonance, pulse width.",
    "short_label": "TONE TRIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_trio.c",
      "lines": "383-401",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_trio.c#L383-L401"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_wheel",
    "gesture": "shows",
    "action": "WHEEL main sound controls; the four cards name register, percussion, drive, rotor.",
    "short_label": "HOME WHEEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_wheel",
    "gesture": "shows",
    "action": "WHEEL first sound page; the four cards name register, sub, body, top.",
    "short_label": "BARS WHEEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_wheel",
    "gesture": "shows",
    "action": "WHEEL second sound page; the four cards name percussion, key click, drive, rotor.",
    "short_label": "TONE WHEEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_wheel.c",
      "lines": "306-325",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_wheel.c#L306-L325"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_grain",
    "gesture": "shows",
    "action": "GRAIN main sound controls; the four cards name position, grain size, density, spread.",
    "short_label": "HOME GRAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_grain",
    "gesture": "shows",
    "action": "GRAIN first sound page; the four cards name source, position, grain size, density.",
    "short_label": "GRAN GRAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_grain",
    "gesture": "shows",
    "action": "GRAIN second sound page; the four cards name pitch, spread, random, tone.",
    "short_label": "SPRY GRAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_grain.c",
      "lines": "470-490",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_grain.c#L470-L490"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_phys",
    "gesture": "shows",
    "action": "PHYS main sound controls; the four cards name structure, brightness, damp, position.",
    "short_label": "HOME PHYS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit1_phys",
    "gesture": "shows",
    "action": "PHYS first sound page; the four cards name model, structure, brightness, damp.",
    "short_label": "BODY PHYS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "edit2_phys",
    "gesture": "shows",
    "action": "PHYS second sound page; the four cards name position, accent, bow, exciter.",
    "short_label": "EXCT PHYS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "255-275",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L255-L275"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_phys.c",
      "lines": "61-76",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_phys.c#L61-L76"
     }
    ]
   },
   {
    "mode": "home_drum",
    "gesture": "shows",
    "action": "DRUM main sound controls; the four cards name tune, tone, decay, snap.",
    "short_label": "HOME DRUM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_drum",
    "gesture": "shows",
    "action": "DRUM first sound page; the four cards name kit, tune, tone, decay.",
    "short_label": "KIT DRUM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_drum",
    "gesture": "shows",
    "action": "DRUM second sound page; the four cards name snap, accent, kick type, drive.",
    "short_label": "HIT DRUM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "339-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L339-L361"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_noise",
    "gesture": "shows",
    "action": "NOISE main sound controls; the four cards name frequency, resonance, colour, release.",
    "short_label": "HOME NOISE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit1_noise",
    "gesture": "shows",
    "action": "NOISE first sound page; the four cards name mode, colour, frequency, resonance.",
    "short_label": "SRC NOISE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "edit2_noise",
    "gesture": "shows",
    "action": "NOISE second sound page; the four cards name key track, density, drift, crush.",
    "short_label": "MOVE NOISE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "280-300",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L280-L300"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "20-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L20-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_noise.c",
      "lines": "45-52",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_noise.c#L45-L52"
     }
    ]
   },
   {
    "mode": "home_fm6",
    "gesture": "shows",
    "action": "FM6 main sound controls; the four cards name mod level, mod ratio, mod envelope, patch slot.",
    "short_label": "HOME FM6",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_fm6",
    "gesture": "shows",
    "action": "FM6 first sound page; the four cards name algorithm, feedback, mod level, mod ratio.",
    "short_label": "OPS FM6",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_fm6",
    "gesture": "shows",
    "action": "FM6 second sound page; the four cards name mod envelope, velocity mod, detune, patch slot.",
    "short_label": "PATCH FM6",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "411-433",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L411-L433"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "home_slice",
    "gesture": "shows",
    "action": "SLICE main sound controls; the four cards name source, division, pitch, decay.",
    "short_label": "HOME SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     }
    ]
   },
   {
    "mode": "edit1_slice",
    "gesture": "shows",
    "action": "SLICE first sound page; the four cards name source, division, start slice, pitch.",
    "short_label": "SLCE SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "edit2_slice",
    "gesture": "shows",
    "action": "SLICE second sound page; the four cards name play mode, reverse, decay, tone.",
    "short_label": "PLAY SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_slice.c",
      "lines": "619-640",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_slice.c#L619-L640"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "148-155",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L148-L155"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "650-659",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L650-L659"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "839-862",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L839-L862"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/params.c",
      "lines": "358-359",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/params.c#L358-L359"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "607-618",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L607-L618"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "shows",
    "action": "Shows the selected settings tab, its rows and the current value.",
    "short_label": "MENU",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-24",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L24"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "351-412",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L351-L412"
     }
    ]
   },
   {
    "mode": "menu_about",
    "gesture": "shows",
    "action": "Shows the WaveLoop version, credits, licences, source links and a QR link to the editor and guide.",
    "short_label": "ABOUT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "10-27",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L10-L27"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "36-77",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L36-L77"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "374-392",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L374-L392"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "119-151",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L119-L151"
     }
    ]
   },
   {
    "mode": "menu_color",
    "gesture": "shows",
    "action": "Palette colors preview immediately.",
    "short_label": "COLOR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_style",
    "gesture": "shows",
    "action": "The chosen layout appears immediately.",
    "short_label": "STYLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_large",
    "gesture": "shows",
    "action": "Value pages grow taller cards; lists keep their layout with bigger labels.",
    "short_label": "LARGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_anim",
    "gesture": "shows",
    "action": "OFF makes value and roll changes appear immediately.",
    "short_label": "ANIM",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_leds",
    "gesture": "shows",
    "action": "INV swaps the light and dark states of active and idle controls.",
    "short_label": "LEDS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_hold",
    "gesture": "shows",
    "action": "The hold threshold applies to the quick-layer buttons.",
    "short_label": "HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_accel",
    "gesture": "shows",
    "action": "Wide numeric values can move two to four steps per click when ON.",
    "short_label": "KNOB ACCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_latch",
    "gesture": "shows",
    "action": "ON leaves selected FX effects and macros active after release.",
    "short_label": "FX LATCH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_bpmlock",
    "gesture": "shows",
    "action": "Tempo remains adjustable with GLO held or from GLOBAL.",
    "short_label": "BPM LOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_eq",
    "gesture": "shows",
    "action": "This equalizer affects headphones and USB audio as well as the speaker.",
    "short_label": "SPEAKER EQ",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_usb_level",
    "gesture": "shows",
    "action": "FIXED sends full USB audio level while MASTER still controls the speaker and headphones.",
    "short_label": "USB LEVEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_serial",
    "gesture": "shows",
    "action": "Changing this reconnects the USB device when the menu closes; USB MIDI and audio reconnect too.",
    "short_label": "USB SERIAL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "8-61",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L8-L61"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/menu_items.c",
      "lines": "127-162",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/menu_items.c#L127-L162"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-481",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L481"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "menu_calibration",
    "gesture": "shows",
    "action": "Names the button to press or knob to turn; closing the menu later queues a changed mapping to save when stopped.",
    "short_label": "CALIBRATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1210-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1210-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "1053-1082",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1053-L1082"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "shows",
    "action": "White keys hold performance effects, the first four black keys mute tracks and KNOB 1–4 are macros.",
    "short_label": "FX LAYER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "40-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L40-L49"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "shows",
    "action": "Track mutes, temporary solos, unmute all, tap tempo and four track levels.",
    "short_label": "GLO LAYER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "315-352",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L315-L352"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "shows",
    "action": "Keys choose a root and knobs choose root, scale, chord and voicing.",
    "short_label": "SEL LAYER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "330-331",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L330-L331"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "shows",
    "action": "White keys select an engine or ask to initialize its sound; knobs browse engines and sounds or mark favourites.",
    "short_label": "EDIT LAYER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "332-338",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L332-L338"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "shows",
    "action": "Keys and two knobs edit a twelve-character name; OCT+ writes while stopped and OCT- cancels.",
    "short_label": "NAME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "76-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L76-L115"
     }
    ]
   },
   {
    "mode": "dialog",
    "gesture": "shows",
    "action": "OCT+ accepts and OCT- cancels, with save confirmations opening NAME before the write.",
    "short_label": "CONFIRMATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1033-1083",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1083"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "A MIDI parameter change briefly shows its track, parameter and value for 1.2 seconds, while menus, naming and confirmation screens take priority.",
    "short_label": "MIDI POPUP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "999-1038",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L999-L1038"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "1057-1077",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L1057-L1077"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "A thin line at the screen’s bottom shows the selected sound’s position among the engine’s factory and saved user sounds.",
    "short_label": "BANK LINE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_draw.c",
      "lines": "1041-1050",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_draw.c#L1041-L1050"
     }
    ]
   },
   {
    "mode": "power_on",
    "gesture": "shows",
    "action": "Restores recovery and its view, then a recovery without a saved song destination selects the first unreadable setlist song, normally song 1, which is written after the quiet pause without asking even when nothing is edited.",
    "short_label": "POWER-ON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "155-171",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L155-L171"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "23-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L23-L55"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-129",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L129"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "57-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L57-L64"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "shows",
    "action": "Names the button or encoder to teach, with cancellation restoring the old mapping and a settings-save request after power-on calibration returns or when MENU itself closes after calibration.",
    "short_label": "CALIBRATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "1238-1297",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1238-L1297"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "165-167",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L165-L167"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "421-426",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L421-L426"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_menu.c",
      "lines": "470-473",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_menu.c#L470-L473"
     }
    ]
   },
   {
    "mode": "update",
    "gesture": "shows",
    "action": "Shows a countdown after two seconds, then stops audio and enters update mode; releasing early cancels.",
    "short_label": "UPDATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "195-220",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L195-L220"
     }
    ]
   },
   {
    "mode": "crash",
    "gesture": "shows",
    "action": "A crash shows diagnostic values and restarts after four seconds; two failed starts enter UBOOT.",
    "short_label": "CRASH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "74-94",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L74-L94"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/main.c",
      "lines": "277-288",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/main.c#L277-L288"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "After five seconds of quiet audio and unchanged state while stopped with notes released, replaces the active saved song, changed order and recovery without asking; loading, saving or tagged restoration sets that song destination, and a readable ordinary D blocks all these writes and queued loads.",
    "short_label": "AUTOSAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "80-129",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L80-L129"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "56-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L56-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "938-949",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor_backup.c",
      "lines": "126-130",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L126-L130"
     }
    ]
   },
   {
    "mode": "user",
    "gesture": "shows",
    "action": "A user sound stores only the first sixteen steps with one note per melodic step or the drum hit grid, without recorded automation; use a song save for the complete sequence.",
    "short_label": "SOUND SCOPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/upreset.c",
      "lines": "144-151",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/upreset.c#L144-L151"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/upreset.c",
      "lines": "334-366",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/upreset.c#L334-L366"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/upreset.c",
      "lines": "451-468",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/upreset.c#L451-L468"
     }
    ]
   },
   {
    "mode": "automation",
    "gesture": "shows",
    "action": "All tracks share room for 64 recorded parameter events, and AUTOMATION FULL means a new event was refused or an undo could not fit.",
    "short_label": "EVENT LIMIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/core.h",
      "lines": "245-248",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/core.h#L245-L248"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/motion.c",
      "lines": "126-144",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/motion.c#L126-L144"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "560-565",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L560-L565"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "888-903",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L888-L903"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "shows",
    "action": "Hand-set markers save after leaving SLICES while stopped without asking or undo; a sample using their storage space reports TOO LONG TO SAVE and leaves them only in memory.",
    "short_label": "MARKER SAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/slice_store.c",
      "lines": "71-105",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/slice_store.c#L71-L105"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "AUTOSAVE SLOT4 USED means a readable ordinary project D has stopped automatic song, order and recovery writes and queued song loads.",
    "short_label": "SLOT4 BLOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "92-96",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L92-L96"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "AUTOSAVED means the recovery copy was written; the active-song and order stages precede it, while unchanged recovery produces no success message.",
    "short_label": "AUTOSAVED",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L125"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "AUTOSAVE ERROR means writing recovery failed and it will retry after another five-second wait, so recent changes are not protected by that failed write.",
    "short_label": "AUTO ERROR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "117-120",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L117-L120"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "SETLIST SAVE ERROR means the changed song order was not stored and will be retried after another quiet wait.",
    "short_label": "ORDER ERROR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "108-110",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L108-L110"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "WAIT FOR SILENCE means a stopped-transport song load is queued until the quiet and unchanged-state checks pass and the previous song has saved.",
    "short_label": "WAIT SILENCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "49-54",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L49-L54"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "SESSION RESTORED means recovery music and its saved view were loaded with playback stopped; without a saved song destination it can also pick the first unreadable song for a later automatic write.",
    "short_label": "RESTORED",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "23-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L23-L55"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "AUTOSAVE FORMAT ERROR means the current session could not be packed, so that automatic save was refused.",
    "short_label": "FORMAT ERROR",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "59-66",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L59-L66"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "MIDI IN -> Tn identifies a track receiving notes while another track is displayed, when no other message has priority.",
    "short_label": "MIDI TRACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "893-901",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L893-L901"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "shows",
    "action": "The DRUM bank includes 808, CR78 and eight YB choices named STANDARD, ELECTRO, POWER, BRUSH, ORCH, SYNTH, LATIN and LOFI.",
    "short_label": "DRUM KITS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "325-336",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L325-L336"
     }
    ]
   },
   {
    "mode": "presets",
    "gesture": "shows",
    "action": "Expanded synth banks reach 32 sounds, while VOICE browsing offers 26 after six retired bass positions become hidden aliases with their old stored numbers retained.",
    "short_label": "SOUND BANKS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_analog.c",
      "lines": "81-115",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_analog.c#L81-L115"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_formant.c",
      "lines": "205-248",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_formant.c#L205-L248"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "743-765",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L743-L765"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "short_label": "SAVED",
    "evidence": "read-in-source",
    "action": "SAVED confirms a song was written to flash, including an automatic active-song write after the quiet wait, but does not confirm that setlist order or recovery has saved, and can appear alone when recovery is unchanged.",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "771-799",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L771-L799"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "57-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L57-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "98-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L98-L125"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "short_label": "SAVE ERROR",
    "evidence": "read-in-source",
    "action": "SAVE ERROR means a song or user-sound save or rename failed, or hand-set slice markers failed to save after leaving SLICES while stopped, so those changes are not confirmed stored; a failed automatic song save also defers order and recovery writes until a later quiet retry.",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "771-799",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L771-L799"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "830-847",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L830-L847"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "57-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L57-L64"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "98-125",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L98-L125"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/upreset.c",
      "lines": "499-526",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/upreset.c#L499-L526"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/slice_store.c",
      "lines": "71-105",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/slice_store.c#L71-L105"
     }
    ]
   }
  ],
  "jack_midi_in": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Incoming notes play tracks 1–4 on channels 1–4 with ROUT CH1-4, or the displayed track on any channel with ROUT SEL.",
    "short_label": "MIDI NOTES",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "689-692",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L689-L692"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "519-525",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L519-L525"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Playing a drum from MIDI selects its drum lane and displays its track unless a menu, name or confirmation screen is open.",
    "short_label": "DRUM FOCUS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "204-216",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L204-L216"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "108-118",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L108-L118"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1146-1154",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1146-L1154"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "The MiniLab main encoder wraps through factory sounds and saved user sounds for the addressed engine, replacing unsaved sound edits while keeping the sequence and mix.",
    "short_label": "BANK BROWSE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "737-740",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L737-L740"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1007-1050",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1007-L1050"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "22-30",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L22-L30"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Arturia Shift plus the MiniLab main encoder wraps through engines and loads the first factory sound for the addressed track.",
    "short_label": "ENGINES",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "396-398",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L396-L398"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1051-1072",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1051-L1072"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "A MiniLab encoder click cycles the displayed track through 1–4 without changing its keyboard MIDI channel.",
    "short_label": "TRACK CLICK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "391-395",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L391-L395"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1155-1159",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1155-L1159"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "MiniLab top knob 1 sweeps the whole mix between low-pass and high-pass filtering, with the centre bypassing the filter.",
    "short_label": "DJ FILTER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "378-383",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L378-L383"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "MiniLab top knobs 2–4 change EDIT parameters 2–4 for the addressed synth track.",
    "short_label": "TOP KNOBS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "336-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L336-L339"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "355-360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L355-L360"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "MiniLab bottom knobs 5–7 change HOME controls 1–3 for the addressed track.",
    "short_label": "HOME KNOBS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "338-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L338-L339"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "MiniLab bottom knob 8 changes the addressed synth track’s LFO speed.",
    "short_label": "VIBRATO RATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-348",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L348"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "355-360",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L355-L360"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "MiniLab faders 1–4 change whole-track volumes 1–4 with extra travel near the top and silence at the bottom, regardless of ROUT.",
    "short_label": "TRACK FADERS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "84-89",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L84-L89"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "341-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L341-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On DRUM, MiniLab top knobs 2–4 change the selected drum’s pan, reverb and delay, while bottom knobs 5–8 change its tuning, tone, decay and volume.",
    "short_label": "DRUM KNOBS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "336-367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L336-L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_drum.c",
      "lines": "357",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_drum.c#L357"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Additional MIDI controls change the selected drum’s snap, accent, kick variant, drive, distortion, chorus and sends, while kit selection and track volume stay shared.",
    "short_label": "DRUM CCS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "336-367",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L336-L367"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "4-8",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L4-L8"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/drum_control.c",
      "lines": "44-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/drum_control.c#L44-L55"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "The MiniLab mod strip adds vibrato up to half a semitone using the track’s LFO unless an active modulation-wheel assignment replaces it, and DRUM ignores it.",
    "short_label": "MOD STRIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/mod.c",
      "lines": "211-222",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/mod.c#L211-L222"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/mod.c",
      "lines": "234-244",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/mod.c#L234-L244"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "The MiniLab pitch strip bends the addressed synth track, while DRUM ignores pitch bend.",
    "short_label": "PITCH STRIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "113-118",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L113-L118"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "523-525",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L523-L525"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "MIDI sustain holds released synth notes until the pedal rises, while drum hits ignore sustain.",
    "short_label": "SUSTAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "222-236",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L222-L236"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "426-430",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L426-L430"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Hold MiniLab A-bank pad 1 to use its second control layer.",
    "short_label": "ALT PAD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "482-487",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L482-L487"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "303-335",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L303-L335"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "MiniLab pads 2 and 3 repeat the mix at sixteenth and thirty-second rates, pad 4 reverses it, pad 5 slows it to a stop, pad 6 freezes it, and pads 7 and 8 add the upper or lower octave while held.",
    "short_label": "PAD EFFECTS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "482-509",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L482-L509"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Releasing a MiniLab effect pad ends its held effect even with FX LATCH enabled or after releasing Alt first.",
    "short_label": "PAD RELEASE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "492-509",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L492-L509"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "53-57",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L53-L57"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/perform.c",
      "lines": "230-234",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/perform.c#L230-L234"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "With A-bank pad 1 held, MiniLab top knobs 1–3 change the synth track’s LFO rate, filter or FM6 brightness amount, and waveform.",
    "short_label": "ALT LFO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "303-321",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L303-L321"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/eng_fm6.c",
      "lines": "349-353",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_fm6.c#L349-L353"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/voice.c",
      "lines": "590-593",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/voice.c#L590-L593"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "With A-bank pad 1 held, MiniLab bottom knobs 5–8 change synth attack, decay, sustain and release, or FM6 algorithm, feedback, modulator ratio and envelope time.",
    "short_label": "ALT ENVELOPE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "315-321",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L315-L321"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "With A-bank pad 1 held, MiniLab faders 1–4 set each track’s shared delay and reverb amounts together.",
    "short_label": "ALT SENDS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "323-333",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L323-L333"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "With A-bank pad 1 held, MiniLab pad 8 taps the internal tempo from three or more presses, using up to four taps and resetting after a gap longer than two seconds.",
    "short_label": "ALT TAP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "488-500",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L488-L500"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "289-309",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L289-L309"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "With A-bank pad 1 held, MiniLab top knob 4, pads 2–7 and DRUM’s parameter knobs have no assigned job.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "303-321",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L303-L321"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "488-500",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L488-L500"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "MiniLab B-bank pads 1–2 request the previous or next saved setlist song only with ROUT SEL, because this release ignores their channel-16 messages with ROUT CH1-4.",
    "short_label": "SONG PADS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "385-389",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L385-L389"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "519-529",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L519-L529"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui.c",
      "lines": "1129-1133",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui.c#L1129-L1133"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "MiniLab B-bank pad 5 stops the sequencer and song chain on any MIDI channel.",
    "short_label": "REMOTE STOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "476-478",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L476-L478"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "360-361",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L360-L361"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "MiniLab B-bank pad 6 starts playback on any MIDI channel, or the configured song chain when SONG is open.",
    "short_label": "REMOTE PLAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "476-478",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L476-L478"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "362-368",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L362-L368"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "MiniLab B-bank pad 7 toggles recording for the track displayed when pressed and starts playback if stopped, except during menus, naming, confirmation or a song chain.",
    "short_label": "REMOTE REC",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "40-49",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L40-L49"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "369-375",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L369-L375"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "MiniLab B-bank pad 8 taps internal tempo from three or more presses on any MIDI channel.",
    "short_label": "REMOTE TAP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "476-478",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L476-L478"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "377",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L377"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "289-309",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L289-L309"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Channel-16 All Sound Off, Reset All Controllers or All Notes Off clears held MiniLab pads and their Alt state.",
    "short_label": "PAD PANIC",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "511-516",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L511-L516"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC20–27 address all eight EDIT values and CC28–31 address the four HOME values, following the channel-to-track routing.",
    "short_label": "SYNTH CCS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "335-339",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L335-L339"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "519-529",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L519-L529"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC10 changes pan for the track chosen by MIDI routing.",
    "short_label": "CC10",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC70 changes sustain level for the track chosen by MIDI routing.",
    "short_label": "CC70",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC72 changes release for the track chosen by MIDI routing.",
    "short_label": "CC72",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC73 changes attack for the track chosen by MIDI routing.",
    "short_label": "CC73",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC75 changes decay for the track chosen by MIDI routing.",
    "short_label": "CC75",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC76 changes LFO speed for the track chosen by MIDI routing.",
    "short_label": "CC76",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC90 changes distortion for the track chosen by MIDI routing.",
    "short_label": "CC90",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC91 changes reverb send for the track chosen by MIDI routing.",
    "short_label": "CC91",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC93 changes chorus send for the track chosen by MIDI routing.",
    "short_label": "CC93",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn",
    "action": "On synth tracks, MIDI CC94 changes delay send for the track chosen by MIDI routing.",
    "short_label": "CC94",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "340-365",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L340-L365"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "With clock set to USB or TRS, timing follows MIDI Clock from that selected input, Start restarts at the beginning, Continue resumes the stored position and Stop ends playback.",
    "short_label": "MIDI CLOCK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "775-789",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L775-L789"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_clock.c",
      "lines": "11-30",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_clock.c#L11-L30"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_clock.c",
      "lines": "33-60",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_clock.c#L33-L60"
     }
    ]
   }
  ],
  "jack_usb_c": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "USB accepts the same note and controller messages as MIDI IN and sends the panel keyboard as MIDI.",
    "short_label": "USB MIDI",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/usb.c",
      "lines": "4-7",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/usb.c#L4-L7"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/seq.c",
      "lines": "689-692",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/seq.c#L689-L692"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/midi_control.c",
      "lines": "519-531",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L519-L531"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "USB sends the master output to a computer as 44.1 kHz stereo audio, with its level following the USB LEVEL setting.",
    "short_label": "USB AUDIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/felucca.c",
      "lines": "19-26",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/felucca.c#L19-L26"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/usb.c",
      "lines": "15-18",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/usb.c#L15-L18"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "925-928",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L925-L928"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/audio.c",
      "lines": "29-38",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/audio.c#L29-L38"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "The WaveLoop editor reads the connected unit for a full-backup file containing current music, saved songs and recovery, setlist, user sounds, companion patches, settings and both samples, but excluding hand-set SLICE markers, built-in content, firmware and undo history.",
    "short_label": "BACKUP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor_backup.c",
      "lines": "26-99",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L26-L99"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/slice_store.c",
      "lines": "21-36",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/slice_store.c#L21-L36"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Browser restore asks once, then writes saved objects separately with empty entries clearing destinations and absent entries unchanged, so interruption can leave a partial restore and panel undo cannot recover it.",
    "short_label": "RESTORE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor_backup.c",
      "lines": "101-195",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L101-L195"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/fm1backup.js",
      "lines": "112-153",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/fm1backup.js#L112-L153"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/editor.html",
      "lines": "3968-3975",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/editor.html#L3968-L3975"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Uploading to either user sample slot invalidates its old sample at the start without a device question or undo, so an interrupted upload can lose it before the new audio is complete.",
    "short_label": "UPLOAD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor.c",
      "lines": "86-118",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor.c#L86-L118"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor.c",
      "lines": "582-620",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor.c#L582-L620"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "The editor’s Save here asks in the browser, then immediately writes the current music to that selected song while stopped using its full destination, avoiding the panel overwrite fault and making it the destination for later automatic saves without flash undo.",
    "short_label": "SONG SAVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/editor.html",
      "lines": "3867-3875",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/editor.html#L3867-L3875"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor.c",
      "lines": "538-556",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor.c#L538-L556"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/project.c",
      "lines": "771-808",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L771-L808"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "The editor’s Load is refused during playback, otherwise queues the song until the previous song is saved and quiet-time checks pass, then makes the loaded song the destination for later automatic writes without a question or undo.",
    "short_label": "SONG LOAD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/editor.html",
      "lines": "3846-3875",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/editor.html#L3846-L3875"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor.c",
      "lines": "538-556",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor.c#L538-L556"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "49-64",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L49-L64"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "The editor’s arrows reorder its twelve songs while stopped and queue the changed order for quiet-time saving without asking.",
    "short_label": "SONG ORDER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/editor.html",
      "lines": "3846-3857",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/editor.html#L3846-L3857"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/editor.html",
      "lines": "3885-3886",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/editor.html#L3885-L3886"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/setlist.c",
      "lines": "36-47",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L36-L47"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/session.c",
      "lines": "104-110",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L104-L110"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "The editor’s Rename asks for a name in the browser, then writes that stored song’s new name while stopped without a second device question or flash undo.",
    "short_label": "SONG NAME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "web/editor.html",
      "lines": "3878-3883",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/editor.html#L3878-L3883"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/editor.c",
      "lines": "546-550",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor.c#L546-L550"
     }
    ]
   }
  ]
 },
 "switching_note": {
  "kept_on_unit": "Twelve saved songs, a separate session recovery copy, setlist order, 32 user sounds with companion patches, two uploaded samples, slice markers, settings, calibration and favourites can remain in flash; songs include four tracks, steps, automation, the chain and drum-lane edits, while recovery also remembers the view and performance macros. From the flash atlas: install with the bundled Felucca loader: Replaces and verifies changed program data while leaving the startup code alone. This can also replace Open’s projects, preferences and the beginning of its sample storage. This leaves the whole sample bank unreadable. The same program writes can also leave PIGEON’s whole sample bank unreadable (a successful firmware installation). successful loader finishes: After installation, removes only valid update records. Saved music does not meet that check (Erases only a 4 KiB sector whose last 256 bytes hold a valid update record: marker 0x5441 at +6 and a matching nonzero CRC16 over bytes 2..79. In practice this is 0xE4000 and, on a first install from stock, 0xE8000. Saved music does not hold that record). normal startup: At startup, clears leftover data where firmware updates are prepared, without asking (any non-FF byte in first 4 staging bytes or first 8 resume bytes). first quiet session poll after startup and later changed quiet sessions: After five seconds of unchanged music and silence with playback stopped, WaveLoop saves the last session for the next start without an edit or a Save press. A project you saved in D that WaveLoop can open blocks this; an incompatible project does not (Flash is available, playback is stopped, the music has not changed for five seconds, audio is quiet, and slot D has no readable ordinary project). next startup after any untagged recovery, including the normal first recovery, followed by a quiet pause: At the next start, a restored session that does not remember its song selects the first song WaveLoop cannot open, normally song 1. Five seconds of unchanged music and silence with playback stopped then saves there without an edit, a Save press or a confirmation (a valid recovery has no active-song tag, at least one song is unreadable, flash is available, transport is stopped and the silence/unchanged-state gates pass). What WaveLoop FM-1 writes over the previous firmware's data is in overwrites_previous; what the next firmware writes over WaveLoop FM-1's is in when_you_leave.",
  "saving": "Loading a song through PROJECT or SETLIST, saving a song, restoring a tagged backup, or the automatic recovery pick makes that song active, meaning it is the destination for automatic saves; after five seconds of quiet audio and unchanged state while stopped with notes released, changes to its music replace that saved song without a question or flash undo, alongside changed setlist order and recovery, so loading B to experiment can replace saved B; switching off does not save, and a readable ordinary project D blocks all these automatic saves and queued song loads.",
  "lost": "Keep project D for recovery: an ordinary project saved there disables automatic saving until that conflict is removed; avoid confirming SAVE over a used extended SETLIST song because this release redirects the destination to A, B, C or recovery D, and flash replacements have no panel undo. From the flash atlas: Other firmwares reading WaveLoop FM-1's data: Felucca reads and uses WaveLoop FM-1's settings, calibration and favourites; FM6 patches and controls for each drum in user sounds; user sample USR1; user sample USR2 (These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices; Changing a sound or its format can make its separate patch unavailable. WaveLoop also saves patches with DRUM sounds. Other firmware does not use them as WaveLoop drum patches; Only data in this sample slot is read. Other saved work is separate); Felucca takes over WaveLoop FM-1's song 1; song 2; song 3; last session saved for the next start, converting them (Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here); Felucca lists WaveLoop FM-1's user sounds 1–16; user sounds 17–32, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question); Rainbow Mode takes over WaveLoop FM-1's settings, calibration and favourites; song 1; song 2; song 3; last session saved for the next start, converting them (These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices; Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here); Rainbow Mode lists WaveLoop FM-1's user sounds 1–16; user sounds 17–32, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question); Rainbow Mode reads and uses WaveLoop FM-1's FM6 patches and controls for each drum in user sounds; user sample USR1; user sample USR2 (Changing a sound or its format can make its separate patch unavailable. WaveLoop also saves patches with DRUM sounds. Other firmware does not use them as WaveLoop drum patches; Only data in this sample slot is read. Other saved work is separate); Felucca [Salt] takes over WaveLoop FM-1's settings, calibration and favourites, converting them (These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices); Felucca [Salt] reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Slice positions you set in SLICE stay hidden. This firmware has no storage for slice positions); SLOOP reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Audio loads only if it fits this slot. Sending to or erasing this slot replaces it); SLOOP DX7 Banks reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops); SLOOP Floyd FM reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops); FM1 Quest reads and uses WaveLoop FM-1's user sample USR1 (USR1 plays only if its audio and zones fit Quest’s 64 KiB slot. Sending into or erasing USR1 replaces it, including holding REC on a readable USR1 in IMPORTER. Sending into or erasing USR2 can damage the end of the old USR1. Extra slice markers are not used here); JIANT lists WaveLoop FM-1's settings, calibration and favourites; FM6 patches and controls for each drum in user sounds, but plays them differently (JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum); JIANT takes over WaveLoop FM-1's song 1; song 2; song 3; last session saved for the next start; user sounds 1–16; user sounds 17–32, converting them (JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept); ChoralRoot takes over WaveLoop FM-1's settings, calibration and favourites, converting them (After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return); ChoralRoot lists WaveLoop FM-1's user sounds 1–16; user sounds 17–32, but plays them differently (Imported sounds may sound different, even if their names are kept. Confirming Flash Data erases the older banks they came from); GHOULBOX lists WaveLoop FM-1's settings, calibration and favourites; song 1; song 2; song 3; last session saved for the next start; user sounds 1–16; user sounds 17–32, but plays them differently (WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported); GHOULBOX reads and uses WaveLoop FM-1's FM6 patches and controls for each drum in user sounds; user sample USR1; user sample USR2; fm1-chord takes over WaveLoop FM-1's settings, calibration and favourites; user sounds 1–16; user sounds 17–32, converting them (Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered); fm1-chord lists WaveLoop FM-1's song 1; song 2; song 3; last session saved for the next start, but plays them differently (Loading a project does not promise identical sound. Chord presets also need their separately saved fm1-chord settings); fm1-chord reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Saved loop choices use ordinary looping. The ends of loops held by a gate signal can sound different. Only matching saved SLICE markers are restored); MAKU reads and uses WaveLoop FM-1's settings, calibration and favourites; user sounds 1–16; user sounds 17–32; FM6 patches and controls for each drum in user sounds; user sample USR1; user sample USR2 (MAKU leaves these sample bytes in place, but its controls use built-in material; these uploaded samples are not available to play here); MAKU takes over WaveLoop FM-1's song 1; song 2; song 3; last session saved for the next start, converting them; Jangada reads and uses WaveLoop FM-1's user sample USR1; user sample USR2; Skiff takes over WaveLoop FM-1's song 1; song 2; song 3; last session saved for the next start, converting them (This changes how the project is stored and plays. This firmware change has not been tested on an FM-1); Skiff lists WaveLoop FM-1's user sounds 1–16; user sounds 17–32, but plays them differently (The same saved sound format does not guarantee the same sound or pattern playback); Skiff reads and uses WaveLoop FM-1's FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2 (A separate saved FM6 patch works only while its matching FM6 user sound is still stored; Skiff uses its own sound engines, so saved loops or slices can play differently; Saved slice points alone do not keep the sample they use); Hortator lists WaveLoop FM-1's user sample USR1; user sample USR2, but plays them differently (Hortator uses its own one-shot sound engines, so saved loops and slices play differently); ORBIT takes over WaveLoop FM-1's user sounds 1–16; user sounds 17–32, converting them (Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play); ORBIT reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules); PIGEON reads and uses WaveLoop FM-1's settings, calibration and favourites; user sample USR1; user sample USR2 (Shared preferences can mean different things. Choices this firmware cannot use are changed to ones it supports; Sample audio can be read. Loops and slices may play differently; we have not tested whether they sound the same); PIGEON takes over WaveLoop FM-1's song 1; song 2; song 3; last session saved for the next start, converting them (Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup); winampFM Synth reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules); FM1 Move reads and uses WaveLoop FM-1's user sample USR1; user sample USR2 (Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules); X0X lists WaveLoop FM-1's user sample USR1; user sample USR2, but plays them differently (Each zone plays as a separate repeating break loop (up to 16 per sample). Key ranges, root notes, loop points and slice markers are not used); Jangada converts only older version 1 sounds in this group. Newer sound versions look empty, and saving anywhere in the group drops them from the rewritten group.; Skiff imports some settings and calibration, but can change and save the previous firmware’s preferences without asking. What WaveLoop FM-1 reads of other firmwares' data: WaveLoop FM-1 reads and uses Felucca's settings, button calibration, favourites, MIDI LEARN map; user presets 1-16; user presets 17-32; FM6 patches of the FM6 user presets; user sample slot USR1; user sample slot USR2; WaveLoop FM-1 reads and uses SLOOP's user sounds U01-U16; user sounds U17-U32; user sample slot USR1; user sample slot USR2; WaveLoop FM-1 reads and uses X0X's break loops slot 1; break loops slot 2; WaveLoop FM-1 reads and uses JIANT's settings, calibration, favourites, MENU options; user sounds U01-U16; user sounds U17-U32; FM6 patches for the FM6 user sounds; WaveLoop FM-1 reads and uses GHOULBOX's settings and panel calibration; user sounds 1–16; user sounds 17–32; FM6 patches for user sounds; user sample slot USR1; user sample slot USR2; WaveLoop FM-1 takes over Hortator's settings and panel calibration, converting them; WaveLoop FM-1 reads and uses Hortator's user samples USR1; user samples USR2; WaveLoop FM-1 reads and uses Skiff's settings, calibration and favourites; user sound bank 1; user sound bank 2; user sounds’ own FM6 patches; user sample USR1; user sample USR2; WaveLoop FM-1 lists sloopDX's user presets 1–16; user presets 17–32, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS); WaveLoop FM-1 takes over Rainbow Mode's Felucca preferences, calibration and favourites; Rainbow WRITE song, greeting name, hat, volume limit and look-alikes; your old FM6 bank (B1–B27), converting them (These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices; If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format); WaveLoop FM-1 reads and uses Rainbow Mode's user sounds U01–U16, names and sixteen-step patterns without automation; user sounds U17–U32, names and sixteen-step patterns without automation; FM6 patches used by the thirty-two user sounds; User sample USR1 and any slice positions you set in SLICE; User sample USR2 and any slice positions you set in SLICE (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question; Changing a sound or its format can make its separate patch unavailable); WaveLoop FM-1 reads and uses MAKU's settings and calibration; inherited FM6 patches for user presets; inherited user sample 1; inherited user sample 2 (These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices; Changing a sound or its format can make its separate patch unavailable); WaveLoop FM-1 lists MAKU's inherited user preset bank 1; inherited user preset bank 2, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. MAKU’s insert controls become timing and modulation controls in Felucca. Earlier firmware ignores them. The insert sound is not kept); WaveLoop FM-1 lists fm1-chord's chord preset P1: full synth project; chord preset P2: full synth project; chord preset P3: full synth project; chord preset P4: full synth project; user sounds 1-16; user sounds 17-32, but plays them differently (Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here; Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. The other firmware’s extra instrument is unavailable here. Its sounds appear empty); WaveLoop FM-1 takes over fm1-chord's FM6 bank B1-B27, converting them (If a valid bank of FM6 patches for your sounds from another firmware remains, the older bank is not changed to the new format at start-up); WaveLoop FM-1 reads and uses fm1-chord's uploaded sample USR1 and optional SLICE markers; uploaded sample USR2 and optional SLICE markers (Only data in this sample slot is read. Other saved work is separate; Saved samples may have no slice positions set by you); WaveLoop FM-1 lists SLOOP DX7 Banks's user sounds 1–16; user sounds 17–32; user sample USR1; user sample USR2, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different); WaveLoop FM-1 reads and uses SLOOP DX7 Banks's user sample USR1; user sample USR2 (Saved samples may have no slice positions set by you); WaveLoop FM-1 reads and uses Jangada's user samples USR1; user samples USR2 (Only data in this sample slot is read. Other saved work is separate; Saved samples may have no slice positions set by you); WaveLoop FM-1 reads and uses ORBIT's sample slot USR1; sample slot USR2 (Only data in this sample slot is read. Other saved work is separate; Saved samples may have no slice positions set by you); WaveLoop FM-1 lists SLOOP Floyd FM's user sounds U01–U16; user sounds U17–U32; user sample slot USR1; user sample slot USR2, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different); WaveLoop FM-1 reads and uses SLOOP Floyd FM's user sample slot USR1; user sample slot USR2 (Saved samples may have no slice positions set by you); WaveLoop FM-1 lists winampFM Synth's user sounds 1-16; user sounds 17-32; sample USR1; sample USR2, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different); WaveLoop FM-1 reads and uses winampFM Synth's sample USR1; sample USR2 (Saved samples may have no slice positions set by you); WaveLoop FM-1 takes over Felucca [Salt]'s project 1; project 2; project 3; project 4, converting them (Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens); WaveLoop FM-1 lists Felucca [Salt]'s user sounds U01-U16; user sounds U17-U32, but plays them differently (Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded); WaveLoop FM-1 reads and uses Felucca [Salt]'s user sample USR1; user sample USR2 (Only data in this sample slot is read. Other saved work is separate); WaveLoop FM-1 reads and uses PIGEON's preferences, MIDI LEARN and panel calibration; older user preset bank 1; older user preset bank 2; older FM6 patches for user presets; user sample USR1 in the older format; user sample USR2 in the older format (These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices; Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question; Changing a sound or its format can make its separate patch unavailable; Only data in this sample slot is read. Other saved work is separate; Saved samples may have no slice positions set by you); WaveLoop FM-1 takes over PIGEON's older FM6 patch bank PIGEON no longer uses, converting them (If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format); WaveLoop FM-1 lists FM1 Move's user sounds U01–U16; user sounds U17–U32; sample slot USR1; sample slot USR2, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different); WaveLoop FM-1 reads and uses FM1 Move's sample slot USR1; sample slot USR2 (Saved samples may have no slice positions set by you); WaveLoop FM-1 lists FM1 Quest's user sounds U01–U16; user sounds U17–U32; sample USR1, but plays them differently (Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Only the first sample is stored in the same place. The other two sample slots use different storage). Everything else of another firmware's looks empty or foreign to the reader.",
  "back_up_first": "Connect the unit to the WaveLoop web editor and save its full-backup file to the computer; it reads current music, settings, calibration, favourites, all saved songs including recovery, setlist order, user sounds and companion patches, and both uploaded samples, but omits hand-set SLICE markers, built-in content, firmware and undo history.",
  "restore": "Browser restore asks once and writes objects separately, with no complete rollback: explicitly empty items clear their destinations, absent items from an older archive remain untouched, and an older archive containing a third uploaded sample is rejected before writing; device restore commands themselves ask nothing, and an interrupted sample upload can destroy the previous sample before the replacement finishes.",
  "going_back": "The old Felucca fork-point projects can be imported, but current Felucca v1.6.1 projects cannot; shared settings and user sounds can still be read, with newer-only meanings unavailable, and only the first two uploaded samples are used; returning to older Felucca does not make it understand WaveLoop’s extra songs, order or drum additions, so keep a backup made by the version that created the work. WaveLoop’s song saves, renames, automatic writes after five seconds of unchanged music and silence while stopped and restores, user-sound saves, renames, erases, sends to the FM-1 and restores, and USR1 sample sends to the FM-1, erases, slice edits and restores can also replace ChoralRoot’s legacy sounds 1–32, VA patches, FM6 patches 1–32, CZ patches 1–32 and FM TONE patches, kept for returning to ChoralRoot 0.21 or older.",
  "overwrites_without_asking": [
   "Back up with the firmware that made the work before WaveLoop’s first start. See the switching advice in this section for the affected saved work.",
   "A start that finds data at its update-area probes erases that whole update area without asking. See the switching advice in this section for the affected saved work. After installing, the loader also erases sectors holding valid pending-update records; saved music does not hold those records.",
   "The first quiet recovery save, and later ones, write project D; a readable ordinary old Felucca project D instead blocks automatic saving. See the switching advice in this section for the affected saved work.",
   "The first MENU close, first opening of an unseen quick layer, changed favourite, calibration save or editor settings send can replace shared settings without asking. See the switching advice in this section for the affected saved work.",
   "Saving or automatically updating extra songs and setlist order writes without a question about the other firmware’s work. See the switching advice in this section for the affected saved work.",
   "Saving, erasing, renaming or sending a user sound rewrites its whole bank. See the switching advice in this section for the affected saved work.",
   "Back up with the firmware that created the work before switching. See the switching advice in this section.",
   "A recovery with no active song, including the first recovery made on a clean start, makes the next start choose the first setlist song WaveLoop cannot read; after the quiet pause it writes that song without a question or flash undo, even with no edits, normally song 1 in the default order, and later changes keep replacing the same song’s alternating saved copies.",
   "Automatic song writes, including that next-start save, write without asking; the MAKU project mirrors they can replace are not restored as MAKU music, but they can still hold projects from the firmware you used before MAKU. See the switching advice in this section for the affected saved work.",
   "Saving an FM6 or DRUM user sound also writes its companion patches. See the switching advice in this section for the affected saved work.",
   "Uploading, recording, erasing or restoring user samples writes the selected sample space; uploads destroy the previous sample header at the beginning and can erase more work as the transfer proceeds, without a device question or undo. See the switching advice in this section for the affected saved work."
  ],
  "source": [
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/storage.c",
    "lines": "57-168",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/storage.c#L57-L168"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/session.c",
    "lines": "23-55",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L23-L55"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/session.c",
    "lines": "80-129",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L80-L129"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/setlist.c",
    "lines": "56-64",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/setlist.c#L56-L64"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/project.c",
    "lines": "771-808",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L771-L808"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/project.c",
    "lines": "1050-1082",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L1050-L1082"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/editor_backup.c",
    "lines": "26-99",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L26-L99"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/editor_backup.c",
    "lines": "101-195",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L101-L195"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "web/fm1backup.js",
    "lines": "112-153",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/web/fm1backup.js#L112-L153"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/ui_input.c",
    "lines": "627-635",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L627-L635"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/ui_input.c",
    "lines": "1033-1041",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1041"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/slice_store.c",
    "lines": "56-105",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/slice_store.c#L56-L105"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/loader/ldr_core.c",
    "lines": "85-135",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/loader/ldr_core.c#L85-L135"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/ota.c",
    "lines": "382-396",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ota.c#L382-L396"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/project.c",
    "lines": "938-949",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/project.c#L938-L949"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/editor_backup.c",
    "lines": "126-130",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L126-L130"
   },
   {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/session.c",
    "lines": "44-53",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L44-L53"
   }
  ],
  "overwrites_previous": [
   {
    "from": "stock",
    "name": "Stock V15",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "baudgirl",
    "name": "Baud Girl FM-1+VA",
    "flags": "?",
    "weakest_grade": "inferred",
    "at_risk": [],
    "possibly_at_risk": [
     "Baud Girl presets (128)",
     "Baud Girl patterns (16, with locks)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): Baud Girl presets (128); Baud Girl patterns (16, with locks).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "felucca",
    "name": "Felucca",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "project slot A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project slot D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, button calibration, favourites, MIDI LEARN map",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       }
      ]
     },
     {
      "object": "project slot B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project slot C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches of the FM6 user presets",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user presets 1-16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user presets 17-32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sample slot USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads FM6 patches of the FM6 user presets until you write over the saved data.",
     "WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data.",
     "WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: project slot A; project slot D; settings, button calibration, favourites, MIDI LEARN map. At risk by itself, under a condition: project slot B; project slot C; user sample slot USR3; FM6 patches of the FM6 user presets. At risk when you act: user presets 1-16; user presets 17-32; user sample slot USR1; user sample slot USR2. WaveLoop FM-1 reads FM6 patches of the FM6 user presets until you write over the saved data. WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data. WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "sloop",
    "name": "SLOOP",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song section A (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section D (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration, song order, SYN1-4 kits, MIDI LEARN, theme and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section B (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section C (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "the music in progress (autosave)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01-U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sounds U17-U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sample slot USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data.",
     "WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: song section A (a whole project); song section D (a whole project); settings, calibration, song order, SYN1-4 kits, MIDI LEARN, theme and favourites. At risk by itself, under a condition: song section B (a whole project); song section C (a whole project); user sample slot USR3. At risk when you act: the music in progress (autosave); user sounds U01-U16; user sounds U17-U32; user sample slot USR1; user sample slot USR2. WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data. WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "x0x",
    "name": "X0X",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "the whole X0X project (settings, sound, all 32 patterns, song, knob motion)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "break loops slot 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "X0X button calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "break loops slot 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "break loops slot 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads break loops slot 1 until you write over the saved data.",
     "WaveLoop FM-1 reads break loops slot 2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: the whole X0X project (settings, sound, all 32 patterns, song, knob motion). At risk by itself, under a condition: break loops slot 3. At risk when you act: X0X button calibration; break loops slot 1; break loops slot 2. WaveLoop FM-1 reads break loops slot 1 until you write over the saved data. WaveLoop FM-1 reads break loops slot 2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "jiant",
    "name": "JIANT",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song 1 section A (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1 section D (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration, favourites, MENU options",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       }
      ]
     },
     {
      "object": "song 1 section B (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1 section C (a whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "partly lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "partly lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "partly lost"
       }
      ]
     },
     {
      "object": "song 8: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "partly lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "partly lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "partly lost"
       }
      ]
     },
     {
      "object": "which song is current, every song's rows and scenes",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches for the FM6 user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "song 2: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "partly lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "partly lost"
       }
      ]
     },
     {
      "object": "song 5: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6: four sections (whole projects)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01-U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sounds U17-U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads FM6 patches for the FM6 user sounds until you write over the saved data."
    ],
    "owner_text": "At risk by itself: song 1 section A (a whole project); song 1 section D (a whole project); settings, calibration, favourites, MENU options. At risk by itself, under a condition: song 1 section B (a whole project); song 1 section C (a whole project); song 7: four sections (whole projects); song 8: four sections (whole projects); which song is current, every song's rows and scenes; FM6 patches for the FM6 user sounds. At risk when you act: song 2: four sections (whole projects); song 3: four sections (whole projects); song 4: four sections (whole projects); song 5: four sections (whole projects); song 6: four sections (whole projects); user sounds U01-U16; user sounds U17-U32. WaveLoop FM-1 reads FM6 patches for the FM6 user sounds until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "melodee",
    "name": "Melodee",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "shared user presets U289-U378",
      "effect": "partly lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "partly lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "partly lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "partly lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "partly lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "partly lost"
       }
      ]
     },
     {
      "object": "shared user presets U379-U384",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, factory favourites, calibration, saved template",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "shared user presets U145-U288",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "partly lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "partly lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "partly lost"
       }
      ]
     },
     {
      "object": "shared user presets U073-U090",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "shared user presets U091-U108",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "shared user presets U109-U126",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project A: patterns, song, sounds, motion, recordings",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project B: patterns, song, sounds, motion, recordings",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project C: patterns, song, sounds, motion, recordings",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project D: patterns, song, sounds, motion, recordings",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "shared user presets U001-U018",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "shared user presets U019-U036",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: shared user presets U289-U378 (partly lost); shared user presets U379-U384; settings, factory favourites, calibration, saved template. At risk by itself, under a condition: shared user presets U145-U288; shared user presets U073-U090; shared user presets U091-U108. At risk when you act: shared user presets U109-U126; project A: patterns, song, sounds, motion, recordings; project B: patterns, song, sounds, motion, recordings; project C: patterns, song, sounds, motion, recordings; project D: patterns, song, sounds, motion, recordings; shared user presets U001-U018; shared user presets U019-U036.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fomni",
    "name": "FoMni",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FoMni setup (pages, chord buttons, lights)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FoMni button calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: FoMni setup (pages, chord buttons, lights). At risk when you act: FoMni button calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "amb",
    "name": "AMB-1",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "AMB-1 pieces and setup",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "AMB-1 panel calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "choralroot",
    "name": "ChoralRoot",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "options, playing setup and panel calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 5",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 6",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 7",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 8",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 9",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "recorded loop 10",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "32 imported DX7 voices",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank A (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank B (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank C (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank D (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank E (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank F (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank G (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "CZ-1 bank H (16 tones)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved with a global save",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "favourite marks, chord/bass type and filter",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "128 saved sounds with their complete engine patches",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: options, playing setup and panel calibration. At risk by itself, under a condition: recorded loop 1; recorded loop 2; recorded loop 3; recorded loop 4; recorded loop 5; recorded loop 6; recorded loop 7; recorded loop 8; recorded loop 9; recorded loop 10. At risk when you act: 32 imported DX7 voices; CZ-1 bank A (16 tones); CZ-1 bank B (16 tones); CZ-1 bank C (16 tones); CZ-1 bank D (16 tones); CZ-1 bank E (16 tones); CZ-1 bank F (16 tones); CZ-1 bank G (16 tones); CZ-1 bank H (16 tones); last session saved with a global save; favourite marks, chord/bass type and filter; 128 saved sounds with their complete engine patches.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "ghoulbox",
    "name": "GHOULBOX",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "project A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings and panel calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       }
      ]
     },
     {
      "object": "project B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches for user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its preset bank]",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ]
     },
     {
      "object": "user sample slot USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads FM6 patches for user sounds until you write over the saved data.",
     "WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data.",
     "WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: project A; project D; settings and panel calibration. At risk by itself, under a condition: project B; project C; user sample slot USR3; FM6 patches for user sounds. At risk when you act: user sounds 1–16; user sounds 17–32; user sample slot USR1; user sample slot USR2. WaveLoop FM-1 reads FM6 patches for user sounds until you write over the saved data. WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data. WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "mvaveopen",
    "name": "M-VAVE FM-1 Open",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "Open shared sample audio",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically, only if data is left where firmware updates are prepared",
        "effect": "lost"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you finish an update with the firmware installer",
        "effect": "lost"
       },
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you start an update with the firmware installer (even a failed attempt clears space)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 13",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 14",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 15",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open device preferences",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: Open shared sample audio. At risk when you act: Open USER project 1; Open USER project 2; Open USER project 3; Open USER project 4; Open USER project 5; Open USER project 6; Open USER project 7; Open USER project 8; Open USER project 9; Open USER project 10; Open USER project 11; Open USER project 12; Open USER project 13; Open USER project 14; Open USER project 15; Open USER project 16; Open device preferences.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fm106",
    "name": "FM-106",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "older stored user bank, if present (Beta4 does not store new edits)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "octave, last selected preset and MIDI preferences",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: older stored user bank, if present (Beta4 does not store new edits); octave, last selected preset and MIDI preferences.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "hortator",
    "name": "Hortator",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "project A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings and panel calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: The next settings save, even an automatic save during use, makes Hortator start with default settings and panel calibration and no remembered Bluetooth device when you return. Back them up before switching"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "changed to the new format: The next settings save, even an automatic save during use, makes Hortator start with default settings and panel calibration and no remembered Bluetooth device when you return. Back them up before switching"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "changed to the new format: The next settings save, even an automatic save during use, makes Hortator start with default settings and panel calibration and no remembered Bluetooth device when you return. Back them up before switching"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "changed to the new format: The next settings save, even an automatic save during use, makes Hortator start with default settings and panel calibration and no remembered Bluetooth device when you return. Back them up before switching"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "changed to the new format: The next settings save, even an automatic save during use, makes Hortator start with default settings and panel calibration and no remembered Bluetooth device when you return. Back them up before switching"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "changed to the new format: The next settings save, even an automatic save during use, makes Hortator start with default settings and panel calibration and no remembered Bluetooth device when you return. Back them up before switching"
       }
      ]
     },
     {
      "object": "project B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user samples USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user samples USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user samples USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads user samples USR1 until you write over the saved data.",
     "WaveLoop FM-1 reads user samples USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: project A; project D; settings and panel calibration. At risk by itself, under a condition: project B; project C; user samples USR3. At risk when you act: user samples USR1; user samples USR2. WaveLoop FM-1 reads user samples USR1 until you write over the saved data. WaveLoop FM-1 reads user samples USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "obervave",
    "name": "OberVave",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "saved programs and global settings",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "pattern 1",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 2",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 3",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 4",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 5",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 6",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 7",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     },
     {
      "object": "pattern 8",
      "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain",
      "ways": [
       {
        "way": "automatically during use [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its saved B-track program]",
        "effect": "its B-track sound can change if it uses a saved program; its pattern notes remain"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: saved programs and global settings; pattern 1 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 2 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 3 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 4 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 5 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 6 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 7 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 8 (its B-track sound can change if it uses a saved program; its pattern notes remain).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "polly",
    "name": "Polly",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "All four Polly songs",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly setup and channel sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Optional QY70 style bank",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "damaged (part written over)"
       }
      ]
     },
     {
      "object": "Polly shared memory 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 13",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 14",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 15",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly shared memory 16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Polly button and encoder calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: All four Polly songs; Polly shared memory 3; Polly setup and channel sounds. At risk by itself, under a condition: Polly shared memory 1; Polly shared memory 2; Optional QY70 style bank. At risk when you act: Polly shared memory 4; Polly shared memory 5; Polly shared memory 6; Polly shared memory 7; Polly shared memory 8; Polly shared memory 9; Polly shared memory 10; Polly shared memory 11; Polly shared memory 12; Polly shared memory 13; Polly shared memory 14; Polly shared memory 15; Polly shared memory 16; Polly button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "skiff",
    "name": "Skiff",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "project A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "changed automatically: A later automatic settings save keeps the adjusted colours and preferences, changed favourites and which quick-layer hints you have seen, without asking"
       }
      ]
     },
     {
      "object": "project B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sound bank 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank) [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ],
      "first_way_effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
     },
     {
      "object": "user sound bank 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank) [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its separate FM6 patch collection]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format when read; saved in that format next time you save this bank"
       }
      ],
      "first_way_effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
     },
     {
      "object": "user sounds’ own FM6 patches",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads user sounds’ own FM6 patches until you write over the saved data.",
     "WaveLoop FM-1 reads user sample USR1 until you write over the saved data.",
     "WaveLoop FM-1 reads user sample USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: project A; project D; settings, calibration and favourites. At risk by itself, under a condition: project B; project C; user sample USR3; user sound bank 1 (only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain; other writes can also erase it); user sound bank 2 (only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain; other writes can also erase it); user sounds’ own FM6 patches. At risk when you act: user sample USR1; user sample USR2. WaveLoop FM-1 reads user sounds’ own FM6 patches until you write over the saved data. WaveLoop FM-1 reads user sample USR1 until you write over the saved data. WaveLoop FM-1 reads user sample USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "sloopdx",
    "name": "sloopDX",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "section A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       }
      ]
     },
     {
      "object": "section D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       }
      ]
     },
     {
      "object": "settings, calibration, song order, MIDI, theme and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       }
      ]
     },
     {
      "object": "section C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       }
      ]
     },
     {
      "object": "working loop",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices and drum kit]",
        "effect": "sounds can change if their saved DX7 voices, chosen bank or drum kit are replaced; saved notes and controls stay"
       }
      ]
     },
     {
      "object": "DX7 bank 1 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 1 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 2 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 2 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 3 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 3 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 4 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 4 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 5 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 5 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 6 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 6 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 7 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 7 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 8 voices 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "DX7 bank 8 voices 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "selected DX7 bank",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "MY KIT",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user presets 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices]",
        "effect": "sounds can change if their saved DX7 voices or chosen bank are replaced; saved notes and controls stay"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices]",
        "effect": "sounds can change if their saved DX7 voices or chosen bank are replaced; saved notes and controls stay"
       }
      ],
      "first_way_effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
     },
     {
      "object": "user presets 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its saved DX7 voices]",
        "effect": "sounds can change if their saved DX7 voices or chosen bank are replaced; saved notes and controls stay"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its saved DX7 voices]",
        "effect": "sounds can change if their saved DX7 voices or chosen bank are replaced; saved notes and controls stay"
       }
      ],
      "first_way_effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: section A; section D; settings, calibration, song order, MIDI, theme and favourites. At risk by itself, under a condition: section B; section C. At risk when you act: working loop; DX7 bank 1 voices 1–16; DX7 bank 1 voices 17–32; DX7 bank 2 voices 1–16; DX7 bank 2 voices 17–32; DX7 bank 3 voices 1–16; DX7 bank 3 voices 17–32; DX7 bank 4 voices 1–16; DX7 bank 4 voices 17–32; DX7 bank 5 voices 1–16; DX7 bank 5 voices 17–32; DX7 bank 6 voices 1–16; DX7 bank 6 voices 17–32; DX7 bank 7 voices 1–16; DX7 bank 7 voices 17–32; DX7 bank 8 voices 1–16; DX7 bank 8 voices 17–32; selected DX7 bank; MY KIT; user presets 1–16 (changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; other writes can also erase it); user presets 17–32 (changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS; other writes can also erase it).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "rainbow",
    "name": "Rainbow Mode",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "Project A: four tracks and their sounds, notes, automation, song chain and name",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Project D: four tracks and their sounds, notes, automation, song chain and name",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Felucca preferences, calibration and favourites; Rainbow WRITE song, greeting name, hat, volume limit and look-alikes",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       }
      ]
     },
     {
      "object": "Project B: four tracks and their sounds, notes, automation, song chain and name",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Project C: four tracks and their sounds, notes, automation, song chain and name",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "your old FM6 bank (B1–B27)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       }
      ]
     },
     {
      "object": "User sample USR3 and any slice positions you set in SLICE",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "the FM6 patches used by the thirty-two user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "user sounds U01–U16, names and sixteen-step patterns without automation",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank) [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ],
      "first_way_effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
     },
     {
      "object": "user sounds U17–U32, names and sixteen-step patterns without automation",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank) [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank) [uses its FM6 patches]",
        "effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ],
      "first_way_effect": "only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain"
     },
     {
      "object": "User sample USR1 and any slice positions you set in SLICE",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "User sample USR2 and any slice positions you set in SLICE",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads the FM6 patches used by the thirty-two user sounds until you write over the saved data. Changing a sound or its format can make its separate patch unavailable.",
     "WaveLoop FM-1 reads user sample USR1 and any slice positions you set in SLICE until you write over the saved data.",
     "WaveLoop FM-1 reads user sample USR2 and any slice positions you set in SLICE until you write over the saved data.",
     "WaveLoop FM-1 reads user sounds U01–U16, names and sixteen-step patterns without automation until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
     "WaveLoop FM-1 reads user sounds U17–U32, names and sixteen-step patterns without automation until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question."
    ],
    "owner_text": "At risk by itself: Project A: four tracks and their sounds, notes, automation, song chain and name; Project D: four tracks and their sounds, notes, automation, song chain and name; Felucca preferences, calibration and favourites; Rainbow WRITE song, greeting name, hat, volume limit and look-alikes. At risk by itself, under a condition: Project B: four tracks and their sounds, notes, automation, song chain and name; Project C: four tracks and their sounds, notes, automation, song chain and name; your old FM6 bank (B1–B27); User sample USR3 and any slice positions you set in SLICE; the FM6 patches used by the thirty-two user sounds; user sounds U01–U16, names and sixteen-step patterns without automation (only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain; other writes can also erase it); user sounds U17–U32, names and sixteen-step patterns without automation (only FM6 sounds can lose their own patches and fall back to a factory patch or the initial voice; other sounds remain; other writes can also erase it). At risk when you act: User sample USR1 and any slice positions you set in SLICE; User sample USR2 and any slice positions you set in SLICE. WaveLoop FM-1 reads the FM6 patches used by the thirty-two user sounds until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop FM-1 reads user sample USR1 and any slice positions you set in SLICE until you write over the saved data. WaveLoop FM-1 reads user sample USR2 and any slice positions you set in SLICE until you write over the saved data. WaveLoop FM-1 reads user sounds U01–U16, names and sixteen-step patterns without automation until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. WaveLoop FM-1 reads user sounds U17–U32, names and sixteen-step patterns without automation until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "duell",
    "name": "DUELL beta",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "multis M01–M02",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M07–M08",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings and panel setup",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M03–M04",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M05–M06",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "saved patches",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M09–M10",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M11–M12",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M13–M14",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "multis M15–M16",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "patterns P01–P06",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "patterns P07–P12",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "patterns P13–P16",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user wavetable USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user wavetable USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user wavetable USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: multis M01–M02; multis M07–M08; settings and panel setup. At risk by itself, under a condition: multis M03–M04; multis M05–M06; saved patches; multis M09–M10; multis M11–M12; multis M13–M14; multis M15–M16; patterns P01–P06; patterns P07–P12; patterns P13–P16. At risk when you act: user wavetable USR1; user wavetable USR2; user wavetable USR3.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fimba",
    "name": "FiMba-1 beta",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FiMba-1 beta sound and playing setup",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FiMba-1 beta panel calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: FiMba-1 beta sound and playing setup. At risk when you act: FiMba-1 beta panel calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "maku",
    "name": "MAKU",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "inherited project A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "inherited project D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings and calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       }
      ]
     },
     {
      "object": "inherited project B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "inherited project C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "inherited user sample 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "inherited FM6 patches for user presets",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "inherited user sample 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "inherited user sample 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "inherited user preset bank 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "inherited user preset bank 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads inherited FM6 patches for user presets until you write over the saved data. Changing a sound or its format can make its separate patch unavailable.",
     "WaveLoop FM-1 reads inherited user sample 1 until you write over the saved data.",
     "WaveLoop FM-1 reads inherited user sample 2 until you write over the saved data.",
     "WaveLoop FM-1 reads inherited user preset bank 1 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. MAKU’s insert controls become timing and modulation controls in Felucca. Earlier firmware ignores them. The insert sound is not kept.",
     "WaveLoop FM-1 reads inherited user preset bank 2 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. MAKU’s insert controls become timing and modulation controls in Felucca. Earlier firmware ignores them. The insert sound is not kept.",
     "WaveLoop FM-1 reads settings and calibration until you write over the saved data. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices."
    ],
    "owner_text": "At risk by itself: inherited project A; inherited project D; settings and calibration. At risk by itself, under a condition: inherited project B; inherited project C; inherited user sample 3; inherited FM6 patches for user presets. At risk when you act: inherited user sample 1; inherited user sample 2; inherited user preset bank 1; inherited user preset bank 2. WaveLoop FM-1 reads inherited FM6 patches for user presets until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop FM-1 reads inherited user sample 1 until you write over the saved data. WaveLoop FM-1 reads inherited user sample 2 until you write over the saved data. WaveLoop FM-1 reads inherited user preset bank 1 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. MAKU’s insert controls become timing and modulation controls in Felucca. Earlier firmware ignores them. The insert sound is not kept. WaveLoop FM-1 reads inherited user preset bank 2 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. MAKU’s insert controls become timing and modulation controls in Felucca. Earlier firmware ignores them. The insert sound is not kept. WaveLoop FM-1 reads settings and calibration until you write over the saved data. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fart",
    "name": "Fart Machine One",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk when you act: learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "chord",
    "name": "fm1-chord",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, panel calibration, four chord preset setups and the current chord setup",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 bank B1-B27",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if you saved an FM6 bank in fm1-chord and no older bank of FM6 patches for your sounds from another firmware remains",
        "effect": "changed to the new format: Later saves of user-sound patches can erase fm1-chord’s FM6 bank. When you return, fm1-chord cannot use patches saved in the new format. If a valid bank of FM6 patches for your sounds from another firmware remains, the older bank is not changed to the new format at start-up"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves of user-sound patches can erase fm1-chord’s FM6 bank. When you return, fm1-chord cannot use patches saved in the new format. If a valid bank of FM6 patches for your sounds from another firmware remains, the older bank is not changed to the new format at start-up"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves of user-sound patches can erase fm1-chord’s FM6 bank. When you return, fm1-chord cannot use patches saved in the new format. If a valid bank of FM6 patches for your sounds from another firmware remains, the older bank is not changed to the new format at start-up"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves of user-sound patches can erase fm1-chord’s FM6 bank. When you return, fm1-chord cannot use patches saved in the new format. If a valid bank of FM6 patches for your sounds from another firmware remains, the older bank is not changed to the new format at start-up"
       }
      ]
     },
     {
      "object": "uploaded sample USR3 and optional SLICE markers",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "chord preset P1: full synth project",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "chord preset P2: full synth project",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "chord preset P3: full synth project",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "chord preset P4: full synth project",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "uploaded sample USR1 and optional SLICE markers",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "uploaded sample USR2 and optional SLICE markers",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1-16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "user sounds 17-32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads chord preset P1: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here.",
     "WaveLoop FM-1 reads chord preset P2: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here.",
     "WaveLoop FM-1 reads chord preset P3: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here.",
     "WaveLoop FM-1 reads chord preset P4: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here.",
     "WaveLoop FM-1 reads uploaded sample USR1 and optional SLICE markers until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads uploaded sample USR2 and optional SLICE markers until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads user sounds 1-16 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. The other firmware’s extra instrument is unavailable here. Its sounds appear empty.",
     "WaveLoop FM-1 reads user sounds 17-32 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. The other firmware’s extra instrument is unavailable here. Its sounds appear empty."
    ],
    "owner_text": "At risk by itself: settings, panel calibration, four chord preset setups and the current chord setup. At risk by itself, under a condition: FM6 bank B1-B27; uploaded sample USR3 and optional SLICE markers; chord preset P1: full synth project; chord preset P2: full synth project; chord preset P3: full synth project; chord preset P4: full synth project. At risk when you act: uploaded sample USR1 and optional SLICE markers; uploaded sample USR2 and optional SLICE markers; user sounds 1-16; user sounds 17-32. WaveLoop FM-1 reads chord preset P1: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here. WaveLoop FM-1 reads chord preset P2: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here. WaveLoop FM-1 reads chord preset P3: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here. WaveLoop FM-1 reads chord preset P4: full synth project until you write over the saved data. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop does not use the same check for allowed instruments. CHORD tracks do not use the CHORD instrument here. WaveLoop FM-1 reads uploaded sample USR1 and optional SLICE markers until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads uploaded sample USR2 and optional SLICE markers until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads user sounds 1-16 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. The other firmware’s extra instrument is unavailable here. Its sounds appear empty. WaveLoop FM-1 reads user sounds 17-32 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. The other firmware’s extra instrument is unavailable here. Its sounds appear empty.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "sloopbanks",
    "name": "SLOOP DX7 Banks",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "section A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration, song order, synthesized drum kits and DX-bank setup",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "working loop",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "After WaveLoop FM-1 replaces DX7 Banks’ saved settings, returning to DX7 Banks erases DX banks 1–8 at its first start without asking, including your own banks 5–8. Back up your DX banks before switching.",
     "WaveLoop FM-1 reads user sample USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads user sample USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you."
    ],
    "owner_text": "At risk by itself: section A; section D; settings, calibration, song order, synthesized drum kits and DX-bank setup. At risk by itself, under a condition: section B; section C; user sample USR3. At risk when you act: working loop; user sounds 1–16; user sounds 17–32; user sample USR1; user sample USR2. After WaveLoop FM-1 replaces DX7 Banks’ saved settings, returning to DX7 Banks erases DX banks 1–8 at its first start without asking, including your own banks 5–8. Back up your DX banks before switching. WaveLoop FM-1 reads user sample USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads user sample USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fumi",
    "name": "FuMi-1",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FuMi-1 sound and playing setup",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FuMi-1 button and encoder calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: FuMi-1 sound and playing setup. At risk when you act: FuMi-1 button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "jangada",
    "name": "Jangada",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "project 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project 4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "preferences, calibration and MIDI LEARN map",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user samples USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "working music (autosave)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01-U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U17-U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user samples USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user samples USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads user samples USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads user samples USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you."
    ],
    "owner_text": "At risk by itself: project 1; project 4; preferences, calibration and MIDI LEARN map. At risk by itself, under a condition: project 2; project 3; user samples USR3. At risk when you act: working music (autosave); user sounds U01-U16; user sounds U17-U32; user samples USR1; user samples USR2. WaveLoop FM-1 reads user samples USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads user samples USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "orbit",
    "name": "ORBIT",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "saved section A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ],
      "first_way_effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
     },
     {
      "object": "saved section B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ],
      "first_way_effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
     },
     {
      "object": "saved section C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ],
      "first_way_effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
     },
     {
      "object": "saved section D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ]
     },
     {
      "object": "working music kept by autosave",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ],
      "first_way_effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
     },
     {
      "object": "settings, calibration, song order, SYN1-SYN4 kits and MIDI preferences",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample slot USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "USER sounds U01-U16",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ],
      "first_way_effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
     },
     {
      "object": "USER sounds U17-U32",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ],
      "first_way_effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
     },
     {
      "object": "sample slot USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample slot USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads sample slot USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads sample slot USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you."
    ],
    "owner_text": "At risk by itself: saved section A (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain; other writes can also erase it); saved section B (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain; other writes can also erase it); saved section C (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain; other writes can also erase it); saved section D; working music kept by autosave (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain; other writes can also erase it); settings, calibration, song order, SYN1-SYN4 kits and MIDI preferences. At risk by itself, under a condition: sample slot USR3; USER sounds U01-U16 (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain; other writes can also erase it); USER sounds U17-U32 (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain; other writes can also erase it). At risk when you act: sample slot USR1; sample slot USR2. WaveLoop FM-1 reads sample slot USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads sample slot USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "floyd",
    "name": "SLOOP Floyd FM",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song section A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, panel calibration and song order",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "the working loop kept by autosave",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01–U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sounds U17–U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sample slot USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample slot USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you."
    ],
    "owner_text": "At risk by itself: song section A; song section D; settings, panel calibration and song order. At risk by itself, under a condition: song section B; song section C; user sample slot USR3. At risk when you act: the working loop kept by autosave; user sounds U01–U16; user sounds U17–U32; user sample slot USR1; user sample slot USR2. WaveLoop FM-1 reads user sample slot USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads user sample slot USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "winampfm",
    "name": "winampFM Synth",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "section A (whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section D (whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, panel calibration, song order, SYN kits and MIDI",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section B (whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "section C (whole project)",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "working music kept by autosave",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1-16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sounds 17-32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads sample USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads sample USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you."
    ],
    "owner_text": "At risk by itself: section A (whole project); section D (whole project); settings, panel calibration, song order, SYN kits and MIDI. At risk by itself, under a condition: section B (whole project); section C (whole project); sample USR3. At risk when you act: working music kept by autosave; user sounds 1-16; user sounds 17-32; sample USR1; sample USR2. WaveLoop FM-1 reads sample USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads sample USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "bubba",
    "name": "Bubba Machine (beta)",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "sixteen six-track patterns",
      "effect": "some or all lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "some or all lost"
       }
      ]
     },
     {
      "object": "song order and four scenes",
      "effect": "some or all lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "some or all lost"
       }
      ]
     },
     {
      "object": "eight saved sampler takes",
      "effect": "some or all lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "some or all lost"
       }
      ]
     },
     {
      "object": "twelve uploaded sounds or DX7 banks",
      "effect": "some or all lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "some or all lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "some or all lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "some or all lost"
       }
      ]
     },
     {
      "object": "screen language pack",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "system preferences and last pattern",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: sixteen six-track patterns (some or all lost); song order and four scenes (some or all lost). At risk by itself, under a condition: eight saved sampler takes (some or all lost); twelve uploaded sounds or DX7 banks (some or all lost); screen language pack. At risk when you act: system preferences and last pattern.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "salt",
    "name": "Felucca [Salt]",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "screen preferences, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       }
      ]
     },
     {
      "object": "project 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       }
      ]
     },
     {
      "object": "project 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       }
      ]
     },
     {
      "object": "project 4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens"
       }
      ]
     },
     {
      "object": "user sample USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01-U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       }
      ]
     },
     {
      "object": "user sounds U17-U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next bank save keeps older drum sounds in their new format. New sounds and sounds you replace directly use versions Salt cannot read. Sounds this firmware cannot use stay stored unchanged until replaced. Salt’s DRAWBAR sounds use the instrument number this firmware uses for WHEEL, so they play as a different instrument. Saving also keeps the format changes made to the bank when it loaded"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads user sample USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate.",
     "WaveLoop FM-1 reads user sample USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate."
    ],
    "owner_text": "At risk by itself: screen preferences, calibration and favourites. At risk by itself, under a condition: project 1; project 2; project 3; project 4; user sample USR3. At risk when you act: user sample USR1; user sample USR2; user sounds U01-U16; user sounds U17-U32. WaveLoop FM-1 reads user sample USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. WaveLoop FM-1 reads user sample USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "pigeon",
    "name": "PIGEON",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "saved pattern A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "saved pattern D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "preferences, MIDI LEARN and panel calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (asks first)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "kept: WaveLoop FM-1 can read it"
       }
      ]
     },
     {
      "object": "shared song and drum sample bank",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you install WaveLoop FM-1",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "saved pattern B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "saved pattern C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "the older FM6 patch bank PIGEON no longer uses",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Later saves to the bank of FM6 patches for your sounds can erase the remaining old FM6 bank. When you return, firmware that needs the older bank cannot use FM6 patches saved in the new format. If a valid current bank of FM6 patches for your sounds remains, the older bank is not changed to the new format"
       }
      ]
     },
     {
      "object": "slice positions set by hand in the older format",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "partly lost"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "partly lost"
       },
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "partly lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "partly lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped",
        "effect": "partly lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "partly lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "partly lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "partly lost"
       }
      ]
     },
     {
      "object": "user sample USR3 in the older format",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "older FM6 patches for user presets",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "chops, drum-pad and performance edits",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1 in the older format",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2 in the older format",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "older user preset bank 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "older user preset bank 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads older FM6 patches for user presets until you write over the saved data. Changing a sound or its format can make its separate patch unavailable.",
     "WaveLoop FM-1 reads user sample USR1 in the older format until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads user sample USR2 in the older format until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads older user preset bank 1 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
     "WaveLoop FM-1 reads older user preset bank 2 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
     "WaveLoop FM-1 reads preferences, MIDI LEARN and panel calibration until you write over the saved data. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices."
    ],
    "owner_text": "At risk by itself: saved pattern A; saved pattern D; preferences, MIDI LEARN and panel calibration. At risk by itself, under a condition: shared song and drum sample bank; saved pattern B; saved pattern C; the older FM6 patch bank PIGEON no longer uses; slice positions set by hand in the older format; user sample USR3 in the older format; older FM6 patches for user presets. At risk when you act: chops, drum-pad and performance edits; user sample USR1 in the older format; user sample USR2 in the older format; older user preset bank 1; older user preset bank 2. WaveLoop FM-1 reads older FM6 patches for user presets until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop FM-1 reads user sample USR1 in the older format until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads user sample USR2 in the older format until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads older user preset bank 1 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. WaveLoop FM-1 reads older user preset bank 2 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. WaveLoop FM-1 reads preferences, MIDI LEARN and panel calibration until you write over the saved data. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fm1move",
    "name": "FM1 Move",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration, SYN kits and stored MIDI mappings",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "project 1",
      "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ]
     },
     {
      "object": "project 2",
      "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ]
     },
     {
      "object": "the working project kept by autosave",
      "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain",
      "ways": [
       {
        "way": "automatically during use [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you edit sample slice markers (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking) [uses its separate samples or sound setup]",
        "effect": "sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain"
       }
      ]
     },
     {
      "object": "sample slot USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01–U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sounds U17–U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "sample slot USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample slot USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads sample slot USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
     "WaveLoop FM-1 reads sample slot USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you."
    ],
    "owner_text": "At risk by itself: settings, calibration, SYN kits and stored MIDI mappings; project 1 (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain); project 2 (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain); the working project kept by autosave (sounds can change or stop playing when separate samples, FM6 patches or SYN kits are replaced; saved notes and sound settings remain). At risk by itself, under a condition: sample slot USR3. At risk when you act: user sounds U01–U16; user sounds U17–U32; sample slot USR1; sample slot USR2. WaveLoop FM-1 reads sample slot USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you. WaveLoop FM-1 reads sample slot USR2 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Saved samples may have no slice positions set by you.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fm1quest",
    "name": "FM1 Quest",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song section A",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use, from its second start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section D",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at its first start, after five seconds with playback stopped, no sound and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, panel mapping, song order and Quest preferences/progress",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the buttons and knob at power-on; cancelling also requests a settings save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a favourite mark or the filter for favourites (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a starred user sound, which also removes its favourite mark (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run MENU calibration, then close MENU (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MENU settings, display preferences or favourite changes from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section B",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song section C",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample USR3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Piano Hero P1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Piano Hero P2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Piano Hero P3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Piano Hero P4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Piano Hero P5",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Piano Hero P6",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM Hero H1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM Hero H2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM Hero H3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM Hero H4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if this song is chosen for automatic saving after loading, saving or restoring a session, and project slot D is empty, holds a session saved automatically for the next start or holds data WaveLoop cannot read; playback must be stopped, with five seconds of silence and no music changes",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or rename this song from the panel while playback has stopped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save this song or rename it from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM Hero H5",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM Hero H6",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if the song order or selection has unsaved changes and project slot D is empty, holds WaveLoop’s automatically saved session or holds data WaveLoop cannot read",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "working music (autosave)",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 or DRUM user sound (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current FM6 or DRUM sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds U01–U16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "user sounds U17–U32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: The next save, rename or erase in this bank saves the older sounds in the new format. They can change when you return to the previous firmware. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Some sounds play as a different instrument: SLOOP FM6 and Floyd sounds can become PHYS, SLOOP FM6 sounds using algorithm 4 can become DRUM, SLOOPDX sounds become ANALOG, and Quest SLICE sounds can become PHYS"
       }
      ]
     },
     {
      "object": "sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "WaveLoop FM-1 reads sample USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Only the first sample is stored in the same place. The other two sample slots use different storage."
    ],
    "owner_text": "At risk by itself: song section A; song section D; settings, panel mapping, song order and Quest preferences/progress. At risk by itself, under a condition: song section B; song section C; sample USR3; Piano Hero P1; Piano Hero P2; Piano Hero P3; Piano Hero P4; Piano Hero P5; Piano Hero P6; FM Hero H1; FM Hero H2; FM Hero H3; FM Hero H4; FM Hero H5; FM Hero H6. At risk when you act: working music (autosave); sample USR2; user sounds U01–U16; user sounds U17–U32; sample USR1. WaveLoop FM-1 reads sample USR1 until you write over the saved data. Playback follows this firmware’s loop rules. The other firmware’s extra loop modes may sound different. Only the first sample is stored in the same place. The other two sample slots use different storage.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "grooveos",
    "name": "Groove OS",
    "flags": "?",
    "weakest_grade": null,
    "at_risk": [],
    "possibly_at_risk": [
     "Groove project slot 1",
     "Groove project slot 2",
     "Groove project slot 3",
     "Groove resume autosave",
     "Groove sound bank A",
     "Groove sound bank B",
     "Groove sound bank C",
     "Groove sound bank D",
     "Groove custom drum sounds and kits",
     "Groove device preferences",
     "Groove crash reports"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Groove OS does not publish where or how it stores saved work, so data may be lost even where we cannot confirm shared storage. Before switching, use export all on its Projects page to save every project and the autosave. Use Save a backup on Your own sounds too: project exports remember the sounds but leave out the audio. Use Save a safety copy on Your FM-1 for the banks, songs, autosave and samples. Keep these files on your computer. Sound banks, custom sounds, settings and crash reports may be lost."
    ],
    "owner_text": "Possibly at risk (layout reported or inferred): Groove project slot 1; Groove project slot 2; Groove project slot 3; Groove resume autosave; Groove sound bank A; Groove sound bank B; Groove sound bank C; Groove sound bank D; Groove custom drum sounds and kits; Groove device preferences; Groove crash reports. Groove OS does not publish where or how it stores saved work, so data may be lost even where we cannot confirm shared storage. Before switching, use export all on its Projects page to save every project and the autosave. Use Save a backup on Your own sounds too: project exports remember the sounds but leave out the audio. Use Save a safety copy on Your FM-1 for the banks, songs, autosave and samples. Keep these files on your computer. Sound banks, custom sounds, settings and crash reports may be lost.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   }
  ],
  "when_you_leave": [
   {
    "to": "stock",
    "name": "Stock V15",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "song 1",
     "song 2",
     "song 3",
     "last session saved for the next start",
     "FM6 patches and controls for each drum in user sounds",
     "user sample USR1",
     "slice positions you set for USR1",
     "user sample USR2",
     "slice positions you set for USR2",
     "song 4",
     "song 5",
     "song 6",
     "song 7",
     "song 8",
     "song 9",
     "song 10",
     "song 11",
     "song 12",
     "song order and selection",
     "user sounds 1–16",
     "user sounds 17–32"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "baudgirl",
    "name": "Baud Girl FM-1+VA",
    "flags": "?",
    "weakest_grade": "inferred",
    "at_risk": [],
    "possibly_at_risk": [
     "song 1",
     "song 2",
     "song 3",
     "last session saved for the next start",
     "FM6 patches and controls for each drum in user sounds",
     "user sample USR1",
     "slice positions you set for USR1",
     "user sample USR2",
     "slice positions you set for USR2",
     "song 4",
     "song 5",
     "song 6",
     "song 7",
     "song 8",
     "song 9",
     "song 10",
     "song 11",
     "song 12",
     "song order and selection",
     "user sounds 1–16",
     "user sounds 17–32"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "felucca",
    "name": "Felucca",
    "flags": "CSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "kept: Felucca can read it"
       },
       {
        "way": "automatically, only if beta 2ND CORE is on and a sound calculation fails or takes too long",
        "effect": "kept: Felucca can read it"
       },
       {
        "way": "when you change settings from the editor (without asking)",
        "effect": "kept: Felucca can read it"
       },
       {
        "way": "when you erase a user preset (asks first: press again to confirm)",
        "effect": "kept: Felucca can read it"
       },
       {
        "way": "when you learn MIDI CC assignments (without asking)",
        "effect": "kept: Felucca can read it"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run hardware calibration (without asking)",
        "effect": "kept: Felucca can read it"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no valid current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you change slice positions in SLICE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you change slice positions in SLICE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you change slice positions in SLICE (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you change slice positions in SLICE (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a slot (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a slot (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Shared settings can keep beta 2ND CORE turned on from an earlier Felucca session. If a sound calculation fails or takes too long, settings may be saved later.",
     "Felucca reads FM6 patches and controls for each drum in user sounds until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop also saves patches with DRUM sounds. Other firmware does not use them as WaveLoop drum patches.",
     "Felucca reads user sample USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate.",
     "Felucca reads user sample USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate.",
     "Felucca reads user sounds 1–16 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
     "Felucca reads user sounds 17–32 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
     "Felucca reads settings, calibration and favourites until you write over the saved data. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk by itself, under a condition: FM6 patches and controls for each drum in user sounds. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2; user sounds 1–16; user sounds 17–32. Shared settings can keep beta 2ND CORE turned on from an earlier Felucca session. If a sound calculation fails or takes too long, settings may be saved later. Felucca reads FM6 patches and controls for each drum in user sounds until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop also saves patches with DRUM sounds. Other firmware does not use them as WaveLoop drum patches. Felucca reads user sample USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Felucca reads user sample USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Felucca reads user sounds 1–16 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Felucca reads user sounds 17–32 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Felucca reads settings, calibration and favourites until you write over the saved data. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "sloop",
    "name": "SLOOP",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "when you load a song file from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you load a song from the editor LIVE playlist (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start an update or enter UPDATE MODE",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically, only if SLOOP can still read older SLOOP settings with default MIDI controls and older working music whose drum MIDI channel differs from those settings (WaveLoop FM-1’s own settings cannot trigger this update)",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the controls (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you load a song file from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you load a song from the editor LIVE playlist (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save drum kits from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or remove a theme from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the song from the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold SAVE and press white key 5–8 to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you load a song file from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you load a song from the editor LIVE playlist (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section from the web editor LIVE page (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold SAVE and press white key 5–8 to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you load a song file from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you load a song from the editor LIVE playlist (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section from the web editor LIVE page (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold SAVE and press white key 5–8 to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you load a song file from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you load a song from the editor LIVE playlist (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section from the web editor LIVE page (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold SAVE and press white key 5–8 to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you load a song file from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you load a song from the editor LIVE playlist (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section from the web editor LIVE page (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you save selected DX7 voices from the editor (the computer asks first about the slots it fills; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you save selected DX7 voices from the editor (the computer asks first about the slots it fills; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "SLOOP reads user sample USR1 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it.",
     "SLOOP reads user sample USR2 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it.",
     "SLOOP keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
     "SLOOP keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2; user sounds 1–16; user sounds 17–32. SLOOP reads user sample USR1 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. SLOOP reads user sample USR2 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. SLOOP keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound. SLOOP keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "x0x",
    "name": "X0X",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you back up unsaved project changes over USB (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you reset to factory settings (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup over USB with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you back up unsaved project changes over USB (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you reset to factory settings (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup over USB with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you back up unsaved project changes over USB (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you reset to factory settings (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup over USB with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you back up unsaved project changes over USB (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you reset to factory settings (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup over USB with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you back up unsaved project changes over USB (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you reset to factory settings (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup over USB with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically, only if X0X crashed while 2ND CORE was on and then restarted without being switched off",
        "effect": "lost"
       },
       {
        "way": "when you back up unsaved project changes over USB (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you reset to factory settings (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup over USB with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you run hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you upload samples or break loops (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "After you confirm a restore on the computer, X0X starts erasing before asking again on the FM-1. Saying no keeps X0X’s current project but does not bring back erased data from your previous firmware, even if the computer says nothing changed.",
     "X0X reads user sample USR1 until you write over the saved data. Each zone plays as a separate repeating break loop (up to 16 per sample). Key ranges, root notes, loop points and slice markers are not used.",
     "X0X reads user sample USR2 until you write over the saved data. Each zone plays as a separate repeating break loop (up to 16 per sample). Key ranges, root notes, loop points and slice markers are not used."
    ],
    "owner_text": "At risk by itself: song 1; song 2; song 3; last session saved for the next start; user sounds 17–32; settings, calibration and favourites. At risk when you act: slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sample USR1; user sample USR2. After you confirm a restore on the computer, X0X starts erasing before asking again on the FM-1. Saying no keeps X0X’s current project but does not bring back erased data from your previous firmware, even if the computer says nothing changed. X0X reads user sample USR1 until you write over the saved data. Each zone plays as a separate repeating break loop (up to 16 per sample). Key ranges, root notes, loop points and slice markers are not used. X0X reads user sample USR2 until you write over the saved data. Each zone plays as a separate repeating break loop (up to 16 per sample). Key ranges, root notes, loop points and slice markers are not used.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "jiant",
    "name": "JIANT",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you select a song using MIDI PROGRAM CHANGE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you switch song or project (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "automatically, only if the shared preferences it reads still need JIANT’s first-start update",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you calibrate the controls (without asking)",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you change settings from the web editor (without asking)",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you mark a favourite with a star (without asking)",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if no readable bank of FM6 patches for your sounds survives and a compatible old FM6 bank is present",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you erase a slot (asks for that slot only: press again to confirm; writes the whole bank) [uses its associated sound bank]",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank) [uses its associated sound bank]",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you rename a slot (without asking; writes the whole bank) [uses its associated sound bank]",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank) [uses its associated sound bank]",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you save an FM6 user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank) [uses its associated sound bank]",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you send an FM6 user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you store the current FM6 sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank) [uses its associated sound bank]",
        "effect": "changed to the new format: Saving, erasing or renaming anything in the sound bank saves the changed sounds. They still cannot use their own FM6 patches when you return to your previous firmware. WaveLoop DRUM sounds also lose their controls for each drum when you return. JIANT changes saved sounds when it loads them, so they stop using their own FM6 patches. They use a factory patch or the initial voice instead. It also changes WaveLoop DRUM sounds, so they stop using their saved controls for each drum"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you rename a slot (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you make a song with several sections using GEN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you store a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you rename a slot (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a slot (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you rename a slot (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware. JIANT no longer has SAMPLE, GRAIN, SLICE or PHYS. Those sounds use its initial ANALOG sound, except old drum and percussion sounds, which become DRUM sounds. Imported names and patterns do not mean the original sample audio or sound is kept"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: song 12; settings, calibration and favourites. At risk by itself, under a condition: FM6 patches and controls for each drum in user sounds. At risk when you act: song 1; song 2; song 3; last session saved for the next start; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; user sounds 1–16; user sounds 17–32.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "melodee",
    "name": "Melodee",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the controls (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change a setting on the panel or in the menu (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change settings from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you mark a favourite with a star (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a template (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a matching saved preset bank needs repair or a change of format, or changing older Prophet sounds to the new format needs extra storage space",
        "effect": "lost"
       },
       {
        "way": "automatically, only if erasing all user presets was confirmed earlier but stopped before it finished",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing all user presets to recover from a problem (asks first: press the button to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you import SysEx sound data into slots (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store the current sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you quick-save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you quick-save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you quick-save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you quick-save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: user sounds 1–16; user sounds 17–32; settings, calibration and favourites. At risk by itself, under a condition: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection. At risk when you act: user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fomni",
    "name": "FoMni",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you run hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: user sounds 1–16.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "amb",
    "name": "AMB-1",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you run hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: user sounds 1–16.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "choralroot",
    "name": "ChoralRoot",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if an older ChoralRoot favourites save is still stored and the space for its next save still contains data",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if an older ChoralRoot session save is still stored and the space for its next save still contains data",
        "effect": "lost"
       },
       {
        "way": "automatically, only if an older ChoralRoot sound collection is still saved and the space for its next save still contains data",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if the space for its next save still needs clearing after a save or a failed start-up cleanup",
        "effect": "lost"
       },
       {
        "way": "automatically, only if there is no saved sound collection and at least one supported older user sound can be read",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you choose Import 0.21 sounds from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you choose Overwrite or Save as new and press OCT+ or SAVE (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you choose Place all from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you choose a voice from a DX7 or CZ bank on the installer page and import it (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Reset Settings with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm deletion or reset with OCT+ (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you delete a sound from the installer page (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you delete a sound with the computer question skipped (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you delete a sound with the computer tool (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you delete all user sounds or reset sounds to factory defaults from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you delete selected sounds from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you hold OCT- and OCT+ while powering on (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you hold SAVE for a global save (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you import a Digitone sound from the installer page (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you import a sound file or one DX7 or CZ voice from the installer page (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you import a sound or a DX7 or CZ voice with the computer question skipped (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you import a sound or a DX7 or CZ voice with the computer tool (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you keep calibration or enter update mode by holding OCT- + OCT+ + HOME for 5 s (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you move or swap sounds from the device manager (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you place a sound as new or back in its saved factory position from the device manager (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you place several selected sounds from the device manager (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you rename a sound from the device manager and enter its new name (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you rename a sound from the installer page and enter its new name (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you rename a sound with the computer tool (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you replace a selected user sound from the device manager (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you replace factory sounds from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore factory order from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore factory presets from the device manager (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore favourite marks from the computer (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore favourite marks with the computer question skipped (without asking)",
        "effect": "damaged (part written over)"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "automatically during use [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if an older ChoralRoot favourites save is still stored and the space for its next save still contains data [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only if an older ChoralRoot session save is still stored and the space for its next save still contains data [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "automatically, only if an older ChoralRoot sound collection is still saved and the space for its next save still contains data",
        "effect": "lost"
       },
       {
        "way": "automatically, only if the space for its next save still needs clearing after a save or a failed start-up cleanup",
        "effect": "lost"
       },
       {
        "way": "automatically, only if there is no saved sound collection and at least one supported older user sound can be read [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you choose Import 0.21 sounds from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you choose Overwrite or Save as new and press OCT+ or SAVE (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you choose Place all from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you choose a voice from a DX7 or CZ bank on the installer page and import it (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Reset Settings with OCT+ twice (asks first: press again to confirm) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you confirm deletion or reset with OCT+ (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you delete a sound from the installer page (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you delete a sound with the computer question skipped (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you delete a sound with the computer tool (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you delete all user sounds or reset sounds to factory defaults from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you delete selected sounds from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you hold OCT- and OCT+ while powering on (without asking) [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you hold SAVE for a global save (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you import a Digitone sound from the installer page (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you import a sound file or one DX7 or CZ voice from the installer page (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you import a sound or a DX7 or CZ voice with the computer question skipped (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you import a sound or a DX7 or CZ voice with the computer tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you keep calibration or enter update mode by holding OCT- + OCT+ + HOME for 5 s (without asking) [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you move or swap sounds from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a sound as new or back in its saved factory position from the device manager (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you place several selected sounds from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a sound from the device manager and enter its new name (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you rename a sound from the installer page and enter its new name (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you rename a sound with the computer tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you replace a selected user sound from the device manager (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you replace factory sounds from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore factory order from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore factory presets from the device manager (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore favourite marks from the computer (the computer asks first) [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore favourite marks with the computer question skipped (without asking) [uses its sample]",
        "effect": "damaged (part written over)"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose Undo from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE after recording, editing or clearing this loop (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you place a loop from the device manager (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC in Advance mode when the current loop is not empty (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you swap loop slots from the device manager (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return"
       },
       {
        "way": "automatically, only if a processor failure blocked Dual Core while its saved setting was On",
        "effect": "changed to the new format: After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return"
       },
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm Reset Settings with OCT+ twice (asks first: press again to confirm)",
        "effect": "changed to the new format: After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return"
       },
       {
        "way": "when you hold OCT- and OCT+ while powering on (without asking)",
        "effect": "changed to the new format: After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return"
       },
       {
        "way": "when you hold SAVE for a global save (without asking)",
        "effect": "changed to the new format: After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return"
       },
       {
        "way": "when you keep calibration or enter update mode by holding OCT- + OCT+ + HOME for 5 s (without asking)",
        "effect": "changed to the new format: After ChoralRoot saves these settings, WaveLoop FM-1 cannot read the newer saved copy. It uses default preferences and panel calibration when you return"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a DX7 bank (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking)",
        "effect": "damaged (part written over)"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the installer page, device manager or computer tool (the computer asks once before restoring the whole backup) [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup with the computer question skipped (without asking) [uses its sample]",
        "effect": "damaged (part written over)"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm Flash Data erase with OCT+ twice (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "ChoralRoot reads user sounds 1–16 until you write over the saved data. Imported sounds may sound different, even if their names are kept. Confirming Flash Data erases the older banks they came from.",
     "ChoralRoot reads user sounds 17–32 until you write over the saved data. Imported sounds may sound different, even if their names are kept. Confirming Flash Data erases the older banks they came from."
    ],
    "owner_text": "At risk by itself: user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sounds 1–16; user sounds 17–32. ChoralRoot reads user sounds 1–16 until you write over the saved data. Imported sounds may sound different, even if their names are kept. Confirming Flash Data erases the older banks they came from. ChoralRoot reads user sounds 17–32 until you write over the saved data. Imported sounds may sound different, even if their names are kept. Confirming Flash Data erases the older banks they came from.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "ghoulbox",
    "name": "GHOULBOX",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you calibrate the controls (without asking)",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you change settings from the web editor (without asking)",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you erase a user preset (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: A later settings save stores the changed shared choices. If you return to your previous firmware, its preferences can change even though calibration and many settings are kept"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if no readable bank of FM6 patches for your sounds is left and a compatible older FM6 bank is still stored",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "changed to the new format: The next project save stores the new format. Your previous firmware may then show the project as empty. It does not try an older saved copy just because it cannot read the newest project’s format. WaveLoop’s controls for each drum are not restored, so drum tracks can sound different. Its larger song system is not imported"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you leave SLICES after editing slice positions set by hand (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you leave SLICES after editing slice positions set by hand (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user preset (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you rename a user preset (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user preset (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you rename a user preset (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving any preset in the bank also saves sounds changed to the new format when loaded. Those sounds can change when you return to your previous firmware"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you leave SLICES after editing slice positions set by hand (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you leave SLICES after editing slice positions set by hand (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "GHOULBOX reads FM6 patches and controls for each drum in user sounds until you write over the saved data.",
     "GHOULBOX reads user sample USR1 until you write over the saved data.",
     "GHOULBOX reads user sample USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk by itself, under a condition: FM6 patches and controls for each drum in user sounds. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32; user sample USR1; user sample USR2. GHOULBOX reads FM6 patches and controls for each drum in user sounds until you write over the saved data. GHOULBOX reads user sample USR1 until you write over the saved data. GHOULBOX reads user sample USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "mvaveopen",
    "name": "M-VAVE FM-1 Open",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "by itself right after the Workbench installs Open",
        "effect": "lost"
       },
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "by itself right after the Workbench installs Open",
        "effect": "lost"
       },
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "by itself right after the Workbench installs Open",
        "effect": "lost"
       },
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "by itself right after the Workbench installs Open",
        "effect": "lost"
       },
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "by itself right after the Workbench installs Open",
        "effect": "lost"
       },
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a complete sample-bank upload through MIDI (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you write the sample bank to the device (the computer asks first)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Workbench adds Open's built-in samples right after installing it, without asking about samples. This replaces only the items marked 'by itself right after the Workbench installs Open', before you can save anything. This follows Open V12's source code; the downloaded Workbench has not been checked against it."
    ],
    "owner_text": "At risk by itself: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds. At risk when you act: user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32; settings, calibration and favourites. Workbench adds Open's built-in samples right after installing it, without asking about samples. This replaces only the items marked 'by itself right after the Workbench installs Open', before you can save anything. This follows Open V12's source code; the downloaded Workbench has not been checked against it.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fm106",
    "name": "FM-106",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you confirm deletion of the active user slot (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE in the save screen (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you release a short SAVE (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "FM-106 Beta4 does not save edited user sounds, even when it says the save worked. Export them before turning off the FM-1 or changing firmware again."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. FM-106 Beta4 does not save edited user sounds, even when it says the save worked. Export them before turning off the FM-1 or changing firmware again.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "hortator",
    "name": "Hortator",
    "flags": "ASK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the panel (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you remember or forget a Bluetooth device (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [
     "user sample USR1 (Hortator uses its own one-shot sound engines, so saved loops and slices play differently)",
     "user sample USR2 (Hortator uses its own one-shot sound engines, so saved loops and slices play differently)"
    ],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start. Carried over: user sample USR1 (Hortator uses its own one-shot sound engines, so saved loops and slices play differently); user sample USR2 (Hortator uses its own one-shot sound engines, so saved loops and slices play differently).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "obervave",
    "name": "OberVave",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you tap SAVE twice outside the sequencer (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: settings, calibration and favourites.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "polly",
    "name": "Polly",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you choose COPY SONG (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you copy a Band groove with SAVE and a white key (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking) [uses its sample]",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you confirm FACTORY RESET (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you confirm NEW SONG or FREE (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the computer",
        "effect": "lost"
       },
       {
        "way": "when you send a backup for USB restore with computer questions skipped (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start a USB backup while playback is stopped, or enter a test session (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you complete power-on hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install a QY70 style bank from the computer (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a QY70 style bank directly with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "After you agree to restore on the computer, Polly starts erasing before the FM-1 asks. Saying no on the FM-1 keeps Polly’s current project, but cannot bring back erased data from your previous firmware, even if the computer says nothing changed."
    ],
    "owner_text": "At risk by itself: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; settings, calibration and favourites. At risk when you act: song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32. After you agree to restore on the computer, Polly starts erasing before the FM-1 asks. Saying no on the FM-1 keeps Polly’s current project, but cannot bring back erased data from your previous firmware, even if the computer says nothing changed.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "skiff",
    "name": "Skiff",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed automatically: Skiff can use or clear some shared preferences and save without asking. Its settings updates can replace both saved copies. Keeping calibration does not mean all saved settings survive"
       },
       {
        "way": "automatically, only if Skiff has not yet made its one-time settings changes",
        "effect": "changed automatically: Skiff can use or clear some shared preferences and save without asking. Its settings updates can replace both saved copies. Keeping calibration does not mean all saved settings survive"
       },
       {
        "way": "automatically, only if Skiff starts without recovering from a crash, freeze or failed start and has not already cleared the old scene storage",
        "effect": "changed automatically: Skiff can use or clear some shared preferences and save without asking. Its settings updates can replace both saved copies. Keeping calibration does not mean all saved settings survive"
       },
       {
        "way": "when you calibrate the panel or change editor preferences (without asking)",
        "effect": "changed automatically: Skiff can use or clear some shared preferences and save without asking. Its settings updates can replace both saved copies. Keeping calibration does not mean all saved settings survive"
       },
       {
        "way": "when you confirm RESET SETTINGS (asks first: press again to confirm)",
        "effect": "changed automatically: Skiff can use or clear some shared preferences and save without asking. Its settings updates can replace both saved copies. Keeping calibration does not mean all saved settings survive"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing a sample slot (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing a sample slot (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing a sample slot (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you confirm erasing a sample slot (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if Skiff starts without recovering from a crash, freeze or failed start, can read an older project that needs a new format and there is room to save its patterns",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose RENAME in the web editor (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose SAVE AS in the web editor (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you rename a saved project (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you save a project with the web editor’s older save command (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if Skiff starts without recovering from a crash, freeze or failed start, can read an older project that needs a new format and there is room to save its patterns",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose RENAME in the web editor (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose SAVE AS in the web editor (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you rename a saved project (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you save a project with the web editor’s older save command (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if Skiff starts without recovering from a crash, freeze or failed start, can read an older project that needs a new format and there is room to save its patterns",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose RENAME in the web editor (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose SAVE AS in the web editor (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you rename a saved project (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you save a project with the web editor’s older save command (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if Skiff starts without recovering from a crash, freeze or failed start, can read an older project that needs a new format and there is room to save its patterns",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose RENAME in the web editor (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you choose SAVE AS in the web editor (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you rename a saved project (without asking)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       },
       {
        "way": "when you save a project with the web editor’s older save command (the computer asks first)",
        "effect": "changed to the new format: Once Skiff writes the converted project, returning to the previous firmware cannot load that new project copy; its surviving older copy is not a backup guarantee. This changes how the project is stored and plays. This firmware change has not been tested on an FM-1"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a valid older FM6 patch bank is still stored and no current set of FM6 patches can be loaded",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store an FM6 sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm a sample upload in the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save, import, erase or rename a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save, import, erase or rename a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, importing, erasing or renaming any sound writes the whole bank with Skiff’s changed sounds. Your previous firmware may play changed sounds or show sounds it cannot read as empty. New Skiff sounds use a newer saved format than firmwares that accept only version 1–3. The same saved sound format does not guarantee the same sound or pattern playback"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Skiff reads FM6 patches and controls for each drum in user sounds until you write over the saved data. A separate saved FM6 patch works only while its matching FM6 user sound is still stored.",
     "Skiff reads user sample USR1 until you write over the saved data. Skiff uses its own sound engines, so saved loops or slices can play differently.",
     "Skiff reads user sample USR2 until you write over the saved data. Skiff uses its own sound engines, so saved loops or slices can play differently."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2. At risk by itself, under a condition: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds. At risk when you act: song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32. Skiff reads FM6 patches and controls for each drum in user sounds until you write over the saved data. A separate saved FM6 patch works only while its matching FM6 user sound is still stored. Skiff reads user sample USR1 until you write over the saved data. Skiff uses its own sound engines, so saved loops or slices can play differently. Skiff reads user sample USR2 until you write over the saved data. Skiff uses its own sound engines, so saved loops or slices can play differently.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "sloopdx",
    "name": "sloopDX",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically, only when the working loop has unsaved changes, no song is playing, and you start an update or enter UPDATE MODE",
        "effect": "lost"
       },
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only when you leave a bank with unsaved voice changes and a bank is active",
        "effect": "lost"
       },
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you erase the selected bank from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save MY KIT by tapping SAVE twice from KIT or LANE (asks first: press again to confirm)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you save the active bank by tapping EDIT twice on Store (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank from the DX7 list (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send MY KIT from the web editor (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a DX7 bank from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a DX7 bank with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically, only when the saved input setting selects one MIDI channel rather than NOTES or CLOCK",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the controls at power-on (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send settings, MIDI controls or a theme with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when you leave a bank with unsaved voice changes and a bank is active",
        "effect": "lost"
       },
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you erase the selected bank from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank by tapping EDIT twice on Store (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank from the DX7 list (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a DX7 bank from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a DX7 bank with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when you leave a bank with unsaved voice changes and a bank is active",
        "effect": "lost"
       },
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you erase the selected bank from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank by tapping EDIT twice on Store (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank from the DX7 list (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the active bank from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a DX7 bank from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a DX7 bank with a computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section and confirm it on the SECTION page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a section with SAVE and white keys 5–8 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section and confirm it on the SECTION page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a section with SAVE and white keys 5–8 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section and confirm it on the SECTION page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a section with SAVE and white keys 5–8 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section and confirm it on the SECTION page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a section with SAVE and white keys 5–8 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a user sound (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose FACTORY RESET in ABOUT and confirm (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a user sound (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "sloopDX keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
     "sloopDX keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; user sample USR2; settings, calibration and favourites. At risk by itself, under a condition: user sample USR1; slice positions you set for USR1. At risk when you act: song 1; song 2; song 3; last session saved for the next start; user sounds 1–16; user sounds 17–32. sloopDX keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound. sloopDX keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "rainbow",
    "name": "Rainbow Mode",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "automatically, only if a greeting name was entered in the installer",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you change Rainbow preferences or save its greeting name (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you erase a user preset (asks first: press again to confirm)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you run hardware calibration (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you send settings or a name from the editor (without asking)",
        "effect": "changed to the new format: Rainbow stores its WRITE song, greeting, hat and volume with settings and favourites. Loading or later saving those settings can change the song and choices; changing firmware and then returning to Rainbow does not preserve all of them. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if a compatible older FM6 bank remains and there is no current bank of FM6 patches for your sounds",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save an FM6 user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you send an FM6 user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       },
       {
        "way": "when you store the current FM6 sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that patch)"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you rename a project (without asking)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: Saving this project here uses this firmware’s format. The previous firmware may no longer read it. Save a separate backup before changing its format. Playback uses this firmware’s instruments and control meanings. Saved music may sound different even if it opens. WaveLoop DRUM uses its stored FM6 patch differently. The page and chosen song from WaveLoop’s automatically saved session are not restored here"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice markers (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user preset (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user preset (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user preset (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you rename a user preset (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user preset (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store the current sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Rainbow Mode reads FM6 patches and controls for each drum in user sounds until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop also saves patches with DRUM sounds. Other firmware does not use them as WaveLoop drum patches.",
     "Rainbow Mode reads user sample USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate.",
     "Rainbow Mode reads user sample USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate.",
     "Rainbow Mode reads user sounds 1–16 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
     "Rainbow Mode reads user sounds 17–32 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk by itself, under a condition: FM6 patches and controls for each drum in user sounds. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2; user sounds 1–16; user sounds 17–32. Rainbow Mode reads FM6 patches and controls for each drum in user sounds until you write over the saved data. Changing a sound or its format can make its separate patch unavailable. WaveLoop also saves patches with DRUM sounds. Other firmware does not use them as WaveLoop drum patches. Rainbow Mode reads user sample USR1 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Rainbow Mode reads user sample USR2 until you write over the saved data. Only data in this sample slot is read. Other saved work is separate. Rainbow Mode reads user sounds 1–16 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question. Rainbow Mode reads user sounds 17–32 until you write over the saved data. Only sounds this firmware can read will play. Saving into a slot it cannot read can replace it without an overwrite question.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "duell",
    "name": "DUELL beta",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the panel (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change MIDI LEARN (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you change USB serial settings from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you change preferences from the editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user wavetable directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you send a user wavetable directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a user wavetable from the editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user wavetable directly with a MIDI tool (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a user wavetable directly with a MIDI tool (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a user wavetable from the editor (without asking) [uses its sample]",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save a multi from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a pattern (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a pattern (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a pattern (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase all saved data (asks first: press again to confirm)",
        "effect": "lost"
       },
       {
        "way": "when you install DUELL with Erase saved data enabled (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a patch on the panel (asks for that slot only: press the button to confirm; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or import a patch from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send a patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send backup restore commands directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send the erase-all command directly with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "The installer starts with its erase option selected for this firmware change. Clear it before installing to avoid this extra erase."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32. The installer starts with its erase option selected for this firmware change. Clear it before installing to avoid this extra erase.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fimba",
    "name": "FiMba-1 beta",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE briefly (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you complete hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: user sounds 1–16.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "maku",
    "name": "MAKU",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "FM6 patches and controls for each drum in user sounds",
     "settings, calibration and favourites"
    ],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Carried over: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fart",
    "name": "Fart Machine One",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you complete hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Fart Machine One does not import or save a music setup or loop. SAVE does nothing. Its recorded loop, tempo and effect choices last only while it stays on. Calibration is separate."
    ],
    "owner_text": "At risk when you act: user sounds 1–16. Fart Machine One does not import or save a music setup or loop. SAVE does nothing. Its recorded loop, tempo and effect choices last only while it stays on. Calibration is separate.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "chord",
    "name": "fm1-chord",
    "flags": "ASK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       },
       {
        "way": "automatically during use",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       },
       {
        "way": "when you calibrate the controls (without asking)",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       },
       {
        "way": "when you change favourites or their filter (without asking)",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       },
       {
        "way": "when you erase a user preset (asks first: press again to confirm)",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       },
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a chord preset (without asking)",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       },
       {
        "way": "when you send preferences from the web editor (without asking)",
        "effect": "changed to the new format: Once fm1-chord saves its settings, WaveLoop FM-1 cannot read the newer saved copy when you return. Shared preferences and panel calibration may use defaults"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a chord preset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a chord preset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a chord preset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a project (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a chord preset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project (asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send an FM6 bank patch from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase an FM6 bank patch directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice positions set by hand (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice positions set by hand (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you send, store or erase a user sound directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound (asks for that slot only: press again to confirm; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you erase a user sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you perform factory reset (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you rename a user sound (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a user sound (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you send, store or erase a user sound directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       },
       {
        "way": "when you store the current sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, erasing or renaming anything in this sound bank saves all its sounds, including any changed to the new format. They can sound different when you return to your older firmware. Some sound engine numbers and controls mean different things, so a listed sound may play differently. The separate FM6 patches for those sounds are not recovered"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice positions set by hand (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you edit sample slice positions set by hand (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or clear a user sample (the computer asks first)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "fm1-chord reads user sample USR1 until you write over the saved data. Saved loop choices use ordinary looping. The ends of loops held by a gate signal can sound different. Only matching saved SLICE markers are restored.",
     "fm1-chord reads user sample USR2 until you write over the saved data. Saved loop choices use ordinary looping. The ends of loops held by a gate signal can sound different. Only matching saved SLICE markers are restored."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32; user sample USR1; user sample USR2. fm1-chord reads user sample USR1 until you write over the saved data. Saved loop choices use ordinary looping. The ends of loops held by a gate signal can sound different. Only matching saved SLICE markers are restored. fm1-chord reads user sample USR2 until you write over the saved data. Saved loop choices use ordinary looping. The ends of loops held by a gate signal can sound different. Only matching saved SLICE markers are restored.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "sloopbanks",
    "name": "SLOOP DX7 Banks",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically, only when the working loop has unsaved changes, no song is playing, and you start an update, enter UPDATE MODE or restart with the computer tool",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you have restored a working loop from a backup",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the controls (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save SYN drum kits from the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a song order from the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a section on the SAVE PROJECT page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section with SAVE and a section key (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a section on the SAVE PROJECT page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section with SAVE and a section key (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a section on the SAVE PROJECT page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section with SAVE and a section key (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a section on the SAVE PROJECT page (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section with SAVE and a section key (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample kit to USR3 and USR4 (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample set from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a USER sound on the FM-1 (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save selected DX7 voices from the editor (the computer asks first about the slots it fills; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a USER sound on the FM-1 (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save selected DX7 voices from the editor (the computer asks first about the slots it fills; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "SLOOP DX7 Banks reads user sample USR1 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops.",
     "SLOOP DX7 Banks reads user sample USR2 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops.",
     "SLOOP DX7 Banks keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
     "SLOOP DX7 Banks keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2; user sounds 1–16; user sounds 17–32. SLOOP DX7 Banks reads user sample USR1 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops. SLOOP DX7 Banks reads user sample USR2 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops. SLOOP DX7 Banks keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound. SLOOP DX7 Banks keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fumi",
    "name": "FuMi-1",
    "flags": "AS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you complete hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk when you act: user sounds 1–16.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "jangada",
    "name": "Jangada",
    "flags": "ASK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically during use (if the second core fails and playback stops, with AUTO selected by default)",
        "effect": "lost"
       },
       {
        "way": "when you enter power-on hardware calibration (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you learn or clear MIDI CC mappings (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you set screen colours from the USB console (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm SAVE for project 1 (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm SAVE for project 2 (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm SAVE for project 3 (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you confirm SAVE for project 4 (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a project in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a user preset (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you send user sounds to Jangada with a computer tool, without the web editor (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you store a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a user sound from the editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a user preset (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you send a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you send user sounds to Jangada with a computer tool, without the web editor (without asking; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       },
       {
        "way": "when you store a user sound from the editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: Saving, renaming or erasing any sound in this group writes all sixteen sounds in Jangada’s format. WaveLoop FM-1 cannot read that group when you return. Sounds Jangada could not import are lost. Only older version 1 sounds can be imported. Newer versions look empty and are lost when this group is saved again"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase user samples or restore an empty sample slot in Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to Jangada with a computer tool, without the web editor (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send user samples to the FM-1 from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Jangada reads user sample USR1 until you write over the saved data.",
     "Jangada reads user sample USR2 until you write over the saved data."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32; user sample USR1; user sample USR2. Jangada reads user sample USR1 until you write over the saved data. Jangada reads user sample USR2 until you write over the saved data.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "orbit",
    "name": "ORBIT",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically, only if it can resume music saved in a SLOOP format from before version 2.6 with a usable drum MIDI channel, and your saved settings include SYN drum kits but no MIDI controls or channels",
        "effect": "lost"
       },
       {
        "way": "automatically, only when song order has an unsaved change as an update or restart starts",
        "effect": "lost"
       },
       {
        "way": "when you hold both OCT buttons as you turn it on to calibrate the controls (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE on the SONG screen (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send settings or MIDI control assignments with a computer tool or store SYN kits from the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored during playback or before a restart is still waiting to be saved",
        "effect": "lost"
       },
       {
        "way": "when you choose SAVE > PROJECT > SAVE and repeat the action before the time runs out (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE and press white key 5–8 to save section A–D (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save, restore or clear a section with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored during playback or before a restart is still waiting to be saved",
        "effect": "lost"
       },
       {
        "way": "when you choose SAVE > PROJECT > SAVE and repeat the action before the time runs out (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE and press white key 5–8 to save section A–D (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save, restore or clear a section with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored during playback or before a restart is still waiting to be saved",
        "effect": "lost"
       },
       {
        "way": "when you choose SAVE > PROJECT > SAVE and repeat the action before the time runs out (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE and press white key 5–8 to save section A–D (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save, restore or clear a section with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored during playback or before a restart is still waiting to be saved",
        "effect": "lost"
       },
       {
        "way": "when you choose SAVE > PROJECT > SAVE and repeat the action before the time runs out (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you hold SAVE and press white key 5–8 to save section A–D (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save, restore or clear a section with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose SAVE > USER > SAVE or ERASE and repeat the action (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you erase a used USER sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you send, erase, rename or restore user sounds with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store DX7 cartridge voices with optional USER sound links from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you store a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you choose SAVE > USER > SAVE or ERASE and repeat the action (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you erase a used USER sound from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you send, erase, rename or restore user sounds with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store DX7 cartridge voices with optional USER sound links from the web editor (the computer asks first for that slot only; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       },
       {
        "way": "when you store a user sound from the web editor (does not ask if that slot is empty; writes the whole bank)",
        "effect": "changed to the new format: the next save, erase or rename in this sound bank saves the whole bank in the new format; newer-format sounds shown as empty are lost, and the previous firmware cannot read the bank. Only older version-1 sounds can change to this format; engine numbers and sound controls may mean different things and change how they play"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the web editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or restore a sample with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample, CHOP selection or drum kit from the web editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "ORBIT reads user sample USR1 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules.",
     "ORBIT reads user sample USR2 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk by itself, under a condition: song 1; song 2; song 3; last session saved for the next start. At risk when you act: slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32; user sample USR1; user sample USR2. ORBIT reads user sample USR1 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules. ORBIT reads user sample USR2 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "floyd",
    "name": "SLOOP Floyd FM",
    "flags": "ASK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you calibrate the controls from HOME and close the menu (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you start calibrating the controls at power-on (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you press REC on the SONG screen to save a section and the song order (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save a section (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as a section (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [
     "user sounds 1–16 (Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound)",
     "user sounds 17–32 (Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound)"
    ],
    "notes": [
     "SLOOP Floyd FM reads user sample USR1 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops.",
     "SLOOP Floyd FM reads user sample USR2 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2. Kept but not shown: user sounds 1–16 (Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound); user sounds 17–32 (Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound). SLOOP Floyd FM reads user sample USR1 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops. SLOOP Floyd FM reads user sample USR2 until you write over the saved data. Audio loads only if it fits this slot. Sending to or erasing this slot replaces it. Extra slice markers are ignored. Held loops play as ordinary loops.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "winampfm",
    "name": "winampFM Synth",
    "flags": "ACSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode, start a firmware update or restart from the computer",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "automatically, only if it can resume music saved in a SLOOP format from before version 2.6 with a different usable drum MIDI channel, and your saved settings include SYN drum kits but no MIDI controls or channels",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode, start a firmware update or restart from the computer",
        "effect": "lost"
       },
       {
        "way": "when you record the current music into the selected song section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore preferences or store SYN drum kits directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the song order (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored is still waiting to be saved after a restart",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode, start a firmware update or restart from the computer",
        "effect": "lost"
       },
       {
        "way": "when you record the current music into the selected song section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore section A directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the selected project slot with the PROJECT GO knob (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you store section A (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored is still waiting to be saved after a restart",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode, start a firmware update or restart from the computer",
        "effect": "lost"
       },
       {
        "way": "when you record the current music into the selected song section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore section B directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the selected project slot with the PROJECT GO knob (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you store section B (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored is still waiting to be saved after a restart",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode, start a firmware update or restart from the computer",
        "effect": "lost"
       },
       {
        "way": "when you record the current music into the selected song section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore section C directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the selected project slot with the PROJECT GO knob (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you store section C (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a section you stored is still waiting to be saved after a restart",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode, start a firmware update or restart from the computer",
        "effect": "lost"
       },
       {
        "way": "when you record the current music into the selected song section (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore section D directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the selected project slot with the PROJECT GO knob (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you store section D (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR1 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR1 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR2 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR2 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR3 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR1 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR1 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you hold REC in IMPORTER to erase USR2 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase USR2 with a MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a user-sound bank directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a user sound with a USER GO knob (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send, store or erase a user sound directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a user-sound bank directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a user sound with a USER GO knob (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you send, store or erase a user sound directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "winampFM Synth reads user sample USR1 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules.",
     "winampFM Synth reads user sample USR2 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules.",
     "winampFM Synth keeps stored but does not show user sounds 1–16 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play.",
     "winampFM Synth keeps stored but does not show user sounds 17–32 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk by itself, under a condition: song 1; song 2; song 3; last session saved for the next start. At risk when you act: slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2; user sounds 1–16; user sounds 17–32. winampFM Synth reads user sample USR1 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules. winampFM Synth reads user sample USR2 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules. winampFM Synth keeps stored but does not show user sounds 1–16 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play. winampFM Synth keeps stored but does not show user sounds 17–32 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "bubba",
    "name": "Bubba Machine (beta)",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "damaged (part written over)"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start [uses its sample]",
        "effect": "damaged (part written over)"
       },
       {
        "way": "automatically during use (its autosave is on by default) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when you select a different pattern while playback is stopped and the current pattern or one waiting to be saved needs saving [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you copy to another pattern (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you save a pattern or Save As (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you save song and scenes (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you load or remove a screen language pack (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use (its autosave is on by default)",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when a new recording finishes and playback is stopped",
        "effect": "lost"
       },
       {
        "way": "automatically, only when older Bubba settings or patterns cause it to reset the space holding your data (with older patterns, takes and sounds are kept)",
        "effect": "lost"
       },
       {
        "way": "when you load or remove a screen language pack (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sound or DX7 bank from the control page or with the computer tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a take from the control page or with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you load or remove a screen language pack (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; user sounds 1–16; user sounds 17–32. At risk by itself, under a condition: song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12. At risk when you act: song order and selection.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "salt",
    "name": "Felucca [Salt]",
    "flags": "ASK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "changed to the new format: After a settings save here, the previous firmware cannot read the newer saved copy. Its settings and calibration may use defaults when you return. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "changed to the new format: After a settings save here, the previous firmware cannot read the newer saved copy. Its settings and calibration may use defaults when you return. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you erase a user sound (asks first or waits for you to turn again)",
        "effect": "changed to the new format: After a settings save here, the previous firmware cannot read the newer saved copy. Its settings and calibration may use defaults when you return. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you run hardware calibration (without asking)",
        "effect": "changed to the new format: After a settings save here, the previous firmware cannot read the newer saved copy. Its settings and calibration may use defaults when you return. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       },
       {
        "way": "when you send display or favourite changes from the editor (without asking)",
        "effect": "changed to the new format: After a settings save here, the previous firmware cannot read the newer saved copy. Its settings and calibration may use defaults when you return. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a project (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample slot from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send samples to the FM-1 from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you upload or erase a sample with the computer tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [
     "user sounds 1–16 (These sounds stay stored but cannot be shown or played. Saving replaces only the slot you save into. Back them up before using a slot that looks empty)",
     "user sounds 17–32 (These sounds stay stored but cannot be shown or played. Saving replaces only the slot you save into. Back them up before using a slot that looks empty)"
    ],
    "notes": [
     "Felucca [Salt] reads user sample USR1 until you write over the saved data. Slice positions you set in SLICE stay hidden. This firmware has no storage for slice positions.",
     "Felucca [Salt] reads user sample USR2 until you write over the saved data. Slice positions you set in SLICE stay hidden. This firmware has no storage for slice positions."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites (changed to the new format: After a settings save here, the previous firmware cannot read the newer saved copy. Its settings and calibration may use defaults when you return. These firmwares save settings and favourites in the same space. An edit here can change the other firmware’s choices). At risk when you act: song 1; song 2; song 3; last session saved for the next start; slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sample USR1; user sample USR2. Kept but not shown: user sounds 1–16 (These sounds stay stored but cannot be shown or played. Saving replaces only the slot you save into. Back them up before using a slot that looks empty); user sounds 17–32 (These sounds stay stored but cannot be shown or played. Saving replaces only the slot you save into. Back them up before using a slot that looks empty). Felucca [Salt] reads user sample USR1 until you write over the saved data. Slice positions you set in SLICE stay hidden. This firmware has no storage for slice positions. Felucca [Salt] reads user sample USR2 until you write over the saved data. Slice positions you set in SLICE stay hidden. This firmware has no storage for slice positions.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "pigeon",
    "name": "PIGEON",
    "flags": "CSK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "kept: PIGEON can read it"
       },
       {
        "way": "automatically, only when playback stops after you learn or clear a MIDI mapping",
        "effect": "kept: PIGEON can read it"
       },
       {
        "way": "when you calibrate the panel (without asking)",
        "effect": "kept: PIGEON can read it"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send preferences from the web editor (without asking)",
        "effect": "kept: PIGEON can read it"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when you edit the sampler and its matching sample leaves room to save those edits",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you erase a sample in USR1 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample in USR1 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR1 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR1 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only when you edit the sampler and its matching sample leaves room to save those edits",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample in USR1 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample in USR1 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR1 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR1 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save or paste the selected pattern (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save or paste the selected pattern (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save or paste the selected pattern (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save a project directly with a MIDI tool (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       },
       {
        "way": "when you save or paste the selected pattern (without asking)",
        "effect": "changed to the new format: the next save of this project uses PIGEON's newer project format and sampler setup; your previous firmware cannot load it if you switch back. Engines and sound controls mean different things. In PIGEON, sampler tracks replace the synth performance setup"
       }
      ]
     },
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR2 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample in USR2 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR2 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR2 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR2 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample in USR2 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR2 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR2 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase the PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a PIGEON bank with the bank tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample in USR3 in the older format directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a PIGEON bank with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample in USR3 in the older format from the editor (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a PIGEON archive with the library tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a PIGEON session in its editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the older editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore compatible backup data with another MIDI tool (without asking)",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "PIGEON keeps stored but does not show FM6 patches and controls for each drum in user sounds until you write over the saved data. Kept but not shown, for backups. PIGEON does not play these synth patches.",
     "PIGEON reads user sample USR1 until you write over the saved data. Sample audio can be read. Loops and slices may play differently; we have not tested whether they sound the same.",
     "PIGEON reads user sample USR2 until you write over the saved data. Sample audio can be read. Loops and slices may play differently; we have not tested whether they sound the same.",
     "PIGEON keeps stored but does not show user sounds 1–16 until you write over the saved data. These synth sounds are kept but not shown, for backups. PIGEON does not play them.",
     "PIGEON keeps stored but does not show user sounds 17–32 until you write over the saved data. These synth sounds are kept but not shown, for backups. PIGEON does not play them.",
     "PIGEON reads settings, calibration and favourites until you write over the saved data. Shared preferences can mean different things. Choices this firmware cannot use are changed to ones it supports."
    ],
    "owner_text": "At risk by itself: settings, calibration and favourites. At risk by itself, under a condition: user sample USR1; slice positions you set for USR1. At risk when you act: song 1; song 2; song 3; last session saved for the next start; FM6 patches and controls for each drum in user sounds; user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32. PIGEON keeps stored but does not show FM6 patches and controls for each drum in user sounds until you write over the saved data. Kept but not shown, for backups. PIGEON does not play these synth patches. PIGEON reads user sample USR1 until you write over the saved data. Sample audio can be read. Loops and slices may play differently; we have not tested whether they sound the same. PIGEON reads user sample USR2 until you write over the saved data. Sample audio can be read. Loops and slices may play differently; we have not tested whether they sound the same. PIGEON keeps stored but does not show user sounds 1–16 until you write over the saved data. These synth sounds are kept but not shown, for backups. PIGEON does not play them. PIGEON keeps stored but does not show user sounds 17–32 until you write over the saved data. These synth sounds are kept but not shown, for backups. PIGEON does not play them. PIGEON reads settings, calibration and favourites until you write over the saved data. Shared preferences can mean different things. Choices this firmware cannot use are changed to ones it supports.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fm1move",
    "name": "FM1 Move",
    "flags": "SK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the device page (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the device page (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "when you finish calibration or let it time out after holding both OCT buttons as you turn it on (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send settings or MIDI control assignments with a computer tool or store SYN kits from the web editor (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the device page (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample from the device page (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample directly with a MIDI tool (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you upload a sample from the device page (the computer asks first)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you import a preset file from the device page (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a user-sound bank directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send, store, rename or erase a user sound directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store a user sound from the device page (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you import a preset file from the device page (without asking; writes the whole bank)",
        "effect": "some or all lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a user-sound bank directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send, store, rename or erase a user sound directly with a MIDI tool (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you store a user sound from the device page (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "FM1 Move reads user sample USR1 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules.",
     "FM1 Move reads user sample USR2 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules.",
     "FM1 Move keeps stored but does not show user sounds 1–16 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play.",
     "FM1 Move keeps stored but does not show user sounds 17–32 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play."
    ],
    "owner_text": "At risk when you act: slice positions you set for USR1; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; settings, calibration and favourites; user sample USR1; user sample USR2; user sounds 1–16; user sounds 17–32. FM1 Move reads user sample USR1 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules. FM1 Move reads user sample USR2 until you write over the saved data. Slice marks set by hand are not loaded. Loop modes follow this firmware's playback rules. FM1 Move keeps stored but does not show user sounds 1–16 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play. FM1 Move keeps stored but does not show user sounds 17–32 until you write over the saved data. Newer sounds are kept but not shown. Only older version-1 sounds still in the bank can play.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fm1quest",
    "name": "FM1 Quest",
    "flags": "ASK",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "FM6 patches and controls for each drum in user sounds",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically at first start",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode or receive a firmware update",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "settings, calibration and favourites",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically during use",
        "effect": "lost"
       },
       {
        "way": "when you enter update mode with settings waiting to be saved",
        "effect": "lost"
       },
       {
        "way": "when you press SAVE on the SONG screen (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save section A from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save section B from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save section C from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save section D from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send settings with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save project A (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save section A from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as section A (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save project B (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save section B from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as section B (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save project C (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save section C from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as section C (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "last session saved for the next start",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you save a project from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you save project D (asks first or waits for you to turn again)",
        "effect": "lost"
       },
       {
        "way": "when you save section D from SONG (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you save the current music as section D (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or clear a section with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR1 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR2 by holding REC on it in IMPORTER (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample from the editor (the computer asks first) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR1 by holding REC on it in IMPORTER (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR2 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sample USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR2 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR3 by holding REC on it in IMPORTER (without asking)",
        "effect": "damaged (part written over)"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "slice positions you set for USR2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR2 by holding REC on it in IMPORTER (without asking) [uses its sample]",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR3 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR3 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR3 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR3 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you erase a sample with computer commands (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you erase sample USR3 by holding REC on it in IMPORTER (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample from the editor (the computer asks first)",
        "effect": "lost"
       },
       {
        "way": "when you send a sample with computer commands (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send or erase training song P1 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase training song P2 (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send or erase training song P3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase training song P4 (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send or erase training song P5 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase training song P6 (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send or erase training song H1 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase training song H2 (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send or erase training song H3 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase training song H4 (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "song order and selection",
      "effect": "lost",
      "ways": [
       {
        "way": "when you send or erase training song H5 (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you send or erase training song H6 (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "user sounds 1–16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a user-sound bank with computer commands (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a USER sound (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send, save or erase a user sound with computer commands (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     },
     {
      "object": "user sounds 17–32",
      "effect": "lost",
      "ways": [
       {
        "way": "when you restore a backup from the editor (the computer asks once before restoring the whole backup)",
        "effect": "lost"
       },
       {
        "way": "when you restore a user-sound bank with computer commands (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save or erase a USER sound (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       },
       {
        "way": "when you save the current sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "partly lost (the slot you save into)"
       },
       {
        "way": "when you send, save or erase a user sound with computer commands (without asking; writes the whole bank)",
        "effect": "partly lost (only that slot)"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Quest can play your saved USR1 until you write over it, if its audio and zones fit Quest’s smaller sample slot. Sending a sample to USR1 or erasing it loses the old sample. This includes holding REC on USR1 in IMPORTER when Quest can read it. Sending a sample to USR2 or erasing USR2 can damage the end of the old USR1. Back up USR1 first.",
     "FM1 Quest keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
     "FM1 Quest keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound."
    ],
    "owner_text": "At risk by itself: FM6 patches and controls for each drum in user sounds; settings, calibration and favourites. At risk when you act: song 1; song 2; song 3; last session saved for the next start; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32. Quest can play your saved USR1 until you write over it, if its audio and zones fit Quest’s smaller sample slot. Sending a sample to USR1 or erasing it loses the old sample. This includes holding REC on USR1 in IMPORTER when Quest can read it. Sending a sample to USR2 or erasing USR2 can damage the end of the old USR1. Back up USR1 first. FM1 Quest keeps stored but does not show user sounds 1–16 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound. FM1 Quest keeps stored but does not show user sounds 17–32 until you write over the saved data. Your sounds stay saved but cannot be shown or played. Saving into their slots removes them; saving elsewhere keeps them. Saving on the FM-1 needs another turn of the same control, with no warning that the slot holds a hidden sound.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "grooveos",
    "name": "Groove OS",
    "flags": "?",
    "weakest_grade": null,
    "at_risk": [],
    "possibly_at_risk": [
     "settings, calibration and favourites",
     "song 1",
     "song 2",
     "song 3",
     "last session saved for the next start",
     "song 4",
     "song 5",
     "song 6",
     "song 7",
     "song 8",
     "song 9",
     "song 10",
     "song 11",
     "song 12",
     "song order and selection",
     "user sounds 1–16",
     "user sounds 17–32",
     "FM6 patches and controls for each drum in user sounds",
     "user sample USR1",
     "slice positions you set for USR1",
     "user sample USR2",
     "slice positions you set for USR2"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "The official route first puts V15 back, then installs Groove OS. Treat this firmware’s saved work as lost and back it up with its own tools before starting. Groove OS’s project saves, autosave, preferences, sample uploads and extra installed pages can also replace leftover work; nobody has published which parts of storage they use. A sound missing from PRESETS may still occupy storage, and do not count on Groove OS’s own backups to keep it."
    ],
    "owner_text": "Possibly at risk (layout reported or inferred): settings, calibration and favourites; song 1; song 2; song 3; last session saved for the next start; song 4; song 5; song 6; song 7; song 8; song 9; song 10; song 11; song 12; song order and selection; user sounds 1–16; user sounds 17–32; FM6 patches and controls for each drum in user sounds; user sample USR1; slice positions you set for USR1; user sample USR2; slice positions you set for USR2. The official route first puts V15 back, then installs Groove OS. Treat this firmware’s saved work as lost and back it up with its own tools before starting. Groove OS’s project saves, autosave, preferences, sample uploads and extra installed pages can also replace leftover work; nobody has published which parts of storage they use. A sound missing from PRESETS may still occupy storage, and do not count on Groove OS’s own backups to keep it.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   }
  ]
 },
 "disagreements": [
  {
   "topic": "SETLIST overwrite can replace a different song",
   "docs_say": "The fork guide describes saving the selected setlist song.",
   "source_says": "When the selected extended song is already occupied, accepting OVERWRITE opens NAME for A, B, C or recovery D instead; only initial saves into empty entries, renaming and quiet-time saving retain the full extended destination.",
   "docs_ref": {
    "kind": "doc",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "FORK.md",
    "lines": "116",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/FORK.md#L116"
   },
   "source_ref": {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/ui_input.c",
    "lines": "1033-1041",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L1033-L1041"
   }
  },
  {
   "topic": "MiniLab previous and next song under CH1-4",
   "docs_say": "The controller guide assigns previous/next song to channel 16 while its setup selects CH1-4 routing.",
   "source_says": "The routing filter drops those channel-16 control messages before the song handler; they can work with ROUT SEL, while the dedicated Stop, Play, Record and Tap controls bypass that filter.",
   "docs_ref": {
    "kind": "doc",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "controllers/MiniLab-3.md",
    "lines": "29-39",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/controllers/MiniLab-3.md#L29-L39"
   },
   "source_ref": {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/midi_control.c",
    "lines": "519-529",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/midi_control.c#L519-L529"
   }
  },
  {
   "topic": "Uploaded sample count",
   "docs_say": "The inherited engine list offers three uploaded sample slots.",
   "source_says": "This fork has two sample slots; the third slot’s former area now holds extended songs and setlist order.",
   "docs_ref": {
    "kind": "doc",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "README.md",
    "lines": "142-146",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/README.md#L142-L146"
   },
   "source_ref": {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/eng_sample.c",
    "lines": "43-45",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/eng_sample.c#L43-L45"
   }
  },
  {
   "topic": "Saved projects and recovery",
   "docs_say": "The inherited overview counts four projects.",
   "source_says": "The fork adds nine project slots and a twelve-entry setlist that excludes D, which is used for recovery; the old PROJECT page can still save an ordinary D and thereby block quiet-time saving.",
   "docs_ref": {
    "kind": "doc",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "README.md",
    "lines": "66-68",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/README.md#L66-L68"
   },
   "source_ref": {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/session.c",
    "lines": "92-109",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L92-L109"
   }
  },
  {
   "topic": "Automatic saving is conditional",
   "docs_say": "FORK.md presents automatic saving broadly, while the MiniLab guide explicitly reserves project 4 for recovery and documents the ordinary-project block and its warning message.",
   "source_says": "An existing readable ordinary D makes the poll return before saving songs, order or recovery or carrying out queued song loads; silence and an unchanged state are also required.",
   "docs_ref": {
    "kind": "doc",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "FORK.md",
    "lines": "23",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/FORK.md#L23"
   },
   "source_ref": {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/session.c",
    "lines": "90-105",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/session.c#L90-L105"
   },
   "docs_refs": [
    {
     "kind": "doc",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "FORK.md",
     "lines": "23",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/FORK.md#L23"
    },
    {
     "kind": "doc",
     "repo": "ELI7VH/Felucca",
     "ref": "1.0.5.2-midi23",
     "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
     "path": "controllers/MiniLab-3.md",
     "lines": "59-65",
     "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/controllers/MiniLab-3.md#L59-L65"
    }
   ]
  },
  {
   "topic": "Full backup omits hand-set sample markers",
   "docs_say": "The fork advertises full backups.",
   "source_says": "Sample export ends after its header and audio, while hand-set SLICE markers sit in its final sector beyond that exported audio, so the full-backup file does not protect those markers.",
   "docs_ref": {
    "kind": "doc",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "FORK.md",
    "lines": "17",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/FORK.md#L17"
   },
   "source_ref": {
    "kind": "source",
    "repo": "ELI7VH/Felucca",
    "ref": "1.0.5.2-midi23",
    "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
    "path": "firmware/src/editor_backup.c",
    "lines": "60-65",
    "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/editor_backup.c#L60-L65"
   }
  }
 ],
 "not_mapped": [
  "No unit was tested; button identities follow the source panel table and calibration path, and alternate builds that change compile-time engine flags are outside this release map.",
  "Stock and Baud Girl storage contents remain reported or inferred; their exact undocumented contents cannot be established from WaveLoop source.",
  "The precise sound of newer Felucca parameter values imported through shared user records is not established by matching storage shapes."
 ],
 "lights": {
  "button_fx": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "breathing",
    "action": "Its layer's map is on screen.",
    "short_label": "LAYER OPEN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "237-238",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L237-L238"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "lit",
    "action": "With MENU > FX LATCH: an effect or a macro is still on.",
    "short_label": "FX ON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "235-236",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L235-L236"
     }
    ]
   }
  ],
  "button_sel": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "breathing",
    "action": "Its layer's map is on screen.",
    "short_label": "LAYER OPEN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "237-238",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L237-L238"
     }
    ]
   }
  ],
  "button_env": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   }
  ],
  "button_lfo": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   }
  ],
  "button_edit": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "breathing",
    "action": "Its layer's map is on screen.",
    "short_label": "LAYER OPEN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "237-238",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L237-L238"
     }
    ]
   }
  ],
  "button_glo": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "breathing",
    "action": "Its layer's map is on screen.",
    "short_label": "LAYER OPEN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "237-238",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L237-L238"
     }
    ]
   }
  ],
  "button_home": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   }
  ],
  "button_save": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   }
  ],
  "button_arp": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "flash",
    "action": "An arpeggiator is playing on some track: flashes on the beat, longer on the bar's first beat (on the ARP page the flash is dark).",
    "short_label": "ARP BEAT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "100-107",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L100-L107"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "233-234",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L233-L234"
     }
    ]
   }
  ],
  "button_seq": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Marks the family of the page on screen; inverse LED mode makes active buttons dark.",
    "short_label": "PAGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "38-41",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L38-L41"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "230-262",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L230-L262"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "An idle button glows at DIM HI or DIM LO, stays dark at OFF, or lights fully at INV.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L266"
     }
    ]
   }
  ],
  "button_rec": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "A track is armed for recording.",
    "short_label": "ARMED",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "239",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L239"
     }
    ]
   }
  ],
  "button_play_stop": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "The orange PLAY light stays dark while playing; stopped, it follows the idle LED setting.",
    "short_label": "ORANGE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "252-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L252-L265"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "lit",
    "action": "The separate green PLAY light is steadily lit while the transport plays.",
    "short_label": "GREEN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "264-265",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L264-L265"
     }
    ]
   }
  ],
  "button_oct_down": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Keys shifted below octave 0. On action pages and in dialogs: OCT- is back.",
    "short_label": "OCT DOWN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "50-63",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L50-L63"
     }
    ]
   },
   {
    "mode": "menu",
    "gesture": "breathing",
    "action": "The selected menu value can step back.",
    "short_label": "PREV VALUE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "56-60",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L56-L60"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "lit",
    "action": "In GLO, SEL or EDIT layers, OCT- can put back that layer’s changes.",
    "short_label": "PUT BACK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "54-55",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L54-L55"
     }
    ]
   }
  ],
  "button_oct_up": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Keys shifted above octave 0.",
    "short_label": "OCT UP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "63",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L63"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "breathing",
    "action": "An action, save name, confirmation, menu item or next menu value is available.",
    "short_label": "ACTION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "50-62",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L50-L62"
     }
    ]
   }
  ],
  "key_lights": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Lights mark held keys and notes sounding from MIDI or the track’s sequence, with the cursor step’s notes shown instead on stopped STEP.",
    "short_label": "NOTES",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "114-177",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L114-L177"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "194-205",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L194-L205"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "dim",
    "action": "Idle note keys follow DIM HI or DIM LO; there is no separate scale-light option in this release.",
    "short_label": "IDLE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "245-266",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L245-L266"
     }
    ]
   },
   {
    "mode": "step_grid",
    "gesture": "lit",
    "action": "White lights mark hits or, with ACC held, accents for the current lane plus an inverted playback cursor; black lights identify the lane and held ACC, with paging keys lit for patterns longer than sixteen steps.",
    "short_label": "GRID",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "69-85",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L69-L85"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "lit",
    "action": "Lights mark performance effects or temporary track mutes that are active, with effects too long for the current tempo left dark.",
    "short_label": "FX ACTIVE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_fx",
    "gesture": "breathing",
    "action": "Lights breathe on available performance-effect keys that are not already active; an effect too long for the tempo stays dark.",
    "short_label": "FX READY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "lit",
    "action": "The first four black lights mark tracks still sounding and the first four white lights mark held solos.",
    "short_label": "MIX STATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_glo",
    "gesture": "breathing",
    "action": "The four white solo keys and C4 unmute-all key breathe when available, and F4 tap breathes only with internal clock.",
    "short_label": "MIX ACTION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "lit",
    "action": "Every key with the selected root’s note name lights steadily.",
    "short_label": "ROOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_scl",
    "gesture": "breathing",
    "action": "Other notes belonging to the selected scale breathe.",
    "short_label": "SCALE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "lit",
    "action": "The white key assigned to the selected engine lights steadily.",
    "short_label": "ENGINE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "layer_edit",
    "gesture": "breathing",
    "action": "Other selectable engine keys breathe, with INIT also breathing when a song chain is not busy.",
    "short_label": "ENGINE PICK",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_layer.c",
      "lines": "450-476",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_layer.c#L450-L476"
     }
    ]
   },
   {
    "mode": "name",
    "gesture": "lit",
    "action": "Every key that types or edits; the key being cycled blinks.",
    "short_label": "TYPING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_name.c",
      "lines": "276-284",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_name.c#L276-L284"
     }
    ]
   },
   {
    "mode": "slices",
    "gesture": "lit",
    "action": "Marks every key that plays the selected slice alongside held and playing notes.",
    "short_label": "SLICE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_input.c",
      "lines": "201-203",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_input.c#L201-L203"
     },
     {
      "kind": "source",
      "repo": "ELI7VH/Felucca",
      "ref": "1.0.5.2-midi23",
      "commit": "7bce76090a076cf488ac03b53c83960b7c14e81e",
      "path": "firmware/src/ui_slice.c",
      "lines": "212-221",
      "url": "https://github.com/ELI7VH/Felucca/blob/7bce76090a076cf488ac03b53c83960b7c14e81e/firmware/src/ui_slice.c#L212-L221"
     }
    ]
   }
  ]
 },
 "groups": {
  "key_lights": [
   "led_a3",
   "led_a4",
   "led_as3",
   "led_as4",
   "led_b3",
   "led_b4",
   "led_c4",
   "led_c5",
   "led_cs4",
   "led_cs5",
   "led_d4",
   "led_d5",
   "led_ds4",
   "led_ds5",
   "led_e4",
   "led_e5",
   "led_f3",
   "led_f4",
   "led_f5",
   "led_fs3",
   "led_fs4",
   "led_fs5",
   "led_g3",
   "led_g4",
   "led_g5",
   "led_gs3",
   "led_gs4"
  ]
 },
 "delta": {
  "parent": "Felucca v1.6.1",
  "parent_map": "control-maps/felucca.json",
  "parent_commit": "a53ecf428c29c780108fd70a31b71a32a6b5c313",
  "fork_point": "Felucca 1.0.5.2 (7414269)",
  "entries_carried_unchanged": 152,
  "entries_changed": 360,
  "entries_new": 601,
  "entries_dropped": 183,
  "modes_carried": 38,
  "modes_new": 62,
  "modes_dropped": 17
 },
 "delta_counting": "Entries include controls and lights; unchanged means identical mode, gesture, action and short_label after citations were replaced; changed means a remaining counterpart on the same part/mode/gesture (DETAIL renamed CHANCE); the rest are new or dropped.",
 "refresh_check_fixes": [
  {
   "round": 1,
   "error": "1. Next-start automatic song write",
   "fixed": "Named the normal first-recovery/next-start write, its selection rule, repeated A/B writes and affected saved work; added the startup write row.",
   "at": "switching_note.overwrites_without_asking[7:9]; modes.power_on; controls.screen[98]; storage.install_and_startup_writes"
  },
  {
   "round": 1,
   "error": "2. Meaning and consequences of active song",
   "fixed": "Defined every activation path and warned that loading a song makes subsequent edits overwrite that saved song automatically.",
   "at": "switching_note.saving; controls.button_oct_up[6,10,18]; controls.encoder_knob3[22,34]; controls.screen[103]; storage song/restore notes"
  },
  {
   "round": 1,
   "error": "3. Missing recovery overlaps",
   "fixed": "Added sloopDX section D, ChoralRoot legacy CZ patches 1–16 and X0X stream part 3 with its length condition.",
   "at": "switching_note.overwrites_without_asking[2]; storage.owner_switching_fact"
  },
  {
   "round": 1,
   "error": "4. User banks companions and samples",
   "fixed": "Replaced the atlas referral with named losses for bank rewrites, companion saves and sample transfers, and mirrored them into the storage fragment.",
   "at": "switching_note.overwrites_without_asking[5,9,10]; storage.owner_switching_fact"
  },
  {
   "round": 1,
   "error": "5. STEP entry during unarmed playback",
   "fixed": "Corrected all 27 press and release pairs and the owner sequence explanation.",
   "at": "controls.key_* step_roll press/release; .md Enter and edit a sequence"
  },
  {
   "round": 1,
   "error": "6. Phantom SELECT mode",
   "fixed": "Removed the unsupported SELECT-mode claim.",
   "at": "controls.encoder_select[1]"
  },
  {
   "round": 1,
   "error": "7. Slow-tempo FX restriction",
   "fixed": "Added the buffer-length restriction to repeat 1/8 and reverse.",
   "at": "controls.key_f3[7]; controls.key_b3[7]"
  },
  {
   "round": 1,
   "error": "8. Automatic-save status messages",
   "fixed": "Added the named block, success, error, pending-load, recovery and format-error messages.",
   "at": "controls.screen appended status entries starting [107]"
  },
  {
   "round": 1,
   "error": "9. Editor setlist controls",
   "fixed": "Added save, load, reorder and rename, including browser questions, full-slot save behavior and automatic-save consequences.",
   "at": "controls.jack_usb_c appended setlist entries [5:9]"
  },
  {
   "round": 1,
   "error": "10. Synth MIDI clock and coverage gaps",
   "fixed": "Added numbered synth CCs, external clock transport, the MIDI destination notice, named drum kits and expanded banks.",
   "at": "controls.jack_midi_in appended [29:]; controls.screen appended coverage entries"
  },
  {
   "round": 1,
   "error": "11. Music hidden inside settings",
   "fixed": "Named SLOOP and sloopDX song order and Rainbow Mode WRITE song in the settings-write warning.",
   "at": "switching_note.overwrites_without_asking[3]; storage.owner_switching_fact"
  },
  {
   "round": 1,
   "error": "12. Load request while playing",
   "fixed": "Changed waiting-for-stop wording to refusal during playback and quiet waiting only after a stopped request.",
   "at": "controls.button_oct_up[18]; controls.encoder_knob3[34]; appended editor load"
  },
  {
   "round": 1,
   "error": "13. Calibration save timing",
   "fixed": "Separated save requests on return from power-on calibration from those on MENU close, including cancellation.",
   "at": "controls.key_* calibration; modes.calibration; controls.screen calibration; controls.button_oct_up[14]"
  },
  {
   "round": 1,
   "error": "14. Citation bounds and single lines",
   "fixed": "Capped setlist citations at its last real line 64 and normalized single-line ranges and anchors.",
   "at": "all source objects pointing to firmware/src/setlist.c; controls.jack_midi_in[10,27]"
  },
  {
   "round": 1,
   "error": "15. Labels lights and duplicate ABOUT",
   "fixed": "Named each engine screen distinctly, gave each layer precise LED meanings and merged the duplicate ABOUT mode while retaining entry positions. The guide now calls the grouped keyboard LEDs Key lights.",
   "at": "controls.screen engine labels; lights.key_lights[3:11]; modes[99] removed as duplicate; about entries use menu_about"
  },
  {
   "round": 1,
   "error": "16. Held layers and live drum focus",
   "fixed": "Covered HOME in every held or locked layer and added sound/mix focus to the eight drum lane keys.",
   "at": "controls.button_home[3] and appended; controls.key_* step_grid lane presses, including key_ds4[5]"
  },
  {
   "round": 1,
   "error": "18. Guide metadata and wording",
   "fixed": "Added both missing docs, recorded the WaveLoop Kit release name, corrected title/footer and USB-C part id, and qualified the autosave docs disagreement with the controller guide’s existing warning. Removed review-process wording from the owner footer and linked the controller guide’s block warning directly.",
   "at": "docs; upstream_release_name; controls.jack_usb_c; disagreements[4]; .md title/footer"
  },
  {
   "round": 1,
   "error": "17. Untagged recovery and browser questions",
   "fixed": "Replaced the old-recovery qualifier with any untagged recovery, including a normal first session, and distinguished browser save confirmation from unprompted device commands and rename naming.",
   "at": "storage.objects song_1..song_12 written_when; storage.install_and_startup_writes; storage.automatic_song_destination"
  },
  {
   "round": 2,
   "error": "2. Layer HOME labels",
   "fixed": "Used LAYER HOME consistently for physically held versus locked layers, distinct from ordinary HOME.",
   "at": "controls.button_home[3], [6], [7], [8] before removal of redundant ABOUT entry; now [3], [5], [6], [7]"
  },
  {
   "round": 2,
   "error": "4. Calibration save timing",
   "fixed": "Specified that MENU itself must close to request the settings save after MENU calibration.",
   "at": "controls.screen[99]; calibration row in waveloop.md"
  },
  {
   "round": 2,
   "error": "5. MAKU inherited mirrors",
   "fixed": "Removed MAKU from the list of native project-D music; described inherited mirrors A–C and D together and stated that MAKU does not restore them as its music, with the same warning in the storage fragment.",
   "at": "switching_note.overwrites_without_asking[2], [8]; storage.owner_switching_fact; storage.reads_foreign MAKU project mirrors; waveloop.md switching warnings"
  },
  {
   "round": 2,
   "error": "1. Duplicate ABOUT entries",
   "fixed": "Removed the seven redundant entries listed in the report after the ABOUT contexts were merged; kept each first entry and all other entries in their existing relative order, and combined both screen descriptions and evidence.",
   "at": "controls.button_home[5], button_oct_down[20], button_oct_up[20], encoder_algorithm[9], encoder_select[5], encoder_presets[21], screen[101] (pre-fix indices); waveloop.md ABOUT table"
  },
  {
   "round": 2,
   "error": "3. Song-save and recovery messages",
   "fixed": "Labelled recovery failure AUTO ERROR and appended SAVED and SAVE ERROR readouts covering quiet automatic song writes, unchanged recovery and failed-save retry ordering.",
   "at": "controls.screen[108] (formerly [109]); controls.screen[116], [117] appended; waveloop.md status readouts"
  },
  {
   "round": 2,
   "error": "Other check. Duplicate LOAD citations",
   "fixed": "Removed repeated setlist and session evidence without changing the entry.",
   "at": "controls.button_oct_up[18].source"
  },
  {
   "round": 3,
   "error": "1. SAVE ERROR scope",
   "fixed": "Expanded the existing readout to include failed user-sound saves and renames and failed hand-set slice-marker writes, retaining the automatic-song retry distinction and adding evidence for both cases.",
   "at": "controls.screen[117]; waveloop.md status readout"
  },
  {
   "round": 3,
   "error": "Wording note. Stray conjunction",
   "fixed": "Removed the stray conjunction from the recovery overlap list in the JSON, guide and mirrored storage warning.",
   "at": "switching_note.overwrites_without_asking[2]; storage.owner_switching_fact; waveloop.md switching warning"
  },
  {
   "round": "overlay-fix-r1",
   "at": "controls.button_oct_down[2].short_label",
   "old": "UPDATE 5S",
   "new": "UPDATE 5s",
   "why": "firmware/src/main.c:195-220@7bce76090a076cf488ac03b53c83960b7c14e81e"
  },
  {
   "round": "overlay-fix-r1",
   "at": "controls.button_oct_up[2].short_label",
   "old": "UPDATE 5S",
   "new": "UPDATE 5s",
   "why": "firmware/src/main.c:195-220@7bce76090a076cf488ac03b53c83960b7c14e81e"
  }
 ],
 "upstream_release_name": "WaveLoop Kit",
 "checker_disputes_refresh": []
}