{
  "format": "forge.graph/0",
  "name": "Plate Reverb",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "A studio plate: four allpasses smear the attack into a dense wash, then two delay lines pass it back and forth through damping filters, each side moving slightly differently so the tail spreads wide. Pre-delay keeps the note clear of the reverb.",
  "tags": ["reverb", "plate", "ambient", "stereo"],
  "face": {
    "knobs": [
      { "id": "decay", "label": "Decay", "default": 0.55,
        "controls": [ { "target": "t1_fb.amount", "from": 0.35, "to": 0.88 }, { "target": "t2_fb.amount", "from": 0.35, "to": 0.88 } ] },
      { "id": "predelay", "label": "Pre-dly", "default": 0.25,
        "controls": [ { "target": "pre.time", "from": 0.001, "to": 0.12 } ] },
      { "id": "tone", "label": "Tone", "default": 0.5,
        "controls": [ { "target": "t1_damp.cutoff", "from": 1500, "to": 9000, "curve": "exp" },
                      { "target": "t2_damp.cutoff", "from": 1500, "to": 9000, "curve": "exp" } ] },
      { "id": "mix", "label": "Mix", "default": 0.35,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] }
    ]
  },
  "nodes": {
    "pre": { "block": "delay", "set": { "max": 0.13, "glide": 200 }, "in": { "x": "in" } },
    "band": { "block": "onepole", "set": { "cutoff": 7000 }, "in": { "x": "pre" } },
    "d1": { "block": "allpass", "set": { "time": 0.0048, "g": 0.75 }, "in": { "x": "band" } },
    "d2": { "block": "allpass", "set": { "time": 0.0036, "g": 0.75 }, "in": { "x": "d1" } },
    "d3": { "block": "allpass", "set": { "time": 0.0127, "g": 0.625 }, "in": { "x": "d2" } },
    "d4": { "block": "allpass", "set": { "time": 0.0093, "g": 0.625 }, "in": { "x": "d3" } },
    "drift": { "block": "lfo", "set": { "rate": 0.7, "stereo_phase": 0.5 } },
    "t1_ap": { "block": "allpass", "set": { "time": 0.0227, "g": -0.7 }, "in": { "x": ["d4", "t2_fb"] } },
    "t1": { "block": "delay", "set": { "time": 0.1496, "max": 0.16, "glide": 1 }, "in": { "x": "t1_ap" } },
    "t1_damp": { "block": "onepole", "in": { "x": "t1" } },
    "t1_fb": { "block": "gain", "in": { "x": "t1_damp" } },
    "t2_ap": { "block": "allpass", "set": { "time": 0.0306, "g": -0.7 }, "in": { "x": "t1_fb" } },
    "t2": { "block": "delay", "set": { "time": 0.125, "max": 0.14, "glide": 1 }, "in": { "x": "t2_ap" } },
    "t2_damp": { "block": "onepole", "in": { "x": "t2" } },
    "t2_fb": { "block": "gain", "in": { "x": "t2_damp" } },
    "wet": { "block": "gain", "set": { "amount": 0.7 }, "in": { "x": ["t1_damp", "t2_damp", "t1_ap"] } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "wet" } }
  },
  "mods": {
    "drift1": { "from": "drift:sine", "target": "t1_ap.time", "amount": 0.0006 },
    "drift2": { "from": "drift:tri", "target": "t2_ap.time", "amount": 0.0006 }
  },
  "out": "mixer"
}
