{
  "format": "forge.graph/0",
  "name": "Tempo Echo",
  "author": "Chirp",
  "license": "CC-BY-4.0",
  "remixed_from": null,
  "description": "An echo that locks to the tempo: pick the note value (a quarter, a dotted eighth, an eighth or an eighth-note triplet) instead of milliseconds, and the repeats land in time whatever the song's speed. Style chooses crisp digital repeats, dark analog ones, or repeats that bounce between the sides.",
  "tags": ["delay", "tempo", "rhythm"],
  "face": {
    "display": { "kind": "lamp", "label": "Time", "source": "beat:gate", "range": [0, 1] },
    "knobs": [
      { "id": "feedback", "label": "Repeats", "default": 0.4,
        "controls": [ { "target": "fb.amount", "from": 0, "to": 0.95 } ] },
      { "id": "mix", "label": "Mix", "default": 0.35,
        "controls": [ { "target": "mixer.mix", "from": 0, "to": 1 } ] },
      { "id": "tone", "label": "Tone", "default": 0.65,
        "controls": [ { "target": "tone.cutoff", "from": 900, "to": 16000, "curve": "exp" } ] },
      { "id": "mod", "label": "Mod", "default": 0.15,
        "controls": [ { "target": "mods.wobble", "from": 0, "to": 0.003, "curve": "square" } ] }
    ],
    "menus": [
      { "id": "division", "label": "Division", "options": ["1/4", "1/8 dot", "1/8", "1/8T"], "default": 1,
        "controls": [ { "target": "line.time", "unit": "beats", "values": [1, 0.75, 0.5, 0.3333] },
                      { "target": "beat.rate", "unit": "per_beat", "values": [2, 2.6667, 4, 6] } ] },
      { "id": "style", "label": "Style", "options": ["Digital", "Analog", "PingPong"], "default": 0,
        "controls": [ { "target": "color.cutoff", "values": [18000, 2800, 9000] },
                      { "target": "bounce.amount", "values": [0, 0, 1] },
                      { "target": "feed.pos", "values": [0, 0, -1] } ] }
    ]
  },
  "nodes": {
    "beat": { "block": "rhythm", "mono": true, "set": { "steps": 2, "pattern": 1, "smooth": 0 } },
    "feed": { "block": "balance", "in": { "x": "in" } },
    "line": { "block": "delay", "set": { "glide": 120 }, "in": { "x": ["feed", "bounce"] } },
    "color": { "block": "onepole", "in": { "x": "line" } },
    "tone": { "block": "onepole", "in": { "x": "color" } },
    "fb": { "block": "gain", "in": { "x": "tone" } },
    "bounce": { "block": "cross", "in": { "x": "fb" } },
    "wobble_lfo": { "block": "lfo", "mono": true, "set": { "rate": 0.7 } },
    "mixer": { "block": "blend", "in": { "dry": "in", "wet": "tone" } }
  },
  "mods": {
    "wobble": { "from": "wobble_lfo:sine", "target": "line.time", "amount": 0 }
  },
  "out": "mixer"
}
