{
 "firmware": "M-VAVE stock firmware",
 "slug": "stock-v15",
 "author": "M-VAVE (Cuvave)",
 "repo": null,
 "licence": "Proprietary, © M-VAVE (CUVAVE). Link to M-VAVE's download; never rehost the .fwsc.",
 "closed_source": true,
 "mapped_release": "V15 (firmware dated 2026-07-30)",
 "mapped_commit": null,
 "release_date": "2026-07-30",
 "date_mapped": "2026-10-13",
 "evidence_note": "Closed source: every entry comes from M-VAVE's own V15 manual (31-page booklet, created 2026-08-20) or its product photo, graded vendor-doc. Nothing here was measured on a unit.",
 "turns_it_into": "What the FM-1 ships as: a 6-operator, 32-algorithm FM synth that reads DX7 voice banks, with six re-orderable effects, a 7-mode arpeggiator and a 16-step, 16-pattern sequencer.",
 "docs": [
  {
   "title": "M-VAVE FM-1 manual, V15 booklet (31 pp., EN + CN)",
   "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf",
   "words": null,
   "read_at": "2026-10-13"
  },
  {
   "title": "Older 109-page manual (9 languages, predates V13; the one most people link)",
   "url": "https://m.media-amazon.com/images/I/A1WOydif9HL.pdf",
   "words": null,
   "read_at": "2026-10-13"
  },
  {
   "title": "FM-1 MIDI control (EN)",
   "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1%20MIDI%20EN.docx",
   "words": null,
   "read_at": "2026-10-13"
  },
  {
   "title": "Firmware release notes",
   "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
   "words": null,
   "read_at": "2026-10-13"
  }
 ],
 "install": {
  "hub": "https://fm1.designburgapps.com/ (its 'return to official V15' card takes M-VAVE's own file only)",
  "official": "https://www.m-vave.com/download"
 },
 "part_id_notes": "In EDIT mode the black keys carry M-VAVE's printed legends: F#3 OP1, G#3 OP2, A#3 OP3, C#4 OP4, D#4 OP5, F#4 OP6, G#4 PIT, A#4 GLO, C#5 MONO, D#5 POLY; F#5 is unlabelled. The GLO key (A#4) and the GLO button do different things. Reconciled to the drawing's part ids (output/tutorials/_panels/m-vave-fm1, branch fm1/panel 4027d71) on 2026-10-13 by the lead session: the drawing has no separate button lamps, so what a button's light shows moved from led_<button> to lights.button_<button> (led_play_stop_green to lights.button_play_stop with light='green'); led_key_<note> became lights.led_<note>; led_keys_all became lights.key_lights, with groups.key_lights listing the 27 key-light parts; jack_usb_c became jack_usb. Originals: _before-reconcile/.",
 "modes": [
  {
   "id": "home",
   "name": "Home (oscilloscope)",
   "how_to_get_there": "Press HOME at any time.",
   "what_it_is": "The output as a moving waveform; top bar shows the loaded voice.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.9",
     "section": "HOME",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "fx",
   "name": "FX (effect chain)",
   "how_to_get_there": "Press FX; press FX again for Home.",
   "what_it_is": "Six effect slots in a 3x2 grid; SELECT moves between them, KNOB 1-4 edit the selected one.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.7",
     "section": "FX",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "fx_grab",
   "name": "FX, effect grabbed",
   "how_to_get_there": "In FX mode press SEL; press SEL again to drop it.",
   "what_it_is": "The highlighted effect is held so SELECT can move it in the chain.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.7",
     "section": "SEL",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "env",
   "name": "ENV",
   "how_to_get_there": "Press ENV (it also switches the envelope on); press again to switch it off.",
   "what_it_is": "Amp envelope, attack/decay/sustain/release 0-100%.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.7",
     "section": "ENV",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "lfo",
   "name": "LFO (2 pages)",
   "how_to_get_there": "Press LFO; SELECT turns the page; press LFO again for Home.",
   "what_it_is": "Page 1 wave, speed, pitch depth, amp depth; page 2 delay, pitch sensitivity, LFO sync, osc sync.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.5",
     "section": "In LFO Mode",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.8",
     "section": "LFO",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "edit",
   "name": "EDIT (operator editing)",
   "how_to_get_there": "Press EDIT; the labelled black keys pick what to edit; press EDIT again to leave.",
   "what_it_is": "Six pages per operator (OP1-OP6), two for the pitch envelope (PIT), two for voice-wide settings (GLO key).",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.5",
     "section": "In Edit Mode",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.6",
     "section": "PIT / GLO",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.8",
     "section": "EDIT",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "edit_rename",
   "name": "EDIT > GLO key > Rename",
   "how_to_get_there": "In EDIT, press the GLO key, SELECT to page 2, turn KNOB 2 right.",
   "what_it_is": "Rename the voice.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.8",
     "section": "Rename",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "edit_copy",
   "name": "EDIT > GLO key > Copy Voice",
   "how_to_get_there": "In EDIT, GLO key page 2, turn KNOB 3 right.",
   "what_it_is": "Copy another voice over this one.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.8",
     "section": "Copy Voice",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "glo",
   "name": "GLO (global settings, 2 pages)",
   "how_to_get_there": "Press the GLO button.",
   "what_it_is": "Page 1 MIDI channel, effect channel, bend up/down; page 2 reset a bank, velocity, glide mode and time.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.6",
     "section": "In Globe Mode",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.9",
     "section": "GLO",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "glo_reset",
   "name": "GLO > Reset Patches",
   "how_to_get_there": "In GLO page 2, turn KNOB 1 right.",
   "what_it_is": "Pick bank A-D to restore to its imported voices; SELECT right confirms, left cancels.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.9",
     "section": "Reset Patches",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "arp",
   "name": "ARP (2 pages)",
   "how_to_get_there": "Press ARP (switches the arpeggiator on); press again to switch it off. Not while SEQ is on.",
   "what_it_is": "Page 1 mode, octave, rate, tempo; page 2 gate, swing, latch, sync.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.6",
     "section": "In ARP Mode",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.10",
     "section": "ARP",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "seq",
   "name": "SEQ (3 pages)",
   "how_to_get_there": "Press SEQ (switches the sequencer on); press again to switch it off. Not while ARP is on.",
   "what_it_is": "16-step patterns: page 1 pattern, clear, chain, steps; page 2 voice, rate, tempo, gate; page 3 swing, sync, transpose.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.6",
     "section": "In SEQ Mode",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.10",
     "section": "SEQ",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.11",
     "section": "Activation",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "seq_rec",
   "name": "SEQ recording",
   "how_to_get_there": "With SEQ on, press REC; press REC again to stop recording.",
   "what_it_is": "Each note you play goes into the next step.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.11",
     "section": "Sequence Recording",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
     "read_at": "2026-10-13"
    }
   ]
  },
  {
   "id": "sysex_bank",
   "name": "Receiving a voice bank",
   "how_to_get_there": "Appears when a DX7-format voice bank arrives over MIDI SysEx.",
   "what_it_is": "Pick bank A-D to store the 32 received voices.",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.10",
     "section": "FM-1 SysEx Bank Save",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
     "read_at": "2026-10-13"
    }
   ]
  }
 ],
 "controls": {
  "button_fx": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the effect chain (six slots); press again for Home.",
    "short_label": "EFFECTS",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "FX",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_sel": [
   {
    "mode": "fx",
    "gesture": "press",
    "action": "Grabs the highlighted effect so SELECT can move it in the chain; press again to drop it there.",
    "short_label": "GRAB FX",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "SEL",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "Outside FX mode it does nothing (the manual says it works only inside FX).",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "SEL",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_env": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Switches the amp envelope on and opens its page; pressed again, switches it off. Off by default.",
    "short_label": "ENVELOPE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "ENV",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_lfo": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the LFO pages; press again for Home.",
    "short_label": "LFO",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "LFO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_edit": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens operator editing: the labelled black keys pick an operator, the pitch envelope or voice settings. Press again to leave.",
    "short_label": "EDIT FM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_glo": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Opens the global settings (MIDI, bend, bank reset, velocity, glide).",
    "short_label": "GLOBAL",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_home": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Back to the Home oscilloscope screen.",
    "short_label": "HOME",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "HOME",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "long_press",
    "action": "Switches Bluetooth MIDI on or off.",
    "short_label": "BLUETOOTH",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "HOME",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_save": [
   {
    "mode": "any",
    "gesture": "hold",
    "action": "Saves the voice and all pending changes (effects, patterns, global settings) to flash.",
    "short_label": "SAVE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "SAVE",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "SAVE",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_arp": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Switches the arpeggiator on and opens its settings; pressed in ARP mode, switches it off. Refused while SEQ is on.",
    "short_label": "ARP ON/OFF",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_seq": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Switches the sequencer on and opens its settings; pressed in SEQ mode, switches it off. Refused while ARP is on.",
    "short_label": "SEQ ON/OFF",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Activation Method",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Deactivation",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_play_stop": [
   {
    "mode": "seq",
    "gesture": "press",
    "action": "Starts or stops the pattern.",
    "short_label": "PLAY/STOP",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "PLAY/STOP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "With SEQ off: does nothing but say SEQ must be on first.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "PLAY/STOP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_rec": [
   {
    "mode": "seq",
    "gesture": "press",
    "action": "Starts recording (stopped or playing); pressed while recording, stops recording.",
    "short_label": "REC",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "REC",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press",
    "action": "With SEQ off: does nothing but say SEQ must be on first.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "REC",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "hold",
    "action": "Long-hold REC and turn SELECT to move between steps, then hold keys to add or replace notes, or leave a step empty for a rest.",
    "short_label": "STEP EDIT",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Rests and Note Replacement",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_oct_down": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Shifts the keyboard one octave down (to -3).",
    "short_label": "OCT -",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "OCT- / OCT+",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_up",
    "action": "Both together: octave and transpose back to 0.",
    "short_label": "RESET",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Combo",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_oct_up": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Shifts the keyboard one octave up (to +3).",
    "short_label": "OCT +",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "OCT- / OCT+",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "press_with:button_oct_down",
    "action": "Both together: octave and transpose back to 0.",
    "short_label": "RESET",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Combo",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "knob_master": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Output volume (a Volume popup shows).",
    "short_label": "VOLUME",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "MASTER",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.4",
      "section": "popups",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=4",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_select": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Turns the page of the current mode (right: next page, left: back).",
    "short_label": "PAGE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "SELECT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Moves between the six effect slots.",
    "short_label": "FX SLOT",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "SELECT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "FX",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "fx_grab",
    "gesture": "turn",
    "action": "Moves the grabbed effect along the chain.",
    "short_label": "MOVE FX",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "SEL",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "turn_while_holding:key_f3",
    "action": "Hold the note on its step and turn SELECT to stretch it into a long note; let go at the last step. (F3 stands for any key.)",
    "short_label": "LONG NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Recording Long Notes",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "turn_while_holding:button_rec",
    "action": "Moves between steps for adding, replacing or resting.",
    "short_label": "STEP",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Rests and Note Replacement",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "turn",
    "action": "Confirms the new name.",
    "short_label": "CONFIRM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_copy",
    "gesture": "turn",
    "action": "Confirms overwriting this voice with the chosen one.",
    "short_label": "CONFIRM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1.txt (firmware release notes)",
      "lines": "V15 EN, Edit item 3 ('rotate select to confirm')",
      "section": "V15 EN, Edit item 3 ('rotate select to confirm')",
      "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Copy Voice",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo_reset",
    "gesture": "turn",
    "action": "Right confirms the bank reset, left cancels.",
    "short_label": "CONFIRM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "Reset Patches",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_presets": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Loads voice 001-128 at once (wraps round); a list pops up for about a second.",
    "short_label": "VOICE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "PRESETS",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "turn",
    "action": "Inactive: with SEQ on, each pattern's voice is set on SEQ page 2.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Pattern Management",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_algorithm": [
   {
    "mode": "any",
    "gesture": "turn",
    "action": "Algorithm 1-32; a diagram of how the six operators connect pops up.",
    "short_label": "ALGORITHM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "ALGORITHM",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_down",
    "action": "Transpose down, 0 to -12 semitones (saved with the global settings).",
    "short_label": "TRANSPOSE -",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "ALGORITHM",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Transpose",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "turn_while_holding:button_oct_up",
    "action": "Transpose up, 0 to +12 semitones.",
    "short_label": "TRANSPOSE +",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.2",
      "section": "ALGORITHM",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Transpose",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_knob1": [
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Filter and Reverb: sub-type (filter LP/BP/HP, reverb room/hall/plate). Delay, distortion, chorus, phaser: their first value.",
    "short_label": "FX TYPE/P1",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.4",
      "section": "In FX Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=4",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "effect parameters",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "On/Off toggle",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Attack 0-100%.",
    "short_label": "ATTACK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In ENV Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Page 1: LFO wave (triangle, saw down, saw up, square, sine, sample and hold). Page 2: delay before the LFO starts.",
    "short_label": "WAVE/DELAY",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In LFO Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "LFO pages",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "turn",
    "action": "Operator pages 1-6 (SELECT): detune / rate 1 / level 1 / mod sensitivity / left depth / left curve. PIT pages: rate 1 / level 1. GLO-key page 1: algorithm; page 2: init voice (turn right).",
    "short_label": "OP PARAM 1",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In Edit Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "PIT / GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "GLO key",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo",
    "gesture": "turn",
    "action": "Page 1: MIDI receive channel (ALL or 1-16). Page 2: turn right to open the bank reset panel.",
    "short_label": "MIDI CH/RST",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In Globe Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo_reset",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank to reset (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "Reset Patches",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Page 1: mode (up, down, inclusive, exclusive, random, order, repeat). Page 2: gate 20-100%.",
    "short_label": "MODE/GATE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In ARP Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "Arpeggiator Modes",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "turn",
    "action": "Page 1: pattern 1-16. Page 2: the pattern's voice 1-128. Page 3: swing 50-75%.",
    "short_label": "PATTERN...",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In SEQ Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Chain / Step / Gate / Swing",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Transpose",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "turn",
    "action": "Nothing.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_copy",
    "gesture": "turn",
    "action": "Nothing.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Copy Voice",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "sysex_bank",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank that receives the 32 voices (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "FM-1 SysEx Bank Save",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_knob2": [
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "The selected effect's next value (e.g. filter cutoff, reverb decay, delay rate, distortion tone).",
    "short_label": "FX PARAM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.4",
      "section": "In FX Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=4",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "effect parameters",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "On/Off toggle",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Decay 0-100%.",
    "short_label": "DECAY",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In ENV Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Page 1: speed 0-99. Page 2: pitch sensitivity 0-7.",
    "short_label": "SPEED/PSENS",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In LFO Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "LFO pages",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "turn",
    "action": "Operator pages: coarse / rate 2 / level 2 / key velocity / right depth / right curve. PIT: rate 2 / level 2. GLO-key page 1: feedback; page 2: rename (turn right).",
    "short_label": "OP PARAM 2",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In Edit Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "PIT / GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "GLO key",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo",
    "gesture": "turn",
    "action": "Page 1: MIDI channel for effect control (1-16). Page 2: keyboard velocity 1-127.",
    "short_label": "FX CH/VEL",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In Globe Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo_reset",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank to reset (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "Reset Patches",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Page 1: octaves 1-4. Page 2: swing 50-75%.",
    "short_label": "OCTAVE/SWING",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In ARP Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "Arpeggiator Modes",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "turn",
    "action": "Page 1: clear. Page 2: rate. Page 3: follow external MIDI clock on/off.",
    "short_label": "CLEAR...",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In SEQ Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Chain / Step / Gate / Swing",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Transpose",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "turn",
    "action": "Turn left to cancel renaming.",
    "short_label": "CANCEL",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_copy",
    "gesture": "turn",
    "action": "Nothing.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Copy Voice",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "sysex_bank",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank that receives the 32 voices (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "FM-1 SysEx Bank Save",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "turn",
    "action": "Sets each step's rate while you record (SEQ page 2).",
    "short_label": "STEP RATE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Adjust RATE During Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_knob3": [
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "The selected effect's next value (e.g. filter Q, reverb or delay mix, distortion level).",
    "short_label": "FX PARAM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.4",
      "section": "In FX Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=4",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "effect parameters",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "On/Off toggle",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Sustain 0-100%.",
    "short_label": "SUSTAIN",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In ENV Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Page 1: pitch modulation depth 0-99. Page 2: LFO restarts on each note, on or off.",
    "short_label": "PMD/LFOSYNC",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In LFO Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "LFO pages",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "turn",
    "action": "Operator pages: fine / rate 3 / level 3 / osc mode ratio or fixed / break point / rate scaling. PIT: rate 3 / level 3. GLO-key page 1: osc sync; page 2: copy voice (turn right).",
    "short_label": "OP PARAM 3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In Edit Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "PIT / GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "GLO key",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo",
    "gesture": "turn",
    "action": "Page 1: pitch bend up 1-24 semitones. Page 2: glide trigger, full time or fingered (mono only).",
    "short_label": "BEND+/GLIDE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In Globe Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo_reset",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank to reset (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "Reset Patches",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Page 1: rate. Page 2: latch on/off.",
    "short_label": "RATE/LATCH",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In ARP Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "Arpeggiator Modes",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "turn",
    "action": "Page 1: chain, how many patterns play in a row (1-16). Page 2: tempo 30-300 BPM. Page 3: transpose -24 to +24.",
    "short_label": "CHAIN...",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In SEQ Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Chain / Step / Gate / Swing",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Transpose",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "turn",
    "action": "Picks the character.",
    "short_label": "CHARACTER",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_copy",
    "gesture": "turn",
    "action": "Turn left to leave without copying.",
    "short_label": "EXIT",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Copy Voice",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "sysex_bank",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank that receives the 32 voices (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "FM-1 SysEx Bank Save",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "encoder_knob4": [
   {
    "mode": "fx",
    "gesture": "turn",
    "action": "Right switches the selected effect on, left switches it off.",
    "short_label": "FX ON/OFF",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.4",
      "section": "In FX Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=4",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "effect parameters",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "On/Off toggle",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "turn",
    "action": "Release 0-100%.",
    "short_label": "RELEASE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In ENV Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "turn",
    "action": "Page 1: amplitude modulation depth 0-99. Page 2: oscillator phase restarts on each note, on or off.",
    "short_label": "AMD/OSCSYNC",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In LFO Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "LFO pages",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "turn",
    "action": "Operator pages: output level / rate 4 / level 4. PIT: rate 4 / level 4. GLO-key page 1: transpose; page 2: in copy, picks the source voice.",
    "short_label": "OP PARAM 4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In Edit Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "PIT / GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "GLO key",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo",
    "gesture": "turn",
    "action": "Page 1: pitch bend down 1-24 semitones. Page 2: glide time 0-100 (up to 1 s).",
    "short_label": "BEND-/GLIDE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In Globe Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo_reset",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank to reset (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "Reset Patches",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "turn",
    "action": "Page 1: tempo 30-300 BPM. Page 2: follow external MIDI clock on/off.",
    "short_label": "TEMPO/SYNC",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In ARP Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "Arpeggiator Modes",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "turn",
    "action": "Page 1: steps 1-16 (loop length). Page 2: gate 20-100%. Page 3: nothing.",
    "short_label": "STEPS/GATE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In SEQ Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Chain / Step / Gate / Swing",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Transpose",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "turn",
    "action": "Nothing.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_copy",
    "gesture": "turn",
    "action": "Picks the voice to copy from.",
    "short_label": "SOURCE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Copy Voice",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "sysex_bank",
    "gesture": "turn",
    "action": "KNOB 1-4 pick the bank that receives the 32 voices (A, B, C or D). The manual doesn't say which knob gives which bank.",
    "short_label": "PICK BANK",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "FM-1 SysEx Bank Save",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_f3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "F3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_fs3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "F#3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens operator 1's pages (it remembers the last page you used).",
    "short_label": "OP1",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "long_press",
    "action": "Mutes operator 1 until you change voice.",
    "short_label": "MUTE OP1",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "press",
    "action": "While renaming, OP1-OP4 choose the characters (the release notes list capitals, small letters, symbols, numbers, but the line is garbled, so which key gives which set is our reading).",
    "short_label": "CHARACTERS",
    "evidence": "inferred",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1.txt (firmware release notes)",
      "lines": "V15 EN, Edit item 2",
      "section": "V15 EN, Edit item 2",
      "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_g3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "G3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_gs3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "G#3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens operator 2's pages (it remembers the last page you used).",
    "short_label": "OP2",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "long_press",
    "action": "Mutes operator 2 until you change voice.",
    "short_label": "MUTE OP2",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "press",
    "action": "While renaming, OP1-OP4 choose the characters (the release notes list capitals, small letters, symbols, numbers, but the line is garbled, so which key gives which set is our reading).",
    "short_label": "CHARACTERS",
    "evidence": "inferred",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1.txt (firmware release notes)",
      "lines": "V15 EN, Edit item 2",
      "section": "V15 EN, Edit item 2",
      "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_a3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "A3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_as3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "A#3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens operator 3's pages (it remembers the last page you used).",
    "short_label": "OP3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "long_press",
    "action": "Mutes operator 3 until you change voice.",
    "short_label": "MUTE OP3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "press",
    "action": "While renaming, OP1-OP4 choose the characters (the release notes list capitals, small letters, symbols, numbers, but the line is garbled, so which key gives which set is our reading).",
    "short_label": "CHARACTERS",
    "evidence": "inferred",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1.txt (firmware release notes)",
      "lines": "V15 EN, Edit item 2",
      "section": "V15 EN, Edit item 2",
      "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_b3": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "B3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_c4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "C4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_cs4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "C#4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens operator 4's pages (it remembers the last page you used).",
    "short_label": "OP4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "long_press",
    "action": "Mutes operator 4 until you change voice.",
    "short_label": "MUTE OP4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "press",
    "action": "While renaming, OP1-OP4 choose the characters (the release notes list capitals, small letters, symbols, numbers, but the line is garbled, so which key gives which set is our reading).",
    "short_label": "CHARACTERS",
    "evidence": "inferred",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1.txt (firmware release notes)",
      "lines": "V15 EN, Edit item 2",
      "section": "V15 EN, Edit item 2",
      "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_d4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "D4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_ds4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "D#4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens operator 5's pages (it remembers the last page you used).",
    "short_label": "OP5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "long_press",
    "action": "Mutes operator 5 until you change voice.",
    "short_label": "MUTE OP5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "press",
    "action": "While renaming, OP5 deletes a character.",
    "short_label": "DELETE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1.txt (firmware release notes)",
      "lines": "V15 EN, Edit item 2 ('op5: delete')",
      "section": "V15 EN, Edit item 2 ('op5: delete')",
      "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_e4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "E4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_f4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "F4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_fs4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "F#4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens operator 6's pages (it remembers the last page you used).",
    "short_label": "OP6",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "long_press",
    "action": "Mutes operator 6 until you change voice.",
    "short_label": "MUTE OP6",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_g4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "G4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_gs4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "G#4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens the pitch envelope pages.",
    "short_label": "PITCH ENV",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_a4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "A4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_as4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "A#4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Opens voice-wide settings: algorithm, feedback, osc sync, transpose; page 2 init, rename, copy. Not the same as the GLO button.",
    "short_label": "VOICE GLO",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_b4": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "B4",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_c5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "C5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_cs5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "C#5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Mono: one note at a time, last note wins.",
    "short_label": "MONO",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "MONO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_d5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "D5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_ds5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "D#5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "Poly: up to 12 notes at once.",
    "short_label": "POLY",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2 Combo Function Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "POLY",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_e5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "E5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_f5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "F5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_fs5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "F#5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "press",
    "action": "No labelled function; M-VAVE's manual gives it none.",
    "short_label": "-",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "product photo fm-1-1.webp",
      "lines": "image",
      "section": "key legends",
      "url": "https://m-vave.com/images/productInfo/fm-1-1.webp",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_g5": [
   {
    "mode": "any",
    "gesture": "press",
    "action": "Plays a note (MIDI note = key position + 53 + 12 x octave + transpose, so F3-G5 at rest).",
    "short_label": "G5",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1 Piano Keys",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "press",
    "action": "Held keys feed the arpeggiator (with Latch on they keep playing after you let go).",
    "short_label": "ARP NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "press",
    "action": "Records the note into the next step.",
    "short_label": "REC NOTE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "screen": [
   {
    "mode": "any",
    "gesture": "shows",
    "action": "Top bar: voice number and name, battery. Middle: the mode's content. Bottom bar: mode name and page (e.g. 1/2 LFO).",
    "short_label": "LAYOUT",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "2. Center",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "shows",
    "action": "Pop-ups for about a second: voice list, algorithm diagram, octave, transpose, volume, Preset Saved; LOW BATTERY stays until charged.",
    "short_label": "POP-UPS",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "popups",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.4",
      "section": "popups",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=4",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.14",
      "section": "Battery",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=14",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "home",
    "gesture": "shows",
    "action": "The output as a moving waveform; top bar shows the loaded voice.",
    "short_label": "HOME SCOPE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "HOME",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "fx",
    "gesture": "shows",
    "action": "Six effect slots in a 3x2 grid; SELECT moves between them, KNOB 1-4 edit the selected one.",
    "short_label": "FX CHAIN",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "FX",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "fx_grab",
    "gesture": "shows",
    "action": "The highlighted effect is held so SELECT can move it in the chain.",
    "short_label": "FX GRABBED",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "SEL",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "env",
    "gesture": "shows",
    "action": "Amp envelope, attack/decay/sustain/release 0-100%.",
    "short_label": "ENV",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "ENV",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "lfo",
    "gesture": "shows",
    "action": "Page 1 wave, speed, pitch depth, amp depth; page 2 delay, pitch sensitivity, LFO sync, osc sync.",
    "short_label": "LFO PAGES",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In LFO Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "LFO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "shows",
    "action": "Six pages per operator (OP1-OP6), two for the pitch envelope (PIT), two for voice-wide settings (GLO key).",
    "short_label": "EDIT FM",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.5",
      "section": "In Edit Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "PIT / GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "EDIT",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_rename",
    "gesture": "shows",
    "action": "Rename the voice.",
    "short_label": "RENAME",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Rename",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit_copy",
    "gesture": "shows",
    "action": "Copy another voice over this one.",
    "short_label": "COPY VOICE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.8",
      "section": "Copy Voice",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo",
    "gesture": "shows",
    "action": "Page 1 MIDI channel, effect channel, bend up/down; page 2 reset a bank, velocity, glide mode and time.",
    "short_label": "GLOBAL",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In Globe Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "GLO",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "glo_reset",
    "gesture": "shows",
    "action": "Pick bank A-D to restore to its imported voices; SELECT right confirms, left cancels.",
    "short_label": "BANK RESET",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "Reset Patches",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "shows",
    "action": "Page 1 mode, octave, rate, tempo; page 2 gate, swing, latch, sync.",
    "short_label": "ARP PAGES",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In ARP Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "shows",
    "action": "16-step patterns: page 1 pattern, clear, chain, steps; page 2 voice, rate, tempo, gate; page 3 swing, sync, transpose.",
    "short_label": "SEQ PAGES",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.6",
      "section": "In SEQ Mode",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "SEQ",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Activation",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq_rec",
    "gesture": "shows",
    "action": "Each note you play goes into the next step.",
    "short_label": "SEQ RECORD",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Sequence Recording",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "sysex_bank",
    "gesture": "shows",
    "action": "Pick bank A-D to store the 32 received voices.",
    "short_label": "BANK RECEIVE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "FM-1 SysEx Bank Save",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ]
 },
 "switching_note": {
  "kept_on_unit": "V15 keeps 128 voices in four banks (A-D, 32 each), 16 patterns with their voices, and global settings in flash; holding SAVE writes pending changes. From the flash atlas (generated): update mode under stock (installing anything from stock): Reported in Felucca's source comments: stock's own updater stages into the margin above 0xE4FFF (where the Felucca family keeps its autosave and voice bank), keeps a VM backup in the 0xE8000 sector and its update record at 0xE8F00. Exact staging range not documented (only while stock runs an update) [reported]. install (M-VAVE's V15 package): The pinned V15 package contains a program image ending at 0x92FFF, covering Open’s USER projects, preferences, staging and sample header. This program extent is read from its flash.bin directory entry. Whether the closed native loader also formats or rewrites other data remains unknown. What Stock V15 writes over the previous firmware's data is in overwrites_previous; what the next firmware writes over Stock V15's is in when_you_leave.",
  "lost": "M-VAVE documents no way to back up edited voices or patterns: the FM-1 sends only notes over MIDI, never voice data. Melodee's author also marks going back to stock as destructive for Melodee's data. From the flash atlas (generated): Other firmwares reading Stock V15's data: Baud Girl FM-1+VA reads and uses Stock V15's stock voices (128 user patches, banks A-D). What Stock V15 reads of other firmwares' data: Stock V15 reads and uses Baud Girl FM-1+VA's Baud Girl presets (128) (her Virtual Analog and 8-Bit presets will not play on stock). Everything else of another firmware's looks empty or foreign to the reader.",
  "back_up_first": "Keep the DX7 .syx banks you loaded so you can send them again (a bank arrives over MIDI SysEx and you pick A-D). One indirect route, reported by Baud Girl's docs: installing her FM-1+VA keeps your saved stock presets and patterns, and its Device Manager can then save all 128 presets and 16 patterns as .syx files. Write down patterns you care about. To come back, you need M-VAVE's own V15 file from its download page; the installers check it byte for byte.",
  "source": [
   {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.14",
    "section": "What the FM-1 sends via MIDI",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=14",
    "read_at": "2026-10-13"
   },
   {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.10",
    "section": "FM-1 SysEx Bank Save",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
    "read_at": "2026-10-13"
   },
   {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.9",
    "section": "SAVE",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
    "read_at": "2026-10-13"
   },
   {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.12",
    "section": "Pattern Management",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
    "read_at": "2026-10-13"
   },
   {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.9",
    "section": "Reset Patches",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
    "read_at": "2026-10-13"
   },
   {
    "kind": "public_doc",
    "repo": "Baud Girl (closed source)",
    "path": "FM-1+VA manual, Version 101",
    "lines": "section 13.3.1",
    "section": "13.3.1 Coming from M-VAVE's Firmware",
    "url": "https://baudgirl.com/work/FM-1+VA/manual/101#updating-coming-from-m-vave",
    "read_at": "2026-10-13"
   },
   {
    "kind": "public_doc",
    "repo": "Baud Girl (closed source)",
    "path": "FM-1+VA manual, Version 101",
    "lines": "section 13.5",
    "section": "13.5 Saving and Installing a Backup",
    "url": "https://baudgirl.com/work/FM-1+VA/manual/101#updating-saving-and-installing-a-backup",
    "read_at": "2026-10-13"
   },
   {
    "kind": "doc",
    "repo": "keremimo/melodee (stock V15 map as Melodee's package copies it; reported)",
    "ref": "v1.3.1",
    "commit": "757b65b0037aea8c62eed7a160351d3e3678d913",
    "path": "docs/STORAGE_PLAN.md",
    "lines": "290-294",
    "url": "https://github.com/keremimo/melodee/blob/757b65b0037aea8c62eed7a160351d3e3678d913/docs/STORAGE_PLAN.md#L290-L294"
   },
   {
    "kind": "source",
    "repo": "hugelton/Felucca",
    "ref": "v1.6",
    "commit": "1727537624390cc3f9c7dff2456b43b3a8edb005",
    "path": "firmware/src/storage.c",
    "lines": "20-30",
    "url": "https://github.com/hugelton/Felucca/blob/1727537624390cc3f9c7dff2456b43b3a8edb005/firmware/src/storage.c#L20-L30"
   }
  ],
  "overwrites_previous": [
   {
    "from": "baudgirl",
    "name": "Baud Girl FM-1+VA",
    "flags": "?K",
    "weakest_grade": "inferred",
    "at_risk": [],
    "possibly_at_risk": [
     "Baud Girl patterns (16, with locks)"
    ],
    "carried_over": [
     "Baud Girl presets (128) (her Virtual Analog and 8-Bit presets will not play on stock)"
    ],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): Baud Girl patterns (16, with locks). Carried over: Baud Girl presets (128) (her Virtual Analog and 8-Bit presets will not play on stock).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "felucca",
    "name": "Felucca",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "project slot A",
     "project slot B",
     "project slot C",
     "project slot D",
     "FM6 patches of the FM6 user presets",
     "user sample slot USR1",
     "user sample slot USR2",
     "user sample slot USR3",
     "user presets 1-16",
     "user presets 17-32",
     "the autosave (the music as you left it)",
     "FM6 voice bank B1-B32"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): project slot A; project slot B; project slot C; project slot D; FM6 patches of the FM6 user presets; user sample slot USR1; user sample slot USR2; user sample slot USR3; user presets 1-16; user presets 17-32; the autosave (the music as you left it); FM6 voice bank B1-B32.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "sloop",
    "name": "SLOOP",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "song section A (a whole project)",
     "song section B (a whole project)",
     "song section C (a whole project)",
     "song section D (a whole project)",
     "the music in progress (autosave)",
     "user sample slot USR1 (header at 0xA0000)",
     "user sample slot USR2 (header at 0xB4000)",
     "user sample slot USR3 (header at 0xC8000)",
     "user sounds U01-U16",
     "user sounds U17-U32",
     "FM6 patch bank B1-B27",
     "user sample slot USR4 (header at 0xE7000)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): song section A (a whole project); song section B (a whole project); song section C (a whole project); song section D (a whole project); the music in progress (autosave); user sample slot USR1 (header at 0xA0000); user sample slot USR2 (header at 0xB4000); user sample slot USR3 (header at 0xC8000); user sounds U01-U16; user sounds U17-U32; FM6 patch bank B1-B27; user sample slot USR4 (header at 0xE7000).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "x0x",
    "name": "X0X",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "the whole X0X project (settings, sound, all 32 patterns, song, knob motion)",
     "break loops slot 1",
     "break loops slot 2",
     "break loops slot 3",
     "X0X button calibration"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): the whole X0X project (settings, sound, all 32 patterns, song, knob motion); break loops slot 1; break loops slot 2; break loops slot 3; X0X button calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "jiant",
    "name": "JIANT",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "song 1 section A (a whole project)",
     "song 1 section B (a whole project)",
     "song 1 section C (a whole project)",
     "song 1 section D (a whole project)",
     "FM6 patches of the FM6 user sounds",
     "song 2: four sections (whole projects)",
     "song 3: four sections (whole projects)",
     "song 4: four sections (whole projects)",
     "song 5: four sections (whole projects)",
     "song 6: four sections (whole projects)",
     "song 7: four sections (whole projects)",
     "song 8: four sections (whole projects)",
     "which song is current, every song's rows and scenes",
     "user sounds U01-U16",
     "user sounds U17-U32",
     "the music in progress (RESTORE LAST)",
     "FM6 voice bank B1-B32"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): song 1 section A (a whole project); song 1 section B (a whole project); song 1 section C (a whole project); song 1 section D (a whole project); FM6 patches of the FM6 user sounds; song 2: four sections (whole projects); song 3: four sections (whole projects); song 4: four sections (whole projects); song 5: four sections (whole projects); song 6: four sections (whole projects); song 7: four sections (whole projects); song 8: four sections (whole projects); which song is current, every song's rows and scenes; user sounds U01-U16; user sounds U17-U32; the music in progress (RESTORE LAST); FM6 voice bank B1-B32.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "melodee",
    "name": "Melodee",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "shared user presets U289-U378",
     "shared user presets U379-U384",
     "shared user presets U109-U126",
     "project A: patterns, song, sounds, motion, recordings",
     "project B: patterns, song, sounds, motion, recordings",
     "project C: patterns, song, sounds, motion, recordings",
     "project D: patterns, song, sounds, motion, recordings",
     "shared user presets U145-U288",
     "shared user presets U073-U090",
     "shared user presets U091-U108",
     "shared user presets U001-U018",
     "shared user presets U019-U036",
     "shared user presets U037-U054",
     "shared user presets U055-U072",
     "shared user presets U127-U144"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): shared user presets U289-U378; shared user presets U379-U384; shared user presets U109-U126; project A: patterns, song, sounds, motion, recordings; project B: patterns, song, sounds, motion, recordings; project C: patterns, song, sounds, motion, recordings; project D: patterns, song, sounds, motion, recordings; shared user presets U145-U288; shared user presets U073-U090; shared user presets U091-U108; shared user presets U001-U018; shared user presets U019-U036; shared user presets U037-U054; shared user presets U055-U072; shared user presets U127-U144.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "fomni",
    "name": "FoMni",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "FoMni button calibration"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): FoMni button calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "amb",
    "name": "AMB-1",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "AMB-1 panel calibration"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): AMB-1 panel calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "choralroot",
    "name": "ChoralRoot",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "32 imported DX7 voices",
     "CZ-1 bank A (16 tones)",
     "CZ-1 bank B (16 tones)",
     "CZ-1 bank C (16 tones)",
     "CZ-1 bank D (16 tones)",
     "CZ-1 bank E (16 tones)",
     "CZ-1 bank F (16 tones)",
     "CZ-1 bank G (16 tones)",
     "CZ-1 bank H (16 tones)",
     "last global-save session",
     "favourite marks, chord/bass type and filter",
     "128 saved sounds with their complete engine patches",
     "recorded loop 1",
     "recorded loop 2",
     "recorded loop 3",
     "recorded loop 4",
     "recorded loop 5",
     "recorded loop 6",
     "recorded loop 7",
     "recorded loop 8",
     "recorded loop 9",
     "recorded loop 10"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): 32 imported DX7 voices; CZ-1 bank A (16 tones); CZ-1 bank B (16 tones); CZ-1 bank C (16 tones); CZ-1 bank D (16 tones); CZ-1 bank E (16 tones); CZ-1 bank F (16 tones); CZ-1 bank G (16 tones); CZ-1 bank H (16 tones); last global-save session; favourite marks, chord/bass type and filter; 128 saved sounds with their complete engine patches; recorded loop 1; recorded loop 2; recorded loop 3; recorded loop 4; recorded loop 5; recorded loop 6; recorded loop 7; recorded loop 8; recorded loop 9; recorded loop 10.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "ghoulbox",
    "name": "GHOULBOX",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "project A",
     "project B",
     "project C",
     "project D",
     "FM6 patches for user sounds",
     "user sample slot USR1",
     "user sample slot USR2",
     "user sample slot USR3",
     "user sounds 1–16",
     "user sounds 17–32",
     "music in progress (RESTORE LAST)",
     "FM6 voice bank B1–B32"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): project A; project B; project C; project D; FM6 patches for user sounds; user sample slot USR1; user sample slot USR2; user sample slot USR3; user sounds 1–16; user sounds 17–32; music in progress (RESTORE LAST); FM6 voice bank B1–B32.",
    "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": "S?",
    "weakest_grade": "reported",
    "at_risk": [
     {
      "object": "Open USER project 1",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 2",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 3",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 4",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 5",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 6",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 7",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 8",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 9",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 10",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 11",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 12",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 13",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 14",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 15",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open USER project 16",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open device preferences",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     },
     {
      "object": "Open shared sample audio",
      "effect": "lost",
      "ways": [
       {
        "way": "when you install Stock V15",
        "effect": "lost"
       }
      ]
     }
    ],
    "possibly_at_risk": [],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "Installing this firmware replaces Open’s sixteen USER projects, preferences and sample header before its first start, including the first 24 KiB of sample storage. This follows Open’s source-defined USER layout and the incoming program range; export projects and device samples before leaving Open."
    ],
    "owner_text": "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; Open shared sample audio. Installing this firmware replaces Open’s sixteen USER projects, preferences and sample header before its first start, including the first 24 KiB of sample storage. This follows Open’s source-defined USER layout and the incoming program range; export projects and device samples 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": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "older stored user bank, if present (Beta4 does not store new edits)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "A valid user bank stored by an earlier FM-106 build can still be present and readable in Beta4; the bank risks listed here, if any, apply if it exists. FM-106 Beta4’s new user-sound edits are only in memory: panel save, delete and librarian bank commit do not store them, even when they report success. Read the unit into the librarian and export both user banks before switching or powering off; those exports omit sequence notes, locks and extended controls."
    ],
    "owner_text": "Possibly at risk (layout reported or inferred): older stored user bank, if present (Beta4 does not store new edits). A valid user bank stored by an earlier FM-106 build can still be present and readable in Beta4; the bank risks listed here, if any, apply if it exists. FM-106 Beta4’s new user-sound edits are only in memory: panel save, delete and librarian bank commit do not store them, even when they report success. Read the unit into the librarian and export both user banks before switching or powering off; those exports omit sequence notes, locks and extended controls.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "hortator",
    "name": "Hortator",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "project A",
     "project B",
     "project C",
     "project D",
     "user samples USR1",
     "user samples USR2",
     "user samples USR3"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): project A; project B; project C; project D; user samples USR1; user samples USR2; user samples USR3.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "obervave",
    "name": "OberVave",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "pattern 1",
     "pattern 2",
     "pattern 3",
     "pattern 4",
     "pattern 5",
     "pattern 6",
     "pattern 7",
     "pattern 8"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): pattern 1; pattern 2; pattern 3; pattern 4; pattern 5; pattern 6; pattern 7; pattern 8.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "polly",
    "name": "Polly",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "Optional QY70 style bank",
     "All four Polly songs",
     "Polly shared memory 1",
     "Polly shared memory 2",
     "Polly shared memory 3",
     "Polly shared memory 4",
     "Polly shared memory 5",
     "Polly shared memory 6",
     "Polly shared memory 7",
     "Polly shared memory 8",
     "Polly shared memory 9",
     "Polly shared memory 10",
     "Polly shared memory 11",
     "Polly shared memory 12",
     "Polly shared memory 13",
     "Polly shared memory 14",
     "Polly shared memory 15",
     "Polly shared memory 16",
     "Polly button and encoder calibration"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): Optional QY70 style bank; All four Polly songs; Polly shared memory 1; Polly shared memory 2; Polly shared memory 3; Polly shared memory 4; Polly shared memory 5; Polly shared memory 6; Polly shared memory 7; Polly shared memory 8; Polly shared memory 9; Polly shared memory 10; Polly shared memory 11; Polly shared memory 12; Polly shared memory 13; Polly shared memory 14; Polly shared memory 15; Polly shared memory 16; Polly button and encoder calibration.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "from": "skiff",
    "name": "Skiff",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "project A",
     "project B",
     "project C",
     "project D",
     "user sounds’ own FM6 patches",
     "user sample USR1",
     "user sample USR2",
     "user sample USR3",
     "user sound bank 1",
     "user sound bank 2",
     "last session",
     "shared 64-pattern pool"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): project A; project B; project C; project D; user sounds’ own FM6 patches; user sample USR1; user sample USR2; user sample USR3; user sound bank 1; user sound bank 2; last session; shared 64-pattern pool.",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   }
  ],
  "when_you_leave": [
   {
    "to": "baudgirl",
    "name": "Baud Girl FM-1+VA",
    "flags": "?K",
    "weakest_grade": "inferred",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock voices (128 user patches, banks A-D).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "felucca",
    "name": "Felucca",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "sloop",
    "name": "SLOOP",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock Bluetooth data",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock Bluetooth data; stock voices (128 user patches, banks A-D).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "x0x",
    "name": "X0X",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "jiant",
    "name": "JIANT",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "melodee",
    "name": "Melodee",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock Bluetooth data",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock Bluetooth data; stock voices (128 user patches, banks A-D).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "fomni",
    "name": "FoMni",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "amb",
    "name": "AMB-1",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "choralroot",
    "name": "ChoralRoot",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "ghoulbox",
    "name": "GHOULBOX",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "mvaveopen",
    "name": "M-VAVE FM-1 Open",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock Bluetooth data",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [
     "The factory-sample write runs by itself right after the Workbench installs Open, before any project save. The source-built V12 bank erases 0x8D000–0x9FFFF without another sample question. The shipped Workbench asset was not compared with the source."
    ],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock Bluetooth data; stock voices (128 user patches, banks A-D). The factory-sample write runs by itself right after the Workbench installs Open, before any project save. The source-built V12 bank erases 0x8D000–0x9FFFF without another sample question. The shipped Workbench asset was not compared with the source.",
    "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": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "hortator",
    "name": "Hortator",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "obervave",
    "name": "OberVave",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock voices (128 user patches, banks A-D).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "polly",
    "name": "Polly",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock Bluetooth data",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock Bluetooth data; stock voices (128 user patches, banks A-D).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   },
   {
    "to": "skiff",
    "name": "Skiff",
    "flags": "?",
    "weakest_grade": "reported",
    "at_risk": [],
    "possibly_at_risk": [
     "stock settings (and possibly patterns)",
     "stock voices (128 user patches, banks A-D)"
    ],
    "carried_over": [],
    "kept_unseen": [],
    "notes": [],
    "owner_text": "Possibly at risk (layout reported or inferred): stock settings (and possibly patterns); stock voices (128 user patches, banks A-D).",
    "source": "flash-atlas derived/matrix.json (generated by apply_to_maps.py; do not edit by hand)"
   }
  ]
 },
 "disagreements": [
  {
   "topic": "Envelope range and behaviour",
   "docs_say": "The older 109-page manual: ENV values 0-8, and pressing ENV again returns to Home.",
   "source_says": "The V15 manual: ENV values 0-100%, the envelope is off by default, and pressing ENV turns it on or off. The older manual predates V13.",
   "docs_ref": {
    "kind": "doc",
    "repo": "M-VAVE / Dan Music Partner",
    "path": "A1WOydif9HL.pdf (109 pp., created 2026-06-09)",
    "lines": "pdf p.5",
    "section": "In ENV Mode",
    "url": "https://m.media-amazon.com/images/I/A1WOydif9HL.pdf#page=5",
    "read_at": "2026-10-13"
   },
   "source_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.7",
    "section": "ENV",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
    "read_at": "2026-10-13"
   }
  },
  {
   "topic": "Arpeggiator modes",
   "docs_say": "M-VAVE's product page lists Bidirectional as one of the 7 arpeggiator modes.",
   "source_says": "Both manuals list Repeat instead (up, down, inclusive, exclusive, random, order, repeat).",
   "docs_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "product page specs",
    "lines": "Arpeggiator row",
    "url": "https://www.m-vave.com/product?id=fm-1",
    "read_at": "2026-10-13"
   },
   "source_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.10",
    "section": "Arpeggiator Modes",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
    "read_at": "2026-10-13"
   }
  },
  {
   "topic": "Filter resonance range",
   "docs_say": "The MIDI control document gives filter Q as 0-10.",
   "source_says": "The V15 manual gives Q as 0-100.",
   "docs_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1 MIDI EN.docx",
    "lines": "FX CC table",
    "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1%20MIDI%20EN.docx",
    "read_at": "2026-10-13"
   },
   "source_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.5",
    "section": "effect parameters",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=5",
    "read_at": "2026-10-13"
   }
  },
  {
   "topic": "How many pages SELECT turns",
   "docs_say": "The V15 manual's SELECT entry describes it as right to page 2, left back to page 1.",
   "source_says": "The same manual gives SEQ three pages and each operator six; SELECT turns through all of them.",
   "docs_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.2",
    "section": "SELECT",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
    "read_at": "2026-10-13"
   },
   "source_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.6",
    "section": "In SEQ Mode",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
    "read_at": "2026-10-13"
   }
  },
  {
   "topic": "Confirming a voice copy",
   "docs_say": "The V15 booklet says to press SELECT to confirm overwriting the voice.",
   "source_says": "M-VAVE's own V15 release notes say to turn SELECT, and SELECT is an encoder with no push. Les follows the release notes.",
   "docs_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
    "lines": "pdf p.8",
    "section": "Copy Voice",
    "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=8",
    "read_at": "2026-10-13"
   },
   "source_ref": {
    "kind": "doc",
    "repo": "M-VAVE",
    "path": "FM-1.txt (firmware release notes)",
    "lines": "V15 EN, Edit item 3",
    "section": "V15 EN, Edit item 3",
    "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
    "read_at": "2026-10-13"
   }
  },
  {
   "topic": "What Reset Patches wipes",
   "docs_say": "The older 109-page manual: Reset Patches restores all 128 voices to factory defaults, confirmed with KNOB 4.",
   "source_says": "The V15 booklet and V15 release notes: you reset one bank (A-D) at a time, back to the voices last imported into it, confirmed by turning SELECT right.",
   "docs_ref": {
    "kind": "doc",
    "repo": "M-VAVE / Dan Music Partner",
    "path": "A1WOydif9HL.pdf (109 pp.)",
    "lines": "pdf p.8",
    "section": "Global page 2: Reset Patches",
    "url": "https://m.media-amazon.com/images/I/A1WOydif9HL.pdf#page=8",
    "read_at": "2026-10-13"
   },
   "source_ref": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.9",
     "section": "Reset Patches",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1.txt (firmware release notes)",
     "lines": "V15 EN, Glob: 'Reset tone, reset to the last imported tone'",
     "section": "V15 EN, Glob: 'Reset tone, reset to the last imported tone'",
     "url": "https://yms-file-store.oss-cn-hongkong.aliyuncs.com/software/releaseNote/firmware/FM-1.txt",
     "read_at": "2026-10-13"
    }
   ]
  }
 ],
 "not_mapped": [
  "Which 16 keys show the sequencer steps (the manual says 16 step indicators without naming the keys).",
  "Button LEDs for FX, LFO, EDIT and GLO (the manual doesn't describe them).",
  "The MIDI CC map (in M-VAVE's separate MIDI document, not a panel control)."
 ],
 "lights": {
  "button_oct_down": [
   {
    "mode": "any",
    "gesture": "blinking",
    "action": "Octave shifted down: slow blink -1, fast blink -2.",
    "short_label": "OCT -1/-2",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Octave LED",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Octave -3.",
    "short_label": "OCT -3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Octave LED",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_oct_up": [
   {
    "mode": "any",
    "gesture": "blinking",
    "action": "Octave shifted up: slow blink +1, fast blink +2.",
    "short_label": "OCT +1/+2",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Octave LED",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Octave +3.",
    "short_label": "OCT +3",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.3",
      "section": "Octave LED",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=3",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_sel": [
   {
    "mode": "fx_grab",
    "gesture": "lit",
    "action": "An effect is grabbed for moving.",
    "short_label": "GRABBED",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "SEL",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_env": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "The amp envelope is on.",
    "short_label": "ENV ON",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.7",
      "section": "ENV",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=7",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_home": [
   {
    "mode": "any",
    "gesture": "blinking",
    "action": "Bluetooth on, not connected.",
    "short_label": "BT WAITING",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "HOME",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Bluetooth connected.",
    "short_label": "BT LINKED",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.9",
      "section": "HOME",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=9",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_save": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "Saving to flash.",
    "short_label": "SAVING",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "SAVE",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_arp": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "The arpeggiator is on.",
    "short_label": "ARP ON",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_seq": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "The sequencer is on.",
    "short_label": "SEQ ON",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Activation Method",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_play_stop": [
   {
    "mode": "seq",
    "gesture": "lit",
    "action": "Orange: sequencer on and stopped.",
    "short_label": "STOPPED",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Activation Method",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "PLAY/STOP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "light": "green",
    "mode": "seq",
    "gesture": "lit",
    "action": "Green: the pattern is playing.",
    "short_label": "PLAYING",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Playback",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "PLAY/STOP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "button_rec": [
   {
    "mode": "seq",
    "gesture": "lit",
    "action": "Red: recording.",
    "short_label": "RECORDING",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "REC",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   }
  ],
  "key_lights": [
   {
    "mode": "any",
    "gesture": "lit",
    "action": "A key lights while pressed.",
    "short_label": "PRESSED",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.1",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "arp",
    "gesture": "lit",
    "action": "Keys light as the arpeggiator plays them.",
    "short_label": "ARP NOTES",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.10",
      "section": "ARP",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=10",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "seq",
    "gesture": "lit",
    "action": "Steps: solid = a note on this step, off = empty, flashing = the step playing. (Which 16 keys show the steps is not stated.)",
    "short_label": "STEPS",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.11",
      "section": "Activation Method",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=11",
      "read_at": "2026-10-13"
     },
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.12",
      "section": "Step LED",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "blinking",
    "action": "OP1-OP6, PIT and GLO keys blink when selectable; the inactive one of MONO/POLY blinks.",
    "short_label": "SELECTABLE",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   },
   {
    "mode": "edit",
    "gesture": "lit",
    "action": "The selected operator or function key is solid; so is the active one of MONO/POLY.",
    "short_label": "SELECTED",
    "evidence": "vendor-doc",
    "source": [
     {
      "kind": "doc",
      "repo": "M-VAVE",
      "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
      "lines": "pdf p.13",
      "section": "4.2",
      "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=13",
      "read_at": "2026-10-13"
     }
    ]
   }
  ]
 },
 "groups": {
  "key_lights": [
   "led_a3",
   "led_a4",
   "led_as3",
   "led_as4",
   "led_b3",
   "led_b4",
   "led_c4",
   "led_c5",
   "led_cs4",
   "led_cs5",
   "led_d4",
   "led_d5",
   "led_ds4",
   "led_ds5",
   "led_e4",
   "led_e5",
   "led_f3",
   "led_f4",
   "led_f5",
   "led_fs3",
   "led_fs4",
   "led_fs5",
   "led_g3",
   "led_g4",
   "led_g5",
   "led_gs3",
   "led_gs4"
  ]
 },
 "notes": [
  {
   "topic": "Three transposes",
   "note": "Three separate transposes: OCT-/OCT+ held with ALGORITHM (-12 to +12, global), the GLO key's voice transpose (0-48, in EDIT), and SEQ page 3 (-24 to +24, the pattern).",
   "source": [
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.2",
     "section": "ALGORITHM",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=2",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.6",
     "section": "GLO (Global Synthesis Parameters)",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=6",
     "read_at": "2026-10-13"
    },
    {
     "kind": "doc",
     "repo": "M-VAVE",
     "path": "FM-1-manual.pdf (V15 booklet, 31 pp.)",
     "lines": "pdf p.12",
     "section": "Transpose",
     "url": "https://manualf.oss-cn-hongkong.aliyuncs.com/manual/MIDI-KEYBOARD/FM-1-manual.pdf#page=12",
     "read_at": "2026-10-13"
    }
   ]
  }
 ],
 "fixed_after_check": "2026-10-13",
 "check_fixes": [
  {
   "error": "1 MINOR (labels)",
   "fixed": "13 cut-off screen labels renamed (HOME SCOPE, FX CHAIN, FX GRABBED, LFO PAGES, EDIT FM, RENAME, COPY VOICE, GLOBAL, BANK RESET, ARP PAGES, SEQ PAGES, SEQ RECORD, BANK RECEIVE)"
  },
  {
   "error": "2 MINOR (knob-to-bank)",
   "fixed": "the 8 bank entries no longer assign one bank per knob; they say KNOB 1-4 pick A-D, mapping not documented"
  },
  {
   "error": "3 MINOR (copy confirm)",
   "fixed": "encoder_select[6] now cites the V15 release notes; booklet's 'press SELECT' added as a disagreement"
  },
  {
   "error": "4 MINOR (missing disagreement)",
   "fixed": "added the old manual's Reset Patches disagreement"
  },
  {
   "error": "6 MINOR (not a disagreement)",
   "fixed": "'Two transposes' moved from disagreements to notes as 'Three transposes'"
  },
  {
   "error": "note (OP5 deletes)",
   "fixed": "rename keys: OP5 = delete from the release notes; OP1-OP4 graded inferred"
  },
  {
   "error": "5 MINOR (round trip)",
   "fixed": "switching_note.lost now cites the reported stock layout and the family firmwares' storage maps"
  },
  {
   "error": "cross-map (previous firmware's data)",
   "fixed": "switching_note.overwrites_previous added (reported layout, graded reported)"
  },
  {
   "error": "R2 error 1 (stock flash claim)",
   "fixed": "marked under review in review_note; the claim itself is left to the flash atlas"
  }
 ],
 "review_note": "UNDER REVIEW: where stock V15 keeps voices, patterns and settings in flash rests on FM-1-RE's analysis of a V13 image and on region names in Melodee's package notes, not on V15 itself. The flash atlas (output/fm1/flash-atlas/) grades it reported, so switching_note.overwrites_previous and when_you_leave show stock's data as possibly at risk. Until then, assume a trip through another firmware can cost your stock voices too."
}