{
  "sfx": {
    "pickup": "sfx-pickup.ogg",
    "place": "sfx-place.ogg",
    "clear1": "sfx-clear1.ogg",
    "clearBass": "sfx-clear-bass.ogg",
    "clearShock": "sfx-clear-shock.ogg",
    "praise1": "sfx-praise1.ogg",
    "praise2": "sfx-praise2.ogg",
    "praise3": "sfx-praise3.ogg",
    "combo": "sfx-combo.ogg",
    "tick": "sfx-tick.ogg",
    "ding": "sfx-ding.ogg",
    "gem": "sfx-gem.ogg",
    "gameover": "sfx-gameover.ogg",
    "wipe": "sfx-wipe.ogg",
    "newbest": "sfx-newbest.ogg",
    "win": "sfx-win.ogg"
  },
  "music": {
    "menu": { "file": "music-menu.ogg" },
    "play": { "file": "music-loop.ogg", "loopStart": 1.98, "loopEnd": 17.1936 }
  },
  "_events_doc": "17 rows of spec §7.2, in table order. key = Audio method the scenes call; sfx = sound names (→ sfx map above) the composite plays; specMs = spec duration magnitude of the primary sound; vibrate = §7.1 mode (VIB_BIND kind in parentheses) or null. All sounds are PACK files (assets/MANIFEST.md).",
  "events": {
    "button":        { "spec": "菜单按钮抬起",        "sfx": ["ding", "tick", "tick"],                  "primary": "ding",     "specMs": 200, "vibrate": "V1",      "vibKind": "button" },
    "pickup":        { "spec": "拾起托盘块",          "sfx": ["pickup"],                                "primary": "pickup",   "specMs": 50,  "vibrate": null },
    "place":         { "spec": "落定（合法）",         "sfx": ["place"],                                 "primary": "place",    "specMs": 75,  "vibrate": null },
    "reject":        { "spec": "落点非法回弹",        "sfx": [],                                        "primary": null,       "specMs": null, "vibrate": null },
    "clear":         { "spec": "消行（任意线数）",     "sfx": ["clear1", "clearBass", "clearShock"],     "primary": "clear1",   "specMs": 90,  "vibrate": "V2",      "vibKind": "clear" },
    "praise":        { "spec": "赞词大字",            "sfx": ["praise1", "praise2", "praise3"],         "primary": "praise1",  "specMs": 90,  "vibrate": null },
    "combo":         { "spec": "「Combo」/「Combo N」", "sfx": ["combo"],                                "primary": "combo",    "specMs": 80,  "vibrate": null },
    "scoreTicks":    { "spec": "分数滚动",            "sfx": ["tick"],                                  "primary": "tick",     "specMs": 60,  "vibrate": null },
    "gem":           { "spec": "宝石收集",            "sfx": ["gem", "tick"],                           "primary": "gem",      "specMs": 120, "vibrate": null },
    "sweep":         { "spec": "新局扫场",            "sfx": ["wipe"],                                  "primary": "wipe",     "specMs": 40,  "vibrate": "V3",      "vibKind": "sweep" },
    "gameover":      { "spec": "无路可走",            "sfx": ["gameover"],                              "primary": "gameover", "specMs": 600, "vibrate": "V4",      "vibKind": "gameover" },
    "countdownTick": { "spec": "复活倒计时",          "sfx": ["tick"],                                  "primary": "tick",     "specMs": 40,  "vibrate": null },
    "wipe":          { "spec": "复活清盘",            "sfx": ["wipe"],                                  "primary": "wipe",     "specMs": 60,  "vibrate": null },
    "resultRoll":    { "spec": "结算屏分数滚动",       "sfx": ["tick", "ding"],                          "primary": "ding",     "specMs": 200, "vibrate": null },
    "newbest":       { "spec": "新纪录",              "sfx": ["newbest"],                               "primary": "newbest",  "specMs": 700, "vibrate": "V4_BEST", "vibKind": "newbest" },
    "win":           { "spec": "过关填满 + 通关（冒险）", "sfx": ["win"],                                "primary": "win",      "specMs": 900, "vibrate": "V4",      "vibKind": "win" },
    "music":         { "spec": "背景音乐",            "sfx": [],                                        "primary": "__music",  "specMs": 60000, "vibrate": null }
  }
}
