{
  "format": "forge.graph/0",
  "name": "Concert Hall",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "A big, dark hall: the first reflections off the walls arrive after the pre-delay, then a long, slowly moving tail builds behind them. Size stretches the room; Low cut keeps the tail from muddying the bass.",
  "tags": ["reverb", "hall", "ambient", "stereo"],
  "face": {
    "knobs": [
      { "id": "decay", "label": "Decay", "default": 0.6,
        "controls": [ { "target": "t1_fb.amount", "from": 0.5, "to": 0.93 }, { "target": "t2_fb.amount", "from": 0.5, "to": 0.93 } ] },
      { "id": "size", "label": "Size", "default": 0.6,
        "controls": [ { "target": "t1.time", "from": 0.12, "to": 0.25 }, { "target": "t2.time", "from": 0.1, "to": 0.21 } ] },
      { "id": "predelay", "label": "Pre-dly", "default": 0.3,
        "controls": [ { "target": "pre.time", "from": 0.005, "to": 0.12 } ] },
      { "id": "tone", "label": "Tone", "default": 0.4,
        "controls": [ { "target": "t1_damp.cutoff", "from": 1200, "to": 8000, "curve": "exp" },
                      { "target": "t2_damp.cutoff", "from": 1200, "to": 8000, "curve": "exp" } ] },
      { "id": "lowcut", "label": "Low cut", "default": 0.3,
        "controls": [ { "target": "lowcut.freq", "from": 40, "to": 500, "curve": "exp" } ] },
      { "id": "mix", "label": "Mix", "default": 0.35,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] }
    ]
  },
  "nodes": {
    "pre": { "block": "delay", "set": { "max": 0.2, "glide": 200 }, "in": { "x": "in" } },
    "er1": { "block": "tap", "set": { "time": 0.019 }, "in": { "of": "pre" } },
    "er2": { "block": "tap", "set": { "time": 0.033 }, "in": { "of": "pre" } },
    "er3": { "block": "tap", "set": { "time": 0.047 }, "in": { "of": "pre" } },
    "early": { "block": "sides", "set": { "left": 0.5, "right": 0.35 }, "in": { "x": ["er1", "er2", "er3"] } },
    "band": { "block": "onepole", "set": { "cutoff": 6000 }, "in": { "x": "pre" } },
    "d1": { "block": "allpass", "set": { "time": 0.0061, "g": 0.75 }, "in": { "x": "band" } },
    "d2": { "block": "allpass", "set": { "time": 0.0047, "g": 0.75 }, "in": { "x": "d1" } },
    "d3": { "block": "allpass", "set": { "time": 0.0163, "g": 0.65 }, "in": { "x": "d2" } },
    "d4": { "block": "allpass", "set": { "time": 0.0121, "g": 0.65 }, "in": { "x": "d3" } },
    "drift": { "block": "lfo", "set": { "rate": 0.4, "stereo_phase": 0.5 } },
    "t1_ap": { "block": "allpass", "set": { "time": 0.067, "g": -0.65 }, "in": { "x": ["d4", "t2_fb"] } },
    "t1": { "block": "delay", "set": { "max": 0.26, "glide": 400 }, "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.089, "g": -0.65 }, "in": { "x": "t1_fb" } },
    "t2": { "block": "delay", "set": { "max": 0.22, "glide": 400 }, "in": { "x": "t2_ap" } },
    "t2_damp": { "block": "onepole", "in": { "x": "t2" } },
    "t2_fb": { "block": "gain", "in": { "x": "t2_damp" } },
    "tail": { "block": "gain", "set": { "amount": 0.6 }, "in": { "x": ["t1_damp", "t2_damp", "early"] } },
    "lowcut": { "block": "biquad", "set": { "type": 1, "q": 0.7 }, "in": { "x": "tail" } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "lowcut" } }
  },
  "mods": {
    "drift1": { "from": "drift:sine", "target": "t1_ap.time", "amount": 0.0008 },
    "drift2": { "from": "drift:tri", "target": "t2_ap.time", "amount": 0.0008 }
  },
  "out": "mixer"
}
