{
  "format": "forge.graph/0",
  "name": "Touch Tremolo",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": { "id": "5b4ca3f087a7cff2", "name": "Classic Tremolo", "author": "Chirp",
                    "note": "The tremolo listens to your picking: dig in and it speeds up, let a chord ring and it slows to a lazy pulse. An envelope follower now modulates the LFO rate, on a new Touch knob." },
  "description": "A tremolo whose speed follows your playing dynamics. Hard picking pushes it into a fast flutter; as the note decays it settles back to the Rate setting.",
  "tags": ["tremolo", "modulation", "dynamic", "experimental"],
  "face": {
    "display": { "kind": "trace", "label": "Wave", "source": "shape", "range": [-1, 1] },
    "knobs": [
      { "id": "rate", "label": "Rate", "default": 0.3,
        "controls": [ { "target": "lfo.rate", "from": 1, "to": 12, "curve": "exp" } ] },
      { "id": "depth", "label": "Depth", "default": 0.7,
        "controls": [ { "target": "amp.amount", "from": 1, "to": 0.5 },
                      { "target": "mods.trem", "from": 0, "to": 0.5 } ] },
      { "id": "level", "label": "Level", "default": 0.55,
        "controls": [ { "target": "level.amount", "from": 0.5, "to": 1.5 } ] },
      { "id": "touch", "label": "Touch", "default": 0.6,
        "controls": [ { "target": "mods.touch", "from": 0, "to": 60, "curve": "square" } ] }
    ],
    "menus": [
      { "id": "shape", "label": "Shape", "options": ["Smooth", "Triangle", "Square"], "default": 0,
        "controls": [ { "target": "shape.choice" } ] }
    ]
  },
  "nodes": {
    "env": { "block": "envelope", "mono": true, "set": { "attack_ms": 10, "release_ms": 400 }, "in": { "x": "in" } },
    "lfo": { "block": "lfo", "mono": true },
    "square": { "block": "formula", "mono": true, "set": { "expr": "clamp(a * 4, -1, 1)" }, "in": { "a": "lfo:sine" } },
    "shape": { "block": "select", "mono": true, "in": { "a": "lfo:sine", "b": "lfo:tri", "c": "square" } },
    "amp": { "block": "gain", "in": { "x": "in" } },
    "level": { "block": "gain", "in": { "x": "amp" } }
  },
  "mods": {
    "touch": { "from": "env", "target": "lfo.rate", "amount": 0 },
    "trem": { "from": "shape", "target": "amp.amount", "amount": 0 }
  },
  "out": "level"
}
