{
  "format": "forge.graph/0",
  "name": "Uni-Vibe",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "The late-60s throb: four phase stages tuned far apart, swept by a lamp that brightens quickly and fades slowly, so the sweep lurches instead of gliding. Chorus mixes it with the dry sound for the famous watery pulse; Vibrato plays only the shifted sound, so the pitch wavers.",
  "tags": ["vibe", "phaser", "modulation", "vintage"],
  "face": {
    "display": { "kind": "lamp", "label": "Lamp", "source": "glow", "range": [-1, 1] },
    "knobs": [
      { "id": "speed", "label": "Speed", "default": 0.35,
        "controls": [ { "target": "lamp.rate", "from": 0.5, "to": 10, "curve": "exp" } ] },
      { "id": "intensity", "label": "Depth", "default": 0.75,
        "controls": [ { "target": "mods.s1", "from": 0, "to": 150 }, { "target": "mods.s2", "from": 0, "to": 380 },
                      { "target": "mods.s3", "from": 0, "to": 900 }, { "target": "mods.s4", "from": 0, "to": 2100 } ] },
      { "id": "volume", "label": "Volume", "default": 0.5,
        "controls": [ { "target": "level.amount", "from": 0.5, "to": 1.5 } ] }
    ],
    "menus": [
      { "id": "mode", "label": "Mode", "options": ["Chorus", "Vibrato"], "default": 0,
        "controls": [ { "target": "mixer.mix", "values": [0.5, 1] } ] }
    ]
  },
  "nodes": {
    "lamp": { "block": "lfo", "mono": true },
    "glow": { "block": "formula", "mono": true, "set": { "expr": "(a + 1) * (a + 1) * 0.5 - 1" }, "in": { "a": "lamp:sine" } },
    "pre": { "block": "saturate", "set": { "drive": 1.6 }, "in": { "x": "in" } },
    "s1": { "block": "phaser_stage", "set": { "freq": 190 }, "in": { "x": "pre" } },
    "s2": { "block": "phaser_stage", "set": { "freq": 480 }, "in": { "x": "s1" } },
    "s3": { "block": "phaser_stage", "set": { "freq": 1150 }, "in": { "x": "s2" } },
    "s4": { "block": "phaser_stage", "set": { "freq": 2700 }, "in": { "x": "s3" } },
    "mixer": { "block": "blend", "in": { "dry": "pre", "wet": "s4" } },
    "level": { "block": "gain", "set": { "amount": 0.75 }, "in": { "x": "mixer" } }
  },
  "mods": {
    "s1": { "from": "glow", "target": "s1.freq", "amount": 0 },
    "s2": { "from": "glow", "target": "s2.freq", "amount": 0 },
    "s3": { "from": "glow", "target": "s3.freq", "amount": 0 },
    "s4": { "from": "glow", "target": "s4.freq", "amount": 0 }
  },
  "out": "level"
}
