{
 "firmware": "Fart Machine One",
 "slug": "fart",
 "author": "adamcharleswilsonmusic-code",
 "repo": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One",
 "licence": "GPL-3.0-only (code); Apache-2.0 (bundled AC79 SDK files); recordings have separate, unverified terms",
 "closed_source": false,
 "mapped_release": "V1.0.0",
 "mapped_commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
 "release_date": "2026-10-12",
 "date_mapped": "2026-10-17",
 "status": "Independently checked: zero errors in round 3 (2026-10-17), after the round-1 and round-2 fixes. No device testing.",
 "turns_it_into": "An eleven-sound fart sampler with reverb, delay and one live-recorded 16-step loop.",
 "docs": [
  {
   "title": "README.md",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md",
   "words": 1329,
   "read_at": "V1.0.0, 2026-10-17",
   "word_count_method": "Whitespace-separated Markdown tokens."
  },
  {
   "title": "INSTALL.md",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md",
   "words": 242,
   "read_at": "V1.0.0, 2026-10-17",
   "word_count_method": "Whitespace-separated Markdown tokens."
  },
  {
   "title": "BUILDING.md",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/BUILDING.md",
   "words": 273,
   "read_at": "V1.0.0, 2026-10-17",
   "word_count_method": "Whitespace-separated Markdown tokens."
  },
  {
   "title": "LICENSING.md",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/LICENSING.md",
   "words": 527,
   "read_at": "V1.0.0, 2026-10-17",
   "word_count_method": "Whitespace-separated Markdown tokens."
  }
 ],
 "install": {
  "official": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/releases/tag/V1.0.0",
  "hub": "https://thefirmwarehub.com/"
 },
 "part_id_notes": "SEL is B_SEL; PLAY is B_PLAY; PRESETS is EN_PRESET; ALGORITHM is EN_ALGO; key ids run chromatically from F3 to G5. These encoders have no push action. The shared led_play_stop id names the red/orange PLAY lamp; led_play_stop_green is its green lamp. The lights object uses button part ids for button lamps, with the separate green PLAY id and grouped key_lights. For jacks, press means connect or send data through the connection; it is not a physical push switch.",
 "entry_scope": "Mode any means normal stopped, playing or recording operation unless the action names a boot gesture; service-mode entries take precedence. Held buttons do not select another musical layer, and none of the keys selects steps or menus. Calibration and safe mode bypass the musical UI. Update countdown is an overlay on normal operation.",
 "upstream_basis": {
  "commit_named_by_fork": "405ef41aef75f7e70afd6decc01505df07c708e9",
  "note": "The fork names this FoMni foundation commit, not a FoMni release number; it does not identify its base as v0.4. The supplied v0.4 tree is a storage comparison, not the mapped Fart release.",
  "source": [
   {
    "kind": "doc",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "README.md",
    "lines": "180-186",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L180-L186"
   },
   {
    "kind": "doc",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "docs/build-versions.json",
    "lines": "1-11",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/docs/build-versions.json#L1-L11"
   }
  ]
 },
 "modes": [
  {
   "id": "stopped",
   "name": "Stopped",
   "how_to_get_there": "Power on, or press PLAY while the loop runs.",
   "what_it_is": "Keys play sounds, but the loop is stopped; stopping keeps its notes.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "114-121",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "133-139",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L133-L139"
    }
   ]
  },
  {
   "id": "playing",
   "name": "Playing",
   "how_to_get_there": "Press PLAY while stopped, or release REC briefly while recording.",
   "what_it_is": "The single bar repeats through 16 sixteenth-note steps without adding live hits.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "77-94",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L77-L94"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "133-145",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L133-L145"
    }
   ]
  },
  {
   "id": "recording",
   "name": "Recording",
   "how_to_get_there": "Tap and release REC while stopped or playing.",
   "what_it_is": "Live keyboard or channel 1 MIDI hits enter the nearest step while playback continues.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/ui.c",
     "lines": "44-53",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L53"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "85-94",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "130-140",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L140"
    }
   ]
  },
  {
   "id": "clear_notice",
   "name": "REC hold after clear",
   "how_to_get_there": "Keep REC held for one second.",
   "what_it_is": "The loop is erased and transport stopped; its caption lasts about 1.4 seconds, but the release guard remains active until this REC hold ends.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/ui.c",
     "lines": "16",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L16"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/ui.c",
     "lines": "44-51",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/ui.c",
     "lines": "129-131",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L129-L131"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/dsp/omni.c",
     "lines": "138-139",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L138-L139"
    }
   ]
  },
  {
   "id": "calibration",
   "name": "Hardware calibration",
   "how_to_get_there": "Hold the physical OCT- and OCT+ buttons while powering on, then release them.",
   "what_it_is": "Teach 14 button positions and seven clockwise encoder directions; completion saves calibration immediately, without a question or panel undo, while 30 seconds of inactivity at a prompt abandons the changes without writing.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "298-301",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L298-L301"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/panel.c",
     "lines": "46-108",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L46-L108"
    }
   ]
  },
  {
   "id": "update_countdown",
   "name": "Update countdown",
   "how_to_get_there": "Hold OCT- and OCT+ during normal operation.",
   "what_it_is": "A countdown appears after two seconds; holding past five seconds enters the chip updater, while letting either button go cancels the countdown.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "319-336",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
    }
   ]
  },
  {
   "id": "update",
   "name": "Package update",
   "how_to_get_there": "Start an update from the connected installer.",
   "what_it_is": "The musical UI pauses while the package and loader are checked and staged; a successful commit restarts the unit and loses its RAM loop.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/main.c",
     "lines": "104-122",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/main.c#L104-L122"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "338-347",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L338-L347"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/ota.c",
     "lines": "337-378",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L337-L378"
    }
   ]
  },
  {
   "id": "uboot",
   "name": "Chip update mode",
   "how_to_get_there": "Hold OCT- and OCT+ past five seconds, or send the USB recovery request.",
   "what_it_is": "Sound stops and the unit enters the chip updater; normal panel music controls no longer run.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "165-175",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L165-L175"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "319-347",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L347"
    }
   ]
  },
  {
   "id": "safe",
   "name": "Safe mode",
   "how_to_get_there": "Two failed starts enter this mode automatically.",
   "what_it_is": "Audio and the musical UI are off, but the release’s Python installer can reinstall over USB despite the screen’s web-installer prompt; PLAY retries startup after the first half second.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "177-228",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L177-L228"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "370-395",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L370-L395"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "188-191",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L188-L191"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "220-224",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L220-L224"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "tools/fm1_install.py",
     "lines": "305-311",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L305-L311"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "tools/fm1_install.py",
     "lines": "351-359",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L351-L359"
    },
    {
     "kind": "doc",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "INSTALL.md",
     "lines": "24-43",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md#L24-L43"
    },
    {
     "kind": "doc",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "README.md",
     "lines": "80-89",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L80-L89"
    }
   ]
  },
  {
   "id": "boot",
   "name": "Startup",
   "how_to_get_there": "Switch the unit on.",
   "what_it_is": "A splash appears before normal play; a retained crash report can add a brief restart notice.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "231-243",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L231-L243"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "256-277",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L256-L277"
    }
   ]
  },
  {
   "id": "crash",
   "name": "Crash report",
   "how_to_get_there": "A firmware fault opens this screen automatically.",
   "what_it_is": "Sound stops, a red fault screen appears, and the unit restarts after about four seconds.",
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "142-162",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L142-L162"
    }
   ]
  }
 ],
 "controls": {
  "button_fx": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_sel": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_env": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_lfo": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_edit": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_glo": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_home": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_save": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Does not save the loop, tempo or effect values.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_arp": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_seq": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_oct_down": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_while_holding:button_oct_up",
    "action": "Begins the two-button update hold, with a countdown after two seconds and update entry only after five seconds.",
    "short_label": "UPDATE HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_up",
    "action": "With the other OCT button also held past five seconds, stops sound and enters the chip updater without a panel confirmation or saving the RAM loop.",
    "short_label": "UPDATE 5s",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "165-175",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L165-L175"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     }
    ]
   },
   {
    "mode": "update_countdown",
    "gesture": "release",
    "action": "Cancels the countdown when either OCT button is released before update entry.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_oct_up": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Has no musical action during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not act as a musical modifier during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_while_holding:button_oct_down",
    "action": "Begins the two-button update hold, with a countdown after two seconds and update entry only after five seconds.",
    "short_label": "UPDATE HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_down",
    "action": "With the other OCT button also held past five seconds, stops sound and enters the chip updater without a panel confirmation or saving the RAM loop.",
    "short_label": "UPDATE 5s",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "165-175",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L165-L175"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     }
    ]
   },
   {
    "mode": "update_countdown",
    "gesture": "release",
    "action": "Cancels the countdown when either OCT button is released before update entry.",
    "short_label": "CANCEL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_play_stop": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Starts the existing loop at step 1 without enabling recording.",
    "short_label": "START LOOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "40-43",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L40-L43"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "82-84",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L82-L84"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "133-134",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L133-L134"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Stops playback and silences voices and effect tails while keeping the loop notes.",
    "short_label": "STOP LOOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "40-43",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L40-L43"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "63-66",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L63-L66"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "108-112",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L108-L112"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "133-134",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L133-L134"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Stops playback and overdubbing and silences voices and effect tails while keeping the loop notes.",
    "short_label": "STOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "40-43",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L40-L43"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "63-66",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L63-L66"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "108-112",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L108-L112"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "133-134",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L133-L134"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Adds no repeat or modifier action after the initial press.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-43",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L43"
     }
    ]
   },
   {
    "mode": "safe",
    "gesture": "press",
    "action": "Restarts the firmware from scratch once safe mode has been open for more than half a second, losing any RAM loop.",
    "short_label": "TRY AGAIN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "205-218",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L205-L218"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "button_rec": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Starts timing the hold without changing recording until release or the one-second clear threshold.",
    "short_label": "TIME HOLD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-51",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
     }
    ]
   },
   {
    "mode": "stopped",
    "gesture": "release",
    "action": "After a hold shorter than one second, starts recording at step 1 without clearing the existing RAM loop.",
    "short_label": "RECORD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-51",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "135-137",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L135-L137"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "release",
    "action": "After a hold shorter than one second, enables overdubbing without restarting the loop.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-51",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "135-137",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L135-L137"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "release",
    "action": "After a hold shorter than one second, stops adding hits while loop playback continues.",
    "short_label": "PLAY ONLY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-51",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "135-137",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L135-L137"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "long_press",
    "action": "At one second, erases every hit in the RAM loop and stops and silences playback without a question or undo, keeping tempo and effects.",
    "short_label": "CLEAR LOOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-51",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "63-69",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L63-L69"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "108-112",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L108-L112"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "138-140",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L138-L140"
     }
    ]
   },
   {
    "mode": "clear_notice",
    "gesture": "release",
    "action": "Releasing the REC hold that cleared the loop leaves recording off.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-51",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L51"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "When this printed button is requested, records its position in the pending calibration map; all 14 buttons and seven encoders must be taught before it saves without a question.",
    "short_label": "TEACH BUTTON",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "6-9",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L6-L9"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-76",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L76"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "switch_power": [
   {
    "mode": "any",
    "gesture": "power_on_holding:button_oct_down+button_oct_up",
    "action": "Opens hardware calibration when both physical OCT buttons are held at startup, with no flash write until all prompts are completed.",
    "short_label": "CALIBRATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "298-301",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L298-L301"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "46-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L46-L108"
     }
    ]
   }
  ],
  "encoder_select": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-58",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L58"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "140",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L140"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Sets loop tempo from 40 to 240 BPM in one-BPM steps, starting at 120 after each restart with the same range and step size while the button is held.",
    "short_label": "TEMPO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "114-121",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "encoder_algorithm": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "encoder_presets": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Does nothing during normal play.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "encoder_knob1": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-64",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L64"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Changes the reverb amount from 0 to 100 percent in one-point steps, starting at 15 percent with the same range and step size while the button is held.",
    "short_label": "REVERB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "encoder_knob2": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-64",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L64"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Changes the delay amount from 0 to 100 percent in one-point steps, starting at zero with the same range and step size while the button is held.",
    "short_label": "DELAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "encoder_knob3": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-64",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L64"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Changes delay time from 80 to 500 milliseconds in ten-millisecond steps, starting at 240 milliseconds with the same range and step size while the button is held.",
    "short_label": "DELAY TIME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "encoder_knob4": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "55-64",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L55-L64"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_fx",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_sel",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_env",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_lfo",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_edit",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_glo",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_home",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_save",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_arp",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_seq",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_play_stop",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_rec",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Changes delay feedback from 0 to 70 percent in one-point steps, starting at 25 percent with the same range and step size while the button is held.",
    "short_label": "REPEATS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "36-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "16-18",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L16-L18"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn_cw",
    "action": "When this encoder is requested, records its position and clockwise direction; the final encoder completes an immediate calibration save without a question or panel undo.",
    "short_label": "TEACH KNOB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "78-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L78-L108"
     }
    ]
   }
  ],
  "knob_master": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Sets the output volume, including the audio sent over USB.",
    "short_label": "VOLUME",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "28-40",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L28-L40"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "310-317",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L310-L317"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "124-125",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L124-L125"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "163-166",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L163-L166"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "turn",
    "action": "Has no calibration prompt and does not change the learned button or encoder map.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_f3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays TOOT once at full velocity without changing the loop.",
    "short_label": "TOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays TOOT once at full velocity without changing the loop.",
    "short_label": "TOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays TOOT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_fs3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays TRUMP once at full velocity without changing the loop.",
    "short_label": "TRUMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays TRUMP once at full velocity without changing the loop.",
    "short_label": "TRUMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays TRUMP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_g3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays PFFT once at full velocity without changing the loop.",
    "short_label": "PFFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays PFFT once at full velocity without changing the loop.",
    "short_label": "PFFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays PFFT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_gs3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays RASPBERRY once at full velocity without changing the loop.",
    "short_label": "RASP.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays RASPBERRY once at full velocity without changing the loop.",
    "short_label": "RASP.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays RASPBERRY now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_a3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays WIND once at full velocity without changing the loop.",
    "short_label": "WIND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays WIND once at full velocity without changing the loop.",
    "short_label": "WIND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays WIND now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_as3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays FLATULENCE once at full velocity without changing the loop.",
    "short_label": "FLATUL.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays FLATULENCE once at full velocity without changing the loop.",
    "short_label": "FLATUL.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays FLATULENCE now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_b3": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays BOTTOM BURP once at full velocity without changing the loop.",
    "short_label": "BTM BURP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays BOTTOM BURP once at full velocity without changing the loop.",
    "short_label": "BTM BURP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays BOTTOM BURP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_c4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays AIR BISCUIT once at full velocity without changing the loop.",
    "short_label": "AIR BISC.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays AIR BISCUIT once at full velocity without changing the loop.",
    "short_label": "AIR BISC.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays AIR BISCUIT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_cs4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays RIPPER once at full velocity without changing the loop.",
    "short_label": "RIPPER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays RIPPER once at full velocity without changing the loop.",
    "short_label": "RIPPER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays RIPPER now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_d4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays SBD once at full velocity without changing the loop.",
    "short_label": "SBD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays SBD once at full velocity without changing the loop.",
    "short_label": "SBD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays SBD now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_ds4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays LET RIP once at full velocity without changing the loop.",
    "short_label": "LET RIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays LET RIP once at full velocity without changing the loop.",
    "short_label": "LET RIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays LET RIP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_e4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays TOOT once at full velocity without changing the loop.",
    "short_label": "TOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays TOOT once at full velocity without changing the loop.",
    "short_label": "TOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays TOOT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_f4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays TRUMP once at full velocity without changing the loop.",
    "short_label": "TRUMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays TRUMP once at full velocity without changing the loop.",
    "short_label": "TRUMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays TRUMP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_fs4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays PFFT once at full velocity without changing the loop.",
    "short_label": "PFFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays PFFT once at full velocity without changing the loop.",
    "short_label": "PFFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays PFFT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_g4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays RASPBERRY once at full velocity without changing the loop.",
    "short_label": "RASP.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays RASPBERRY once at full velocity without changing the loop.",
    "short_label": "RASP.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays RASPBERRY now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_gs4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays WIND once at full velocity without changing the loop.",
    "short_label": "WIND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays WIND once at full velocity without changing the loop.",
    "short_label": "WIND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays WIND now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_a4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays FLATULENCE once at full velocity without changing the loop.",
    "short_label": "FLATUL.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays FLATULENCE once at full velocity without changing the loop.",
    "short_label": "FLATUL.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays FLATULENCE now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_as4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays BOTTOM BURP once at full velocity without changing the loop.",
    "short_label": "BTM BURP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays BOTTOM BURP once at full velocity without changing the loop.",
    "short_label": "BTM BURP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays BOTTOM BURP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_b4": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays AIR BISCUIT once at full velocity without changing the loop.",
    "short_label": "AIR BISC.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays AIR BISCUIT once at full velocity without changing the loop.",
    "short_label": "AIR BISC.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays AIR BISCUIT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_c5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays RIPPER once at full velocity without changing the loop.",
    "short_label": "RIPPER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays RIPPER once at full velocity without changing the loop.",
    "short_label": "RIPPER",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays RIPPER now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_cs5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays SBD once at full velocity without changing the loop.",
    "short_label": "SBD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays SBD once at full velocity without changing the loop.",
    "short_label": "SBD",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays SBD now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_d5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays LET RIP once at full velocity without changing the loop.",
    "short_label": "LET RIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays LET RIP once at full velocity without changing the loop.",
    "short_label": "LET RIP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays LET RIP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_ds5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays TOOT once at full velocity without changing the loop.",
    "short_label": "TOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays TOOT once at full velocity without changing the loop.",
    "short_label": "TOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays TOOT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_e5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays TRUMP once at full velocity without changing the loop.",
    "short_label": "TRUMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays TRUMP once at full velocity without changing the loop.",
    "short_label": "TRUMP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays TRUMP now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_f5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays PFFT once at full velocity without changing the loop.",
    "short_label": "PFFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays PFFT once at full velocity without changing the loop.",
    "short_label": "PFFT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays PFFT now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_fs5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays RASPBERRY once at full velocity without changing the loop.",
    "short_label": "RASP.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays RASPBERRY once at full velocity without changing the loop.",
    "short_label": "RASP.",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays RASPBERRY now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "key_g5": [
   {
    "mode": "stopped",
    "gesture": "press",
    "action": "Plays WIND once at full velocity without changing the loop.",
    "short_label": "WIND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "press",
    "action": "Plays WIND once at full velocity without changing the loop.",
    "short_label": "WIND",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "34-35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L34-L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "press",
    "action": "Plays WIND now at full velocity and adds it to the nearest loop step, replacing the velocity of that sound if it is already there.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5834-5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5834-L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "85-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L85-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "130-132",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L132"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "release",
    "action": "Does not shorten the sample when you lift the key.",
    "short_label": "LET RING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Does not trigger another hit until the key is released and pressed again.",
    "short_label": "ONE SHOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "37-38",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L37-L38"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "53-54",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L53-L54"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "press",
    "action": "Does not answer a button or encoder calibration prompt.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "59-103",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L59-L103"
     }
    ]
   }
  ],
  "jack_midi_in": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Accepts channel 1 notes 53 to 79 at their received velocity to play or overdub the matching sounds, while note-off and MIDI clock or transport messages have no musical effect.",
    "short_label": "MIDI IN",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/main.c",
      "lines": "43-48",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/main.c#L43-L48"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/midi_uart.c",
      "lines": "18-25",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/midi_uart.c#L18-L25"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "66-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L66-L71"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Channel 1 CC120 or CC123 stops the loop and silences voices and effect tails without clearing its notes.",
    "short_label": "SILENCE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "35",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L35"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "66-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L66-L71"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "126",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L126"
     }
    ]
   }
  ],
  "jack_usb_c": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Sends the master output to a computer as stereo 16-bit 44.1 kHz USB audio.",
    "short_label": "USB AUDIO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/main.c",
      "lines": "30-42",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/main.c#L30-L42"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/usb.c",
      "lines": "11-15",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/usb.c#L11-L15"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "28-40",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L28-L40"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Accepts the same channel 1 notes and silence commands as MIDI IN, plus firmware identity, update and USB recovery requests.",
    "short_label": "USB MIDI",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "66-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L66-L71"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/main.c",
      "lines": "30-44",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/main.c#L30-L44"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/usb.c",
      "lines": "3-8",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/usb.c#L3-L8"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "338-347",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L338-L347"
     }
    ]
   },
   {
    "mode": "safe",
    "gesture": "press",
    "action": "Accepts a reinstall from the release’s bundled Python tool over USB despite the screen’s web-installer prompt.",
    "short_label": "REINSTALL",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "188-191",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L188-L191"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "220-224",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L220-L224"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "tools/fm1_install.py",
      "lines": "305-311",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L305-L311"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "tools/fm1_install.py",
      "lines": "351-359",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L351-L359"
     },
     {
      "kind": "doc",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "INSTALL.md",
      "lines": "24-43",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md#L24-L43"
     },
     {
      "kind": "doc",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "README.md",
      "lines": "80-89",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L80-L89"
     }
    ]
   }
  ],
  "screen": [
   {
    "mode": "stopped",
    "gesture": "shows",
    "action": "Shows the cartoon, the last triggered sound or initial key prompt, four effect values, and STOP with tempo.",
    "short_label": "STOP",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "75-126",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L75-L126"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "139-151",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L139-L151"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "shows",
    "action": "Shows the cartoon reacting to live and loop hits, their sound names, four effect values, tempo and the current step out of 16.",
    "short_label": "PLAY",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "39",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L39"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "75-126",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L75-L126"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "139-151",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L139-L151"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "shows",
    "action": "Shows REC with tempo and current step beneath the animated cartoon, sound name and four effect values.",
    "short_label": "REC",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "75-126",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L75-L126"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "139-151",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L139-L151"
     }
    ]
   },
   {
    "mode": "clear_notice",
    "gesture": "shows",
    "action": "Shows LOOP CLEARED and READY TO RECORD for about 1.4 seconds after the one-second REC hold.",
    "short_label": "LOOP CLEARED",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "16",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L16"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "44-47",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L44-L47"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "129-131",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L129-L131"
     }
    ]
   },
   {
    "mode": "calibration",
    "gesture": "shows",
    "action": "Requests each button and each clockwise encoder turn in order, then returns to play after saving, or abandons the pending map after 30 seconds of inactivity at a prompt.",
    "short_label": "CALIBRATION",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/panel.c",
      "lines": "46-108",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L46-L108"
     }
    ]
   },
   {
    "mode": "update_countdown",
    "gesture": "shows",
    "action": "Shows a countdown after two seconds of holding both OCT buttons and a brief cancellation notice if either is released before update entry.",
    "short_label": "UPDATE COUNT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "319-336",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L319-L336"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "16",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L16"
     }
    ]
   },
   {
    "mode": "update",
    "gesture": "shows",
    "action": "Shows package checking, loader staging, confirmation and restart progress, or a failure result before returning to play.",
    "short_label": "UPDATE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/main.c",
      "lines": "104-122",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/main.c#L104-L122"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/ota.c",
      "lines": "262-298",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L262-L298"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/ota.c",
      "lines": "320-327",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L320-L327"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/ota.c",
      "lines": "337-378",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L337-L378"
     }
    ]
   },
   {
    "mode": "uboot",
    "gesture": "shows",
    "action": "Displays UBOOT or UBOOT (USB) immediately before handing control to the chip updater.",
    "short_label": "UBOOT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "165-175",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L165-L175"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "334-347",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L334-L347"
     }
    ]
   },
   {
    "mode": "safe",
    "gesture": "shows",
    "action": "Shows a web-installer prompt, failure details and PLAY to retry, though the release’s Python installer can reinstall over USB.",
    "short_label": "SAFE MODE",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "180-218",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L180-L218"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "188-191",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L188-L191"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "220-224",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L220-L224"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "tools/fm1_install.py",
      "lines": "305-311",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L305-L311"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "tools/fm1_install.py",
      "lines": "351-359",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L351-L359"
     },
     {
      "kind": "doc",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "INSTALL.md",
      "lines": "24-43",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md#L24-L43"
     },
     {
      "kind": "doc",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "README.md",
      "lines": "80-89",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L80-L89"
     }
    ]
   },
   {
    "mode": "boot",
    "gesture": "shows",
    "action": "Shows the FMO splash and, when a new retained crash is present, a restart notice for about 2.5 seconds.",
    "short_label": "FMO",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "231-243",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L231-L243"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "265-277",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L265-L277"
     }
    ]
   },
   {
    "mode": "crash",
    "gesture": "shows",
    "action": "Shows fault details on red and restarts after about four seconds.",
    "short_label": "FMO CRASH",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/main_fm1.c",
      "lines": "142-162",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L142-L162"
     }
    ]
   }
  ]
 },
 "lights": {
  "button_fx": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_sel": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_env": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_lfo": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_edit": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_glo": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_home": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_save": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_arp": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_seq": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_oct_down": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_oct_up": [
   {
    "mode": "any",
    "gesture": "off",
    "action": "Stays dark during normal operation, with no dim button glow.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "17-24",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L17-L24"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "50-71",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L50-L71"
     }
    ]
   }
  ],
  "button_play_stop": [
   {
    "mode": "recording",
    "gesture": "lit",
    "action": "The red/orange PLAY lamp stays on while recording.",
    "short_label": "RECORDING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "46-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L46-L65"
     }
    ]
   },
   {
    "mode": "stopped",
    "gesture": "off",
    "action": "The red/orange PLAY lamp is dark while stopped.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "46-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L46-L65"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "off",
    "action": "The red/orange PLAY lamp is dark during playback without recording.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "46-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L46-L65"
     }
    ]
   }
  ],
  "led_play_stop_green": [
   {
    "mode": "playing",
    "gesture": "lit",
    "action": "The green PLAY lamp stays on during playback without recording.",
    "short_label": "PLAYING",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "46-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L46-L65"
     }
    ]
   },
   {
    "mode": "stopped",
    "gesture": "off",
    "action": "The green PLAY lamp is dark while stopped.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "46-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L46-L65"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "off",
    "action": "The green PLAY lamp is dark while the red/orange lamp indicates recording.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "46-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L46-L65"
     }
    ]
   }
  ],
  "button_rec": [
   {
    "mode": "recording",
    "gesture": "lit",
    "action": "Stays on while live hits are being recorded into the loop.",
    "short_label": "OVERDUB",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "off",
    "action": "Is dark during playback without recording.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     }
    ]
   },
   {
    "mode": "stopped",
    "gesture": "off",
    "action": "Is dark while stopped, including after clearing the loop.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     }
    ]
   }
  ],
  "key_lights": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Lights each held key and each key with a sample voice still playing, excluding effect tails.",
    "short_label": "HELD OR HIT",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "151-157",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L151-L157"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "169-170",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L169-L170"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/plat_fm1.c",
      "lines": "54-65",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L54-L65"
     }
    ]
   },
   {
    "mode": "playing",
    "gesture": "lit",
    "action": "Recorded sounds light their first keyboard copy among F3 through D#4 when the loop plays them, even if a later copy was used to record.",
    "short_label": "LOOP HITS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "77-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "169-170",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L169-L170"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     }
    ]
   },
   {
    "mode": "recording",
    "gesture": "lit",
    "action": "Recorded playback lights the first keyboard copy of each sound, while live hits can light any of its keyboard copies.",
    "short_label": "LOOP HITS",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "77-94",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L77-L94"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "169-170",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L169-L170"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/sample_bank.h",
      "lines": "5847",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/sample_bank.h#L5847"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "off",
    "action": "Goes dark when its key is released and no sample voice for that key remains active.",
    "short_label": "-",
    "evidence": "read-in-source",
    "source": [
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/app/ui.c",
      "lines": "72-74",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L72-L74"
     },
     {
      "kind": "source",
      "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
      "ref": "V1.0.0",
      "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
      "path": "firmware/src/dsp/omni.c",
      "lines": "169-170",
      "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L169-L170"
     }
    ]
   }
  ]
 },
 "groups": {
  "key_lights": [
   "led_f3",
   "led_fs3",
   "led_g3",
   "led_gs3",
   "led_a3",
   "led_as3",
   "led_b3",
   "led_c4",
   "led_cs4",
   "led_d4",
   "led_ds4",
   "led_e4",
   "led_f4",
   "led_fs4",
   "led_g4",
   "led_gs4",
   "led_a4",
   "led_as4",
   "led_b4",
   "led_c5",
   "led_cs5",
   "led_d5",
   "led_ds5",
   "led_e5",
   "led_f5",
   "led_fs5",
   "led_g5"
  ]
 },
 "sequencer_notes": {
  "action": "One RAM pattern spans 16 sixteenth-note steps; each sound can occupy each step once, with an updated velocity replacing its earlier velocity there, and a hit rounded forward skips its imminent playback to avoid a second immediate trigger.",
  "capacity": "All eleven distinct sounds fit on every step; eight audio voices share the output, so an overlapping ninth sound replaces the oldest active voice rather than removing a recorded step.",
  "restart": "Starting playback begins at step 1; stopping keeps the notes, while a one-second REC clear or restart removes them with no undo.",
  "effects": "Tempo and effects change live but are not stored in the pattern or saved to flash.",
  "evidence": "read-in-source",
  "source": [
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/dsp/omni.c",
    "lines": "63-94",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L63-L94"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/dsp/omni.c",
    "lines": "114-121",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/dsp/omni.c",
    "lines": "130-145",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L130-L145"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/project.c",
    "lines": "1-5",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/project.c#L1-L5"
   }
  ]
 },
 "switching_note": {
  "kept_on_unit": "The only saved user object is the learned button and encoder calibration; the supplied loader leaves those saved copies alone unless a sector happens to pass its update-record cleanup test. From the flash atlas: install (supplied update loader): For each program sector, skip equal bytes or erase, write and verify the incoming sector; flash head below 0x4000 is not written. Saved musical data above the program range is not part of this program pass (valid package and matching chip encryption key). install (supplied loader record cleanup): After installation, clear only valid update-record sectors. Ordinary saved projects, sounds and samples are not update records (After an install, erase 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 the family staging-record sector 0xE4000 and, on a first install from stock, stock record sector 0xE8000. Saved music does not hold that record. This loader does not skip 0x97000-0xDFFFF). every application start, including Safe Mode: At each application start, including before Safe Mode, if any byte in E0000..E0003 or E4F00..E4F07 is not FF, erase all five sectors E0000..E4FFF. Requires the expected JEDEC flash ID. Neither ownership nor valid staged-loader structure is checked. Other occupied bytes alone do not trigger cleanup (one of the update staging probes is not blank). first start and ordinary play: No project or effects flash read or save: project_load only fills effect defaults, om_init creates an empty RAM loop at 120 BPM, and the UI has no save handler. panel_init only reads calibration or keeps RAM/defaults. No settings migration or first-start setup save (all ordinary starts; calibration only writes if owner completes it). update request while Fart is running: Receive an installer upgrade request. Accepted package staging erases all five sectors, writes incoming loader body, checks its CRC and readback, then commits its JLFS header. After the host success reply, write and read-check the resume record and reset. A failed or refused OTA session calls ota_unstage and erases all five sectors even when validation failed before staging began; there is no device-side question (installer upgrade request received in normal play or Safe Mode). completed power-on calibration: Writes only one 4-KiB calibration copy according to the A/B rule; does not erase both sectors at once. Timeouts restore prior RAM map without a write. Save failure is not reported by the calibration UI (all 14 buttons and seven encoders have been learned). optional Mac rescue tool restoring stock V15: After a raw whole-flash dump, rewrites only program sectors different from hash-approved stock V15, high to low, verifies final whole-flash read against stock image plus the old tail, then restarts. Differences in the protected head abort before writes. This installs stock; it does not restore the raw dump or write the saved-data tail (--write supplied; this bypasses the --ask callback even if both flags are supplied). optional Mac rescue tool restoring stock V15: After a raw whole-flash dump, rewrites only program sectors different from hash-approved stock V15, high to low, verifies final whole-flash read against stock image plus the old tail, then restarts. Differences in the protected head abort before writes. This installs stock; it does not restore the raw dump or write the saved-data tail (--ask supplied without --write and owner types yes after backup and checks). What Fart Machine One writes over the previous firmware's data is in overwrites_previous; what the next firmware writes over Fart Machine One's is in when_you_leave.",
  "lost": "The loop, tempo and effect settings live only while the firmware runs; power-off, a restart or installing another version loses them, and SAVE does not keep them. From the flash atlas: Other firmwares reading Fart Machine One's data: FoMni reads and uses Fart Machine One's learned button and encoder calibration; FuMi-1 reads and uses Fart Machine One's learned button and encoder calibration; FiMba-1 beta reads and uses Fart Machine One's learned button and encoder calibration; AMB-1 reads and uses Fart Machine One's learned button and encoder calibration; Polly reads and uses Fart Machine One's learned button and encoder calibration. What Fart Machine One reads of other firmwares' data: Fart Machine One reads and uses FoMni's FoMni button calibration; Fart Machine One reads and uses AMB-1's AMB-1 panel calibration; Fart Machine One reads and uses Polly's Polly button and encoder calibration; Fart Machine One reads and uses FiMba-1 beta's FiMba-1 beta panel calibration; Fart Machine One reads and uses FuMi-1's FuMi-1 button and encoder calibration. Everything else of another firmware's looks empty or foreign to the reader.",
  "back_up_first": "There is no loop, effects or calibration export or restore tool in this release; record the sound over USB audio or the audio output before restarting if you want to keep a performance, and note your tempo and effect values separately.",
  "going_back_a_version": "This map establishes no earlier Fart release format; the RAM loop and effects cannot survive a version change, and whether a different version accepts the saved calibration needs that version’s source.",
  "fomni_data": "Fart does not read or save FoMni’s stored setup, so it leaves that setup untouched in ordinary use; it can read FoMni’s saved calibration and rewrites the shared calibration only if you complete calibration.",
  "own_writes": "Completing hardware calibration immediately writes its learned control map without a question or panel undo; timeout writes nothing. At every startup, including before Safe Mode, Fart checks two small regions in the update area and erases the whole area if either is not blank, without checking who stored the data or asking permission. An installer session started from Fart erases that same area even if the update fails or is refused; a completed install also replaces the program. Completing hardware calibration can also replace ChoralRoot’s legacy sounds 1–16, kept for returning to ChoralRoot 0.21 or older.",
  "cross_firmware": "Back up in the firmware you are leaving. See the switching advice in this section.",
  "evidence": "read-in-source",
  "source": [
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/project.c",
    "lines": "1-5",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/project.c#L1-L5"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/ui.c",
    "lines": "36-65",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L65"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/dsp/omni.c",
    "lines": "114-121",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L114-L121"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/panel.c",
    "lines": "10-44",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L10-L44"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/panel.c",
    "lines": "46-108",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L46-L108"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/storage.c",
    "lines": "49-64",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/storage.c#L49-L64"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/loader/ldr_core.c",
    "lines": "99-135",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/loader/ldr_core.c#L99-L135"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "249-255",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L249-L255"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/ota.c",
    "lines": "383-396",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L383-L396"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/main.c",
    "lines": "35-38",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/main.c#L35-L38"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "28-40",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L28-L40"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "249-264",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L249-L264"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "220-224",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L220-L224"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "338-345",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L338-L345"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/ota.c",
    "lines": "24-26",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L24-L26"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/ota.c",
    "lines": "296-298",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L296-L298"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/ota.c",
    "lines": "330-349",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/ota.c#L330-L349"
   }
  ],
  "startup_erase_risk": "See the switching advice in this section for the affected saved work. A pending X0X or Polly restore by itself does not trigger startup cleanup, but the information is erased if another occupied check region triggers cleanup or an installer session begins. Back up in the firmware you are leaving before switching.",
  "startup_erase_risk_grade": "inferred",
  "startup_erase_risk_basis": "Fart erase behavior is read-in-source; foreign overlaps use the supplied flash atlas and storage fragments, with stock geometry reported and Baud Girl geometry inferred, not tested.",
  "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": [
     "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.",
     "At start-up, Fart Machine One erases the space where firmware updates are prepared if a checked spot there holds data. This can erase stock data in that space. The exact locations of stock saved data are only reported."
    ],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns). 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. At start-up, Fart Machine One erases the space where firmware updates are prepared if a checked spot there holds data. This can erase stock data in that space. The exact locations of stock saved data are only reported.",
    "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": [
     "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.",
     "At start-up, Fart Machine One erases the space where firmware updates are prepared if a checked spot there holds data. This can erase Baud Girl’s saved work if it sits in that space, including the checked spots. Exact saved-data locations are unknown."
    ],
    "owner_text": "Possibly at risk (layout reported or inferred): Baud Girl presets (128); Baud Girl patterns (16, with locks). 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. At start-up, Fart Machine One erases the space where firmware updates are prepared if a checked spot there holds data. This can erase Baud Girl’s saved work if it sits in that space, including the checked spots. Exact saved-data locations are unknown.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "felucca",
    "name": "Felucca",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user presets 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 presets 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)"
   },
   {
    "from": "sloop",
    "name": "SLOOP",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01-U16",
      "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 U01-U16. 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)"
   },
   {
    "from": "x0x",
    "name": "X0X",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "X0X button calibration",
      "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: X0X button calibration. 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)"
   },
   {
    "from": "jiant",
    "name": "JIANT",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01-U16",
      "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 U01-U16. 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)"
   },
   {
    "from": "melodee",
    "name": "Melodee",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "shared user presets U001-U018",
      "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: shared user presets U001-U018. 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)"
   },
   {
    "from": "fomni",
    "name": "FoMni",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "FoMni button calibration"
    ],
    "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": "Carried over: FoMni button calibration. 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)"
   },
   {
    "from": "amb",
    "name": "AMB-1",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "AMB-1 panel calibration"
    ],
    "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": "Carried over: AMB-1 panel calibration. 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)"
   },
   {
    "from": "choralroot",
    "name": "ChoralRoot",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "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": "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)"
   },
   {
    "from": "ghoulbox",
    "name": "GHOULBOX",
    "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)"
   },
   {
    "from": "mvaveopen",
    "name": "M-VAVE FM-1 Open",
    "flags": "CS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "Open shared sample audio",
      "effect": "lost",
      "ways": [
       {
        "way": "automatically, only if sample audio reaches a checked spot where firmware updates are prepared and leaves data there",
        "effect": "lost"
       },
       {
        "way": "when you complete hardware calibration (without asking)",
        "effect": "lost"
       },
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       },
       {
        "way": "when you start a firmware install from Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 13",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 14",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 15",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open device preferences",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "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.",
     "Installing replaces Open’s sixteen USER projects, preferences and the information needed to read its sample bank, including the start of its sample storage. Export projects and the device sample bank before leaving Open. The required return through stock firmware has other unchecked data risks.",
     "At start-up, Fart Machine One erases the space where firmware updates are prepared if a checked spot there holds data. This can erase Open sample audio if the bank reaches that far. Export the device sample bank before leaving Open."
    ],
    "owner_text": "At risk by itself, under a condition: 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. 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. Installing replaces Open’s sixteen USER projects, preferences and the information needed to read its sample bank, including the start of its sample storage. Export projects and the device sample bank before leaving Open. The required return through stock firmware has other unchecked data risks. At start-up, Fart Machine One erases the space where firmware updates are prepared if a checked spot there holds data. This can erase Open sample audio if the bank reaches that far. Export the device sample bank before leaving Open.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fm106",
    "name": "FM-106",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "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": "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)"
   },
   {
    "from": "hortator",
    "name": "Hortator",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "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": "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)"
   },
   {
    "from": "obervave",
    "name": "OberVave",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "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": "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)"
   },
   {
    "from": "polly",
    "name": "Polly",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "Polly button and encoder calibration"
    ],
    "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": "Carried over: Polly button and encoder calibration. 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)"
   },
   {
    "from": "skiff",
    "name": "Skiff",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sound bank 1",
      "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 sound bank 1. 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)"
   },
   {
    "from": "sloopdx",
    "name": "sloopDX",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user presets 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 presets 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)"
   },
   {
    "from": "rainbow",
    "name": "Rainbow Mode",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01–U16, names and sixteen-step patterns without automation",
      "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 U01–U16, names and sixteen-step patterns without automation. 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)"
   },
   {
    "from": "duell",
    "name": "DUELL beta",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "saved patches",
      "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: saved patches. 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)"
   },
   {
    "from": "fimba",
    "name": "FiMba-1 beta",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "FiMba-1 beta panel calibration"
    ],
    "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": "Carried over: FiMba-1 beta panel calibration. 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)"
   },
   {
    "from": "maku",
    "name": "MAKU",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "inherited user preset bank 1",
      "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: inherited user preset bank 1. 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)"
   },
   {
    "from": "chord",
    "name": "fm1-chord",
    "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)"
   },
   {
    "from": "sloopbanks",
    "name": "SLOOP DX7 Banks",
    "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)"
   },
   {
    "from": "fumi",
    "name": "FuMi-1",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "FuMi-1 button and encoder calibration"
    ],
    "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": "Carried over: FuMi-1 button and encoder calibration. 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)"
   },
   {
    "from": "jangada",
    "name": "Jangada",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01-U16",
      "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 U01-U16. 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)"
   },
   {
    "from": "waveloop",
    "name": "WaveLoop FM-1",
    "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)"
   },
   {
    "from": "orbit",
    "name": "ORBIT",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "USER sounds U01-U16",
      "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 U01-U16. 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)"
   },
   {
    "from": "floyd",
    "name": "SLOOP Floyd FM",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01–U16",
      "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 U01–U16. 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)"
   },
   {
    "from": "winampfm",
    "name": "winampFM Synth",
    "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)"
   },
   {
    "from": "bubba",
    "name": "Bubba Machine (beta)",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "screen language pack",
      "effect": "lost",
      "ways": [
       {
        "way": "when you complete hardware calibration (without asking)",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "system preferences and last pattern",
      "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: screen language pack; system preferences and last pattern. 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)"
   },
   {
    "from": "salt",
    "name": "Felucca [Salt]",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01-U16",
      "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 U01-U16. 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)"
   },
   {
    "from": "pigeon",
    "name": "PIGEON",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "shared song and drum sample bank",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Fart Machine One",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "older user preset bank 1",
      "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.",
     "If your PIGEON sample bank reaches the storage that installing Fart Machine One writes over, PIGEON can no longer read any of the bank, either song or the kit. Export the PIGEON session and audio bank before switching."
    ],
    "owner_text": "At risk when you act: shared song and drum sample bank; older user preset bank 1. 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. If your PIGEON sample bank reaches the storage that installing Fart Machine One writes over, PIGEON can no longer read any of the bank, either song or the kit. Export the PIGEON session and audio bank before switching.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fm1move",
    "name": "FM1 Move",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01–U16",
      "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 U01–U16. 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)"
   },
   {
    "from": "fm1quest",
    "name": "FM1 Quest",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "user sounds U01–U16",
      "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 U01–U16. 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)"
   },
   {
    "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": [
     "Where Groove OS saves data and which firmware can read it are not public. Back up its projects and your own sounds separately before switching. It is not known whether they survive this switch.",
     "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": "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. Where Groove OS saves data and which firmware can read it are not public. Back up its projects and your own sounds separately before switching. It is not known whether they survive this switch. 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)"
   }
  ],
  "when_you_leave": [
   {
    "to": "stock",
    "name": "Stock V15",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "learned button and encoder calibration"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): learned button and encoder calibration.",
    "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": [
     "learned button and encoder calibration"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "felucca",
    "name": "Felucca",
    "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 preset (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)"
   },
   {
    "to": "sloop",
    "name": "SLOOP",
    "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 (asks or waits for you to turn again for that slot only; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save selected DX7 voices from the editor (the computer asks first about the slots it fills; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save the current sound from the editor (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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "x0x",
    "name": "X0X",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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 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)"
   },
   {
    "to": "jiant",
    "name": "JIANT",
    "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 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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "melodee",
    "name": "Melodee",
    "flags": "CS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself, under a condition: learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fomni",
    "name": "FoMni",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "learned button and encoder calibration"
    ],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Carried over: learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "amb",
    "name": "AMB-1",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "learned button and encoder calibration"
    ],
    "kept_unseen": [],
    "notes": [
     "The saved button and encoder mapping carries over. This does not import saved pieces, songs, clips or sound choices."
    ],
    "owner_text": "Carried over: learned button and encoder calibration. The saved button and encoder mapping carries over. This does not import saved pieces, songs, clips or sound choices.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "choralroot",
    "name": "ChoralRoot",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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": [],
    "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)"
   },
   {
    "to": "ghoulbox",
    "name": "GHOULBOX",
    "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 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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "mvaveopen",
    "name": "M-VAVE FM-1 Open",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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": [],
    "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)"
   },
   {
    "to": "fm106",
    "name": "FM-106",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "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": "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": "-",
    "weakest_grade": null,
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Nothing shared.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "obervave",
    "name": "OberVave",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Nothing shared.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "polly",
    "name": "Polly",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "learned button and encoder calibration"
    ],
    "kept_unseen": [],
    "notes": [
     "The saved button and encoder mapping carries over. This does not import saved pieces, songs, clips or sound choices."
    ],
    "owner_text": "Carried over: learned button and encoder calibration. The saved button and encoder mapping carries over. This does not import saved pieces, songs, clips or sound choices.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "skiff",
    "name": "Skiff",
    "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, import, erase or rename 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)"
   },
   {
    "to": "sloopdx",
    "name": "sloopDX",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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": "lost"
       },
       {
        "way": "when you save the current sound from the editor (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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "rainbow",
    "name": "Rainbow Mode",
    "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 preset (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)"
   },
   {
    "to": "duell",
    "name": "DUELL beta",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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 when you act: learned button and encoder calibration. 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": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "learned button and encoder calibration"
    ],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Carried over: learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "maku",
    "name": "MAKU",
    "flags": "-",
    "weakest_grade": null,
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Nothing shared.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "chord",
    "name": "fm1-chord",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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 save a user sound (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 send, store or erase a user sound directly with a MIDI tool (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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "sloopbanks",
    "name": "SLOOP DX7 Banks",
    "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 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": "lost"
       },
       {
        "way": "when you save selected DX7 voices from the editor (the computer asks first about the slots it fills; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you save the current sound from the editor (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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "fumi",
    "name": "FuMi-1",
    "flags": "K",
    "weakest_grade": "read-in-source",
    "at_risk": [],
    "possibly_at_risk": [],
    "carried_over": [
     "learned button and encoder calibration"
    ],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Carried over: learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "jangada",
    "name": "Jangada",
    "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 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": "lost"
       },
       {
        "way": "when you send a user sound from the editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you send user sounds to Jangada with a computer tool, without the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "way": "when you store a user 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)"
   },
   {
    "to": "waveloop",
    "name": "WaveLoop FM-1",
    "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)"
   },
   {
    "to": "orbit",
    "name": "ORBIT",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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": "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 user sound from the web editor (without asking; writes the whole bank)",
        "effect": "lost"
       },
       {
        "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": "lost"
       },
       {
        "way": "when you store a user sound from the web 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)"
   },
   {
    "to": "floyd",
    "name": "SLOOP Floyd FM",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "effect": "lost",
      "ways": [
       {
        "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": "lost"
       },
       {
        "way": "when you save the current sound from the editor (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"
       }
      ]
     }
    ],
    "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)"
   },
   {
    "to": "winampfm",
    "name": "winampFM Synth",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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": "lost"
       },
       {
        "way": "when you send, store or erase a user sound directly with a MIDI tool (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)"
   },
   {
    "to": "bubba",
    "name": "Bubba Machine (beta)",
    "flags": "ACS",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "At risk by itself: learned button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "salt",
    "name": "Felucca [Salt]",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you save a user sound (asks or waits for you to turn again for that slot only; 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)"
   },
   {
    "to": "pigeon",
    "name": "PIGEON",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "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": [],
    "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)"
   },
   {
    "to": "fm1move",
    "name": "FM1 Move",
    "flags": "S",
    "weakest_grade": "read-in-source",
    "at_risk": [
     {
      "object": "learned button and encoder calibration",
      "effect": "lost",
      "ways": [
       {
        "way": "when you import a preset file from the device page (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 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": "lost"
       },
       {
        "way": "when you store a user sound from the device page (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)"
   },
   {
    "to": "fm1quest",
    "name": "FM1 Quest",
    "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 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": "lost"
       },
       {
        "way": "when you save the current sound from the editor (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 send, save or erase a user sound with computer commands (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)"
   },
   {
    "to": "grooveos",
    "name": "Groove OS",
    "flags": "?",
    "weakest_grade": null,
    "at_risk": [],
    "possibly_at_risk": [
     "learned button and encoder calibration"
    ],
    "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): learned button and encoder calibration. 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)"
   }
  ]
 },
 "recovery_notes": {
  "action": "Four failed starts enter the chip updater if repeated startup failures continue through Safe Mode; completed calibration uses the new RAM map even if saving fails, because the calibration UI does not check or display the save result. In Safe Mode, the bundled Python installer can reinstall over USB despite the inherited web-installer prompt.",
  "evidence": "read-in-source",
  "source": [
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "370-395",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L370-L395"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/panel.c",
    "lines": "102-108",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/panel.c#L102-L108"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/plat_fm1.c",
    "lines": "87-88",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/plat_fm1.c#L87-L88"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "188-191",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L188-L191"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "220-224",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L220-L224"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "tools/fm1_install.py",
    "lines": "305-311",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L305-L311"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "tools/fm1_install.py",
    "lines": "351-359",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L351-L359"
   },
   {
    "kind": "doc",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "INSTALL.md",
    "lines": "24-43",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md#L24-L43"
   },
   {
    "kind": "doc",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "README.md",
    "lines": "80-89",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L80-L89"
   }
  ]
 },
 "midi_notes": {
  "action": "The playback engine sends no MIDI notes; its UI accepts only channel 1 note-ons with positive velocity and channel 1 CC120/123, so note-offs, zero-velocity notes, clock and MIDI transport do not change musical state.",
  "evidence": "read-in-source",
  "source": [
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/ui.c",
    "lines": "66-71",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L66-L71"
   },
   {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/dsp/omni.c",
    "lines": "124-171",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/dsp/omni.c#L124-L171"
   }
  ]
 },
 "disagreements": [
  {
   "topic": "Safe-mode recovery prompt versus the install guide",
   "docs_say": "The install guide uses the release’s Python installer and says a separate browser installer is unnecessary.",
   "source_says": "The Safe Mode screen points to a web installer, while its USB handler accepts the shipped Python tool’s upgrade requests; the retained browser page is branded for FoMni.",
   "docs_ref": {
    "kind": "doc",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "INSTALL.md",
    "lines": "24-43",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md#L24-L43"
   },
   "source_ref": {
    "kind": "source",
    "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
    "ref": "V1.0.0",
    "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
    "path": "firmware/src/app/main_fm1.c",
    "lines": "188-191",
    "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L188-L191"
   },
   "source": [
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "188-191",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L188-L191"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "220-224",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L220-L224"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "tools/fm1_install.py",
     "lines": "305-311",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L305-L311"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "tools/fm1_install.py",
     "lines": "351-359",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/tools/fm1_install.py#L351-L359"
    },
    {
     "kind": "doc",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "INSTALL.md",
     "lines": "24-43",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/INSTALL.md#L24-L43"
    },
    {
     "kind": "doc",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "README.md",
     "lines": "80-89",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L80-L89"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "web/omni_installer.html",
     "lines": "10",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/web/omni_installer.html#L10"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "web/omni_installer.html",
     "lines": "37",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/web/omni_installer.html#L37"
    }
   ],
   "owner_action": "With USB connected and the release’s installer dependencies ready, run python tools/fm1_install.py fart-machine-one.fwsc from the matching release folder to reinstall from Safe Mode."
  }
 ],
 "documentation_notes": [
  {
   "topic": "Inherited FoMni guide",
   "note": "docs/UPSTREAM-README.md documents the ancestor’s chord harp, pages and autosave; it is provenance, not the control guide for Fart Machine One. This release has one music screen and only PLAY, REC, tempo, four effects and MASTER as active musical controls.",
   "source": [
    {
     "kind": "doc",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "docs/UPSTREAM-README.md",
     "lines": "1-8",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/docs/UPSTREAM-README.md#L1-L8"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/ui.c",
     "lines": "36-74",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L74"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/project.c",
     "lines": "1-5",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/project.c#L1-L5"
    }
   ]
  },
  {
   "topic": "No confirmed current README contradiction",
   "note": "The Fart README controls and RAM-only loop claims agree with the handlers read for this map; it names retained calibration and recovery shortcuts without spelling out their gestures.",
   "source": [
    {
     "kind": "doc",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "README.md",
     "lines": "115-147",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L115-L147"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/ui.c",
     "lines": "36-74",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/ui.c#L36-L74"
    },
    {
     "kind": "source",
     "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
     "ref": "V1.0.0",
     "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
     "path": "firmware/src/app/main_fm1.c",
     "lines": "298-336",
     "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/firmware/src/app/main_fm1.c#L298-L336"
    }
   ]
  }
 ],
 "not_mapped": [
  "No behavior was tested on a physical FM-1; USB descriptors and audio behavior are source readings, not measurements.",
  "Screens and behavior inside the chip’s proprietary updater are not mapped; the map covers entry into it.",
  "No earlier Fart release or future calibration loader was supplied, so downgrade calibration compatibility is not established."
 ],
 "licence_source": [
  {
   "kind": "doc",
   "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
   "ref": "V1.0.0",
   "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
   "path": "LICENSING.md",
   "lines": "3-6",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/LICENSING.md#L3-L6"
  },
  {
   "kind": "doc",
   "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
   "ref": "V1.0.0",
   "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
   "path": "LICENSING.md",
   "lines": "11-15",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/LICENSING.md#L11-L15"
  },
  {
   "kind": "doc",
   "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
   "ref": "V1.0.0",
   "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
   "path": "README.md",
   "lines": "155-159",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/README.md#L155-L159"
  }
 ],
 "author_note": "The tree names Adam; the author field uses the repository handle rather than an inferred full name.",
 "author_source": [
  {
   "kind": "doc",
   "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
   "ref": "V1.0.0",
   "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
   "path": "docs/ARTWORK-PROVENANCE.md",
   "lines": "3",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/docs/ARTWORK-PROVENANCE.md#L3"
  },
  {
   "kind": "doc",
   "repo": "adamcharleswilsonmusic-code/Fart-Machine-One",
   "ref": "V1.0.0",
   "commit": "784347a87f32687db273842e7a51fa0bcc1d566b",
   "path": "LICENSING.md",
   "lines": "11",
   "url": "https://github.com/adamcharleswilsonmusic-code/Fart-Machine-One/blob/784347a87f32687db273842e7a51fa0bcc1d566b/LICENSING.md#L11"
  }
 ],
 "refresh_check_fixes": [
  {
   "round": 1,
   "error": "1 startup erase warning",
   "fixed": "Owner text now states every-start cleanup before Safe Mode, its ownership-blind whole-area erase, failed/refused update erasure, and possible loss of foreign saved work with layout caveats; switching-table absence and backup precautions are explicit.",
   "at": "switching_note.own_writes; switching_note.startup_erase_risk; switching_note.cross_firmware; fart.md: Before you switch firmware; fart.storage.json: owner_switching_fact and switching_table_status"
  },
  {
   "round": 1,
   "error": "2 Safe Mode installer mismatch",
   "fixed": "Recorded the screen-versus-guide disagreement and explained the release’s Python reinstall command for Safe Mode; appended the USB recovery entry without moving existing entries.",
   "at": "disagreements[0]; modes[8]; controls.screen[8]; controls.jack_usb_c[2]; recovery_notes; fart.md: Safe mode and recovery"
  },
  {
   "round": 1,
   "error": "3 licence qualification",
   "fixed": "Qualified GPL code, Apache-2.0 SDK files and separate unverified recording terms, with pinned licensing evidence and matching guide footer.",
   "at": "licence; licence_source; fart.md: footer"
  },
  {
   "round": 1,
   "error": "4 inferred author name",
   "fixed": "Replaced the expanded full name with the repository handle and kept the tree’s Adam credit as a sourced note.",
   "at": "author; author_note; author_source; fart.md: footer"
  },
  {
   "round": 1,
   "error": "5 STOP REC label",
   "fixed": "Changed the recording-state PLAY overlay to STOP; its existing action already says playback and overdubbing both stop while loop notes remain.",
   "at": "controls.button_play_stop[2].short_label; fart.md: Record and run the loop already agrees"
  },
  {
   "round": 2,
   "error": "1 conditional startup erase warning",
   "fixed": "Changed the bold owner warning to require data in either checked region before the whole update area is erased; retained the warning about foreign saved work and cleanup before Safe Mode.",
   "at": "fart.md: Before you switch firmware, bold startup warning"
  },
  {
   "round": 2,
   "error": "2 contrastive voice pattern",
   "fixed": "Removed the contrast with an old updater and stated the risk to another firmware’s saved work directly in both artifacts.",
   "at": "switching_note.startup_erase_risk; fart.md: Before you switch firmware, overlap warning"
  },
  {
   "round": "overlay-fix-r1",
   "at": "controls.button_oct_down[3].gesture",
   "old": "long_press",
   "new": "press_with:button_oct_up",
   "why": "firmware/src/app/main_fm1.c:319-336@784347a87f32687db273842e7a51fa0bcc1d566b"
  },
  {
   "round": "overlay-fix-r1",
   "at": "controls.button_oct_down[3].short_label",
   "old": "UPDATE MODE",
   "new": "UPDATE 5s",
   "why": "firmware/src/app/main_fm1.c:165-175@784347a87f32687db273842e7a51fa0bcc1d566b"
  },
  {
   "round": "overlay-fix-r1",
   "at": "controls.button_oct_up[3].gesture",
   "old": "long_press",
   "new": "press_with:button_oct_down",
   "why": "firmware/src/app/main_fm1.c:319-336@784347a87f32687db273842e7a51fa0bcc1d566b"
  },
  {
   "round": "overlay-fix-r1",
   "at": "controls.button_oct_up[3].short_label",
   "old": "UPDATE MODE",
   "new": "UPDATE 5s",
   "why": "firmware/src/app/main_fm1.c:165-175@784347a87f32687db273842e7a51fa0bcc1d566b"
  }
 ]
}