{
  "format": "forge.graph/0",
  "name": "Warped Tape",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "A cassette left on the dashboard all summer: the pitch drifts and sags at random (wow), shivers quickly (flutter), and the top end has worn away. From a subtle haze to a seasick lo-fi warble.",
  "tags": ["lofi", "tape", "modulation", "vibrato"],
  "face": {
    "display": { "kind": "trace", "label": "Wow", "source": "drift", "range": [-1, 1] },
    "knobs": [
      { "id": "wow", "label": "Wow", "default": 0.45,
        "controls": [ { "target": "mods.wow", "from": 0, "to": 0.004 } ] },
      { "id": "flutter", "label": "Flutter", "default": 0.3,
        "controls": [ { "target": "mods.flutter", "from": 0, "to": 0.0005 } ] },
      { "id": "age", "label": "Age", "default": 0.4,
        "controls": [ { "target": "worn.freq", "from": 12000, "to": 2200, "curve": "exp" } ] },
      { "id": "saturation", "label": "Drive", "default": 0.35,
        "controls": [ { "target": "tape.drive", "from": 1, "to": 6, "curve": "exp" } ] },
      { "id": "mix", "label": "Mix", "default": 1,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] },
      { "id": "level", "label": "Level", "default": 0.5,
        "controls": [ { "target": "level.amount", "from": 0.6, "to": 1.6 } ] }
    ]
  },
  "nodes": {
    "drift": { "block": "random", "mono": true, "set": { "rate": 0.7, "seed": 7 } },
    "shiver": { "block": "lfo", "mono": true, "set": { "rate": 6.5 } },
    "reel": { "block": "delay", "set": { "time": 0.012, "max": 0.03, "glide": 1 }, "in": { "x": "in" } },
    "tape": { "block": "saturate", "in": { "x": "reel" } },
    "worn": { "block": "biquad", "set": { "type": 0, "q": 0.6 }, "in": { "x": "tape" } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "worn" } },
    "level": { "block": "gain", "in": { "x": "mixer" } }
  },
  "mods": {
    "wow": { "from": "drift", "target": "reel.time", "amount": 0 },
    "flutter": { "from": "shiver:sine", "target": "reel.time", "amount": 0 }
  },
  "out": "level"
}
